3

我正在寻找能够给我指明穿过身体的方向的数学。我没有想法,我知道它一定是三角学的非常简单的应用,但我尝试了各种没有成功的事情。不知道什么是最好的方法。

这里有详细信息:

在此处输入图像描述

所以我有一个以给定角度旋转的身体,我需要确定我是从它的后面还是从它的前面进入身体。此用例中的轨迹由鼠标位置(移动时)定义,因此我可以从前一个点和当前点画一条线。

希望有人可以帮助我:) & 非常感谢提前。

4

2 回答 2

2

这可以使用一些向量运算来解决。首先,构造一个表示运动的向量。

movement = currentPoint - previousPoint

然后看它是否与身体的方向对齐(由'normal'指定,身体正面的法线向量),只需使用点积:如果movement dot normal > 0,运动是在正面的法线方向上,所以它从后面击中身体。否则它会从前面击中身体。

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

编辑

这种方法处理相对运动,因此您仍然需要测试与对象的交集以了解您是否完全击中它。为此,请测试线对象相交。(取决于你的对象,所以我真的不能多说。)

于 2012-05-10T11:08:30.943 回答
0

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

除非我弄错了,否则第一部分会告诉您当前的轨迹是否穿过身体,第二部分会告诉您当前点是在身体“矢量”的左侧还是右侧,鉴于您的绘图应该告诉您无论您是从前面还是从末端碰撞。

于 2012-05-10T16:14:04.227 回答