【问题标题】:2D World Velocity to 2D Local Velocity2D 世界速度到 2D 局部速度
【发布时间】:2013-12-16 16:38:11
【问题描述】:

当给定北向和东向速度时,如何计算对象在 X、Z 坐标中的局部速度?

例如,我有一个物体向北移动 10 英里/小时,向东移动 5 英里/小时,航向为 60 度。

如何确定物体的前进速度和物体的横向漂移?

这是在一个没有矩阵和四元数库的简化系统中编写的,所以希望只使用三角函数来解决 不幸的是,自从我这样做以来已经有几年了,所以对如何实现这一点有点生疏......

【问题讨论】:

    标签: c++ math vector matrix rotation


    【解决方案1】:

    好的,如果你在 Vn 北和 Ve East 你的速度矢量是

    V = (Ve, Vn)
    

    如果你用方位角来测量你的航向,b,从北方顺时针方向是

    F = (sin(H), cos(H))
    

    由此我们也可以构造指向你右边的向量

    R = (cos(H), -sin(H))
    

    其中 H 是转换为弧度的航向

    H = b*PI/180.0
    

    那么你在你所面对的方向上的速度是speedForward = F.V(点积)即

    speedForward = sin(H)*Ve + cos(H)*Vn
    

    同样你向右漂移的速度是 R.V

    speedRight = cos(H)*Ve -sin(H)*Vn
    

    显然,前进速度是 speedForward*F 并且对于您的正确方向也是如此。

    因此,在您的示例中,V = (5, 10) 和 F = (sqrt(3)/2, 0.5)

    您的前进速度为 9.33 英里/小时,您的右手漂移速度为 -6.16 英里/小时(即您以 6.16 英里/小时的速度向左漂移)。幸运的是,在这些坐标中测量的速度与原始速度具有相同的大小,所以看起来我们没问题。从图片上看,横向漂移上的标志对我来说也很合理。

    【讨论】:

    • 现在试一试...谢谢!
    • 完美 - 正是我所需要的,这一切都说得通,感谢您清楚地分解这一点,有助于使其更加具体!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-26
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 2018-07-07
    相关资源
    最近更新 更多