y'
/
/__/__/__/__/__/__/
/__/__/__/__/__/__/
/__/__/__/__/__/__/____ x'
(0,0)
x'* i + y'( i/2 + sqrt(3) * j /2) = xi + yj.
基本上,沿着“倾斜”的y轴的单位向量是i/2 + sqrt(3)/2 * j。沿着x轴的单位向量与正常的x轴相同,即i。
因此,
x' + y'/2 = x
y' * sqrt(3)/2 = y
y' = 2*y/sqrt(3)
x' = x - y/sqrt(3)
____
/\ * /
/___\/
(c,r)
现在为了找出它在哪个三角形中,您可以考虑 x' 和 y' 的小数部分。
{x} = x' - [x'] = x' - c.
{y} = y' - [y'] = y' - r.
现在,
如果{x} + {y} > 1
,那么该点位于标有 * 的三角形中。
如果{x} + {y} < 1
,则该点位于另一个三角形中。
如果{x} + {y} = 1
,则该点位于两个三角形共同的直线上。
希望这也能帮到您。
+--------+
|-_ |
| -_ |
| -_ |
| -_|
+--------+
或者反过来。此时,您只需要确定它在哪一条线的一侧,以确定它位于哪个直角三角形中,这也告诉您它位于哪个等距三角形中。
您有几种选择。
您甚至可以使用(1)生成(2)作为快速查找。
唯一需要考虑的其他事情是如果鼠标光标在边缘会发生什么?