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 coordenadab
constante, por lo quey
solo dependía deb
. Cada hexágono se puede dividir en seis triángulos equiláteros con lados de longituds
; 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 de1
enb
,y
cambia3/2 * s
, dando la primera fórmula. Resolviendo parab
en términos dey
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 ejer
que es3/2 * s
desde el origen (similar a la derivación anterior dey
en términos deb
). El ejer
tiene pendiente-sqrt(3)/3
, por lo que una línea perpendicular a él tiene pendientesqrt(3)
; el punto en el ejer
y en la línea tiene coordenadas(3sqrt(3)/4 * s * r, -3/4 * s * r)
; entonces una ecuación enx
yy
para la línea que contiene los centros de los hexágonos con coordenadar
esy + 3/4 * s * r = sqrt(3) * (x - 3sqrt(3)/4 * s * r)
Sustituyendo pory
usando la primera fórmula y resolviendo porx
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 coordenadax
en términos der
yb
, la coordenadax
para esa fórmula cong
en lugar der
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 parar
og
en términos dex
yy
.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.