tag math coordinate-systems hextiles

math - title tag html



La cuadrícula hexagonal se coordina con las coordenadas de píxel (1)

Para mayor claridad, que las coordenadas "hexagonales" sean (r,g,b) donde r , g , y b son las coordenadas roja , verde y azul , respectivamente. Las coordenadas (r,g,b) y (x,y) están relacionadas por lo siguiente:

y = 3/2 * s * b b = 2/3 * y / s x = sqrt(3) * s * ( b/2 + r) x = - sqrt(3) * s * ( b/2 + g ) r = (sqrt(3)/3 * x - y/3 ) / s g = -(sqrt(3)/3 * x + y/3 ) / s r + b + g = 0

Derivación:

  • Noté por primera vez que cualquier hilera horizontal de hexágonos (que debería tener una coordenada y constante) tenía una coordenada b constante, por lo que y solo dependía de b . Cada hexágono se puede dividir en seis triángulos equiláteros con lados de longitud s ; los centros de los hexágonos en una fila son una longitud y media de los costados por encima / debajo de los centros en la siguiente fila (o, quizás más fácil de ver, los centros en una fila son 3 lados arriba / debajo de los centros dos filas ), entonces para cada cambio de 1 en b , y cambia 3/2 * s , dando la primera fórmula. Resolviendo para b en términos de y da la segunda fórmula.

  • Los hexágonos con una coordenada r dada tienen centros en una línea perpendicular al eje r en el punto en el eje r que es 3/2 * s desde el origen (similar a la derivación anterior de y en términos de b ). El eje r tiene pendiente -sqrt(3)/3 , por lo que una línea perpendicular a él tiene pendiente sqrt(3) ; el punto en el eje r y en la línea tiene coordenadas (3sqrt(3)/4 * s * r, -3/4 * s * r) ; entonces una ecuación en x y y para la línea que contiene los centros de los hexágonos con coordenada r es y + 3/4 * s * r = sqrt(3) * (x - 3sqrt(3)/4 * s * r) Sustituyendo por y usando la primera fórmula y resolviendo por x da la segunda fórmula. (Esta no es la forma en que realmente saqué este, pero mi derivación fue gráfica con muchos intentos de prueba y error, y este método algebraico es más conciso).

  • El conjunto de hexágonos con una coordenada r dada es el reflejo horizontal del conjunto de hexágonos con esa coordenada g, así que cualquiera que sea la fórmula para la coordenada x en términos de r y b , la coordenada x para esa fórmula con g en lugar de r será todo lo contrario. Esto da la tercera fórmula.

  • Las fórmulas cuarta y quinta provienen de sustituir la segunda fórmula por b y de resolver para r o g en términos de x y y .

  • La fórmula final vino de la observación, verificada por álgebra con las fórmulas anteriores.

Estoy trabajando con una grilla hexagonal. He elegido usar este sistema de coordenadas porque es bastante elegante.

Esta pregunta se refiere a la generación de coordenadas, y es bastante útil. Mi problema ahora es convertir estas coordenadas ay desde las coordenadas de píxeles reales. Estoy buscando una forma simple de encontrar el centro de un hexágono con coordenadas x, y, z. Supongamos que (0,0) en coordenadas de píxeles está en (0,0,0) en coordenadas hexadecimales, y que cada hexágono tiene un borde de longitud s. Me parece que x, y y z deberían mover cada una de mis coordenadas una cierta distancia a lo largo de un eje, pero están interrelacionadas de una manera extraña, no puedo rodearla con la cabeza.

Puntos de bonificación si puedes ir en la otra dirección y convertir cualquier punto (x, y) en coordenadas de píxeles al hex al que pertenece el punto.