首页 文章

找到穿过身体的轨迹方向(2个点)(2D)

提问于
浏览
3

我正在寻找数学,它给了我穿越身体的方向 . 我没有想法,我知道它必须是非常简单的三角函数应用但我尝试了各种各样的事情没有成功..不确定什么是最好的方法 .

这里的细节:

enter image description here

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

希望有人可以帮我这个:)并且非常感谢提前 .

2 回答

  • 0

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

    movement = currentPoint - previousPoint
    

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

    请注意,我们不会规范化任何向量,当您只想知道它是从后面还是从前面击中对象时,这是不需要的 . 一个很好的奖励是当你标准化 movement 时(我假设 normal 已经标准化), movementnormal 之间的点积表示入射角: angle = arccos(movement dot normal)

    编辑

    此方法处理相对移动,因此您仍需要测试与对象的交集以了解是否完全击中它 . 为此,测试线对象交叉 . (取决于你的目标所以我不能真正说明这一点 . )

  • 2

    我认为this answerthe link provided应该有所帮助 . 答案本身涉及确定2个段是否相交,并且该链接解释了如何确定点是在段的左侧还是右侧 .

    除非我弄错了,否则第一部分会告诉你当前的轨迹是否穿过身体,第二部分会告诉你当前的点是否在身体“向量”的左侧或右侧,这是因为你的绘图应该告诉你你是从前面还是在末端相撞 .

相关问题