寻找穿过物体的轨迹(在二维平面上),确定其方向(2个点)。

3
我正在寻找一种数学方法,以确定我穿过一个物体的方向。 我已经尝试了各种方法,但都没有成功。我知道这可能是一种三角学的简单应用,但无从下手。 具体情况如下: 有一个旋转的物体,我需要确定我是从它的后面还是前面进入。 在这种情况下,轨迹由鼠标位置(移动时)定义,因此我可以从上一个点和当前点绘制一条直线。 希望有人能够帮助我:)非常感谢。
2个回答

2
这可以通过使用一些向量运算来解决。首先,构造一个表示运动的向量。
movement = currentPoint - previousPoint

然后,为了确定它是否与身体的方向(由“normal”指定,即正面的法向量)对齐,只需使用点积:如果 movement dot normal > 0,则运动方向与正面的法向量相同,因此从后面撞击身体。否则,它从前面撞击身体。

请注意,我们不会对任何向量进行归一化,因为当您只想知道它是从后面还是从前面撞击对象时,这不是必要的。一个很好的奖励是,当您对movement进行归一化时(我假设normal已经被归一化),movementnormal之间的点积表示入射角:angle = arccos(movement dot normal)

编辑

这种方法处理相对运动,因此仍然需要测试与对象的相交以确定是否完全撞击它。要实现这一点,请测试线-对象相交。(取决于您的对象,因此我无法提供更多信息。)


0

我认为这个答案提供的链接会有所帮助。答案本身处理确定两个线段是否相交,而链接解释如何确定一个点在一个线段的左侧还是右侧。

除非我弄错了,第一部分会告诉你当前轨迹是否穿过了物体,第二部分会告诉你当前点是在物体“向量”的左侧还是右侧,根据你的图纸应该能告诉你撞击是从前面还是从后面发生的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接