我想了解更多关于获取点到二维线的距离的非常具体的方法。这是如何完成的:
// Given an arbitrary point, and a normal vector
// to a line along with a scalar offset
distance = DotProduct(normal, point) - offset
我知道这是真的,因为 Erin Catto 在他的 Box2D Lite 源代码中使用了这种方法。在这个页面上,程序员提到了这个等式:
distance = (V dot normal) - offset
这是我能为这种计算找到的唯一资源。检查与点的半空间相交的常用方法是点一个从相关平面到您的点的向量,然后通过检查符号(+ 或 -)查看它是背对还是朝向该平面的法线得到的标量。
这在实时应用中可能是不可取的,因为在平面(或在这种情况下为 2D 线)上查找一个点可能很昂贵,并且您只有这条线的法线和偏移量。
简而言之,这个“偏移量”是什么,你如何计算它?这个偏移量代表什么?根据我目前对自己研究的了解,我最好的猜测是它是二维直线一般方程中的 c 变量:
ax + by + c = 0
附加信息:Erin Catto 在几个地方计算他的偏移量(在定向边界框碰撞检测的上下文中),但我不明白这里的数学或发生了什么:
offsetScalar = Dot(BoxPositionVector, normalVector) + BoxYHalfWidthScalar;