【问题标题】:Find the direction of a trajectory (2 points) crossing a body (in 2D)找到穿过身体(2D)的轨迹(2点)的方向
【发布时间】:2012-05-10 10:57:59
【问题描述】:

我正在寻找能够为我提供穿越身体方向的数学。 我没有想法,我知道这一定是三角学的非常简单的应用,但是我尝试了各种方法都没有成功。不知道什么是最好的方法。

这里有详细信息:

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

希望有人能帮我解决这个问题:) 非常感谢。

【问题讨论】:

    标签: math trigonometry


    【解决方案1】:

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

    movement = currentPoint - previousPoint
    

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

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

    编辑

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2016-11-26
        • 2021-09-14
        • 2021-09-20
        • 2018-03-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多