我想知道更多关于在2D中获取点到线的距离的非常具体的方法。下面是它是如何做:半对点测试
// Given an arbitrary point, and a normal vector
// to a line along with a scalar offset
distance = DotProduct(normal, point) - offset
我知道这是因为艾琳卡托使用他的Box2D的精简版源代码,这种方法是正确的。在this page程序员提到的公式:
distance = (V dot normal) - offset
这是唯一的资源我可以找到这样的运算。 通常的用一个点来检查半空间交点的方法是从所讨论的平面中点出一个矢量到你的点,然后通过检查符号来查看它是否背离或朝向该平面的法线方向(+或 - )得到的标量。
在实时应用中,在平面上找到一个点(在这种情况下是2D线)可能很昂贵,并且您只有该线的法线以及偏移量,这可能是不理想的。
所以简而言之,这个“偏移”是什么,以及如何计算它?这个偏移量代表什么?从我目前知道我自己的研究我最好的猜测是,它是从线的2D一般方程的变量c:
ax + by + c = 0
附加信息: 艾琳卡托被计算了偏移这样少数地方(在方向包围盒碰撞检测的情况下),但我不明白这里的数学或正在发生的事情:
offsetScalar = Dot(BoxPositionVector, normalVector) + BoxYHalfWidthScalar;
非常棒的答案,非常感谢! – RandyGaul 2013-03-14 03:17:04