Jest to podobne do tego, co powiedział cletus, ale przypuszczam, że jest inaczej.
jestem zakładając bok trójkąta 1.
Załóżmy, że masz siatkę, jak poniżej:
y'
/
/__/__/__/__/__/__/
/__/__/__/__/__/__/
/__/__/__/__/__/__/____ x'
(0,0)
Jeśli wziąć pod uwagę siatkę w układzie współrzędnych, w którym oś y x & są ustawione pod kątem 60 stopni, punkt, którego współrzędna w układzie kątowym (x ', y') będzie odpowiadała współrzędnej w układzie ortogonalnym (z tym samym początkiem, ogólny kierunek osi) do (x, y) .
W twoim problemie, dostaniesz (x, y), musimy znaleźć (x ', y'), a następnie wykombinować trójkąt.
Jeżeli i jest wektor jednostkowy wzdłuż osi x i j prostopadły wzdłuż osi Y, to mamy że
x'* i + y'(i/2 + sqrt(3) * j /2) = xi + yj.
(zasadzie wektor jednostkowy wzdłuż 'kątowy' wzdłuż osi y i/2 + sqrt (3)/2 * j. Wektor jednostkowy wzdłuż osi x jest taki sam, jak normalna oś x, tj. I).
Zatem
x' + y'/2 = x
y' * sqrt(3)/2 = y
Rozwiązywanie otrzymujemy:
y' = 2*y/sqrt(3)
x' = x - y/sqrt(3)
Załóżmy teraz, że x 'i y' są dodatnie.
Teraz, gdy C = [X '], część całkowita x'
i R = [y '], część całkowitej z y'
następnie w (kąt) sieci elektrycznej, punkt leży w kolumnie cth i wierszu rth. (Licząc w prawo i w górę i zacznij liczyć na 0).
Zatem mamy zawężony punkt do równoległoboku
____
/\ */
/___\/
(c,r)
Teraz, aby dowiedzieć się, który jest w trójkąt można rozważyć części ułamkowe x „i y”.
{x} = x' - [x'] = x' - c.
{y} = y' - [y'] = y' - r.
Teraz
jeśli {x} + {y} > 1
, to punkt leży w trójkącie oznaczone *. , jeśli {x} + {y} < 1
, to punkt leży w drugim trójkącie. , jeśli {x} + {y} = 1
, to punkt leży na linii wspólnej dla dwóch trójkątów.
Nadzieję, że też pomaga.
zależy od tego, że u góry musi znajdować się ułamek trójkąta, ponieważ nie będzie on wyrównany z górną częścią ekranu. Jak sobie z tym radzisz? –