Esto es similar a lo que dijo Cletus, pero de una manera diferente de verlo, supongo.
Estoy asumiendo que el lado del triángulo es 1.
Suponga que tiene la red de la siguiente manera:
y'
/
/__/__/__/__/__/__/
/__/__/__/__/__/__/
/__/__/__/__/__/__/____ x'
(0,0)
Si se tiene en cuenta la red en un sistema de coordenadas en el que la X & ejes y están en un ángulo de 60 grados, un punto cuyas coordenadas en el sistema de ángulo (x 'y') corresponderá a la coordenada en el sistema ortogonal (con mismo origen una dirección general de ejes) a (x, y).
En su problema, se le da (x, y), tenemos que encontrar (x 'y') y luego averiguar el triángulo.
Si i es el vector unitario a lo largo de x y j la ortogonal a lo largo de y, entonces tenemos que
x'* i + y'( i/2 + sqrt(3) * j /2) = xi + yj.
(Básicamente el vector unitario a lo largo del eje y 'en ángulo' es i / 2 + sqrt (3) / 2 * j. El vector unitario a lo largo del eje x es el mismo que el normal de eje x, es decir, i).
Así
x' + y'/2 = x
y' * sqrt(3)/2 = y
La resolución de da:
y' = 2*y/sqrt(3)
x' = x - y/sqrt(3)
Supongamos por ahora que x 'e y' son positivos.
Ahora bien, si c = [x '], la parte entera de x'
y r = [Y '], la parte entera de y'
a continuación, en la cuadrícula (angular), el punto se encuentra en la columna de la CTH y la fila r-ésimo. (Contando la derecha y hacia arriba y empezar a contar a 0).
Así, hemos reducido su punto de un paralelogramo
____
/\ * /
/___\/
(c,r)
Ahora con el fin de averiguar qué triángulo que está en usted puede considerar las partes fraccionarias de X 'e Y'.
{x} = x' - [x'] = x' - c.
{y} = y' - [y'] = y' - r.
Ahora,
Si {x} + {y} > 1, a continuación, el punto se encuentra en el triángulo marcado con *. Si {x} + {y} < 1, a continuación, el punto se encuentra en el otro triángulo. Si {x} + {y} = 1, a continuación, el punto se encuentra en la línea común a los dos triángulos.
Esperamos que ayuda también.