我正在尝试使用本教程围绕等距瓷砖的坐标系。除了最后一个片段外,我基本上已经弄清楚了,我在下面复制它以避免不必要的点击=)
/**
* Intersect two line segments defined by A->B and C->D
*
* Returns the time of intersection along A->B
*/
public function RayIntersect(A : Vector2, B : Vector2, C : Vector2, D : Vector2) : Number
{
// turn C->D into a plane...
const n : Vector2 = D.Sub(C).m_Perp;
// ...and do the regular plane vs ray maths
const numerator : Number = C.Sub(A).Dot(n);
const denom : Number = B.Sub(A).Dot(n);
return numerator / denom;
}
我不太确定这是用什么语言编写的(Java?ActionScript?),但想法是获取屏幕坐标并将它们投影到地图空间上。下图给出了正在执行的操作的示意图:
给定一个点,我们想要找到沿轴和轴P
的交点。不幸的是,我的矩阵代数(非常)生疏,所以我在推断代码中所做的事情时遇到了麻烦。python 翻译对帮助我解决这个问题大有帮助。up
right
重要的一点:我使用 2D numpy 数组来表示我的地图,因此理想情况下应该通过 numpy 处理矩阵转换。
非常感谢您!