我正在寻找能够指导我穿越身体的方向的数学。 我没有想法,我知道它必须是非常简单的三角函数应用,但我尝试了各种各样的事情但没有成功。不确定什么是最好的方法。
详情如下:
所以我有一个以给定角度旋转的身体,我需要知道我是从它的背部还是从它的前面进入身体。 此用例中的轨迹由鼠标位置(移动时)定义,因此我可以从上一个点和当前点绘制一条线。
希望有人可以帮我这个:)&非常感谢提前。
答案 0 :(得分:2)
这可以使用一些vector operations来解决。首先,构造一个代表运动的向量。
movement = currentPoint - previousPoint
然后看看是否与身体的方向对齐(由'normal'指定,身体正面的法线向量),只需使用点积:if {{1运动是在前面的法线方向,因此它从背面击中身体。否则它会从前面撞到身体。
请注意,我们不会规范化任何向量,当您只是想知道它是从后面还是从前面击中对象时,这是不需要的。一个很好的奖励是,当你标准化movement dot normal > 0
时,(我假设movement
已经标准化),normal
和movement
之间的点积表示入射角:{{ 1}}
此方法处理相对移动,因此您仍需要测试与对象的交叉点以了解是否完全击中它。为此,测试线对象交叉。 (取决于你的目标,所以我不能真正说明这一点。)
答案 1 :(得分:0)
我认为this answer和the link provided会有所帮助。答案本身涉及确定2个段是否相交,并且该链接解释了如何确定点是在段的左侧还是右侧。
除非我弄错了,否则第一部分会告诉你当前的轨迹是否穿过身体,第二部分会告诉你当前的点是否在身体“向量”的左侧或右侧,给出了你的绘图应该告诉你,你是从前面还是末尾相撞。