Language agnostic 涉及转弯时如何进行航位推算?
“航位推算是根据先前确定的位置估计当前位置,并根据已知或估计的速度在经过的时间和航向上推进该位置的过程。”() 我目前正在实现一个简单的服务器,它使用航位推算优化,通过对客户端和服务器进行逻辑假设,将所需的更新最小化 用户控制的对象可以说是在转动,也可以说是不转动。这就提出了一个航位推算的问题(在我看来) 例如,假设您有一个由[位置、速度、转弯:左/右/否]定义的时间点。现在你需要在t时间之后的B点。不转动时,新位置很容易推断。由此产生的方向也很容易推断。但当这两个因素结合在一起时又会怎样呢?当物体在一定时间内翻转时,速度的方向将沿曲线变化 我是否应该使用另一种解决方案(比如让客户端发送每个新方向的更新,而不仅仅是告诉服务器“我现在左转”) 顺便说一句,为了简单起见,这是在二维空间中。嗯,我认为“转弯:左/右/否”不足以确定位置B-您还需要知道转弯处的圆弧。如果沿半径为1的圆形路径向左转弯,则与沿半径为10的圆形路径转弯不同,即使初始位置、速度和转弯方向都相同Language agnostic 涉及转弯时如何进行航位推算?,language-agnostic,network-programming,dead-reckoning,Language Agnostic,Network Programming,Dead Reckoning,“航位推算是根据先前确定的位置估计当前位置,并根据已知或估计的速度在经过的时间和航向上推进该位置的过程。”() 我目前正在实现一个简单的服务器,它使用航位推算优化,通过对客户端和服务器进行逻辑假设,将所需的更新最小化 用户控制的对象可以说是在转动,也可以说是不转动。这就提出了一个航位推算的问题(在我看来) 例如,假设您有一个由[位置、速度、转弯:左/右/否]定义的时间点。现在你需要在t时间之后的B点。不转动时,新位置很容易推断。由此产生的方向也很容易推断。但当这两个因素结合在一起时又会怎样呢?当
如果让客户机发送每个新方向的更新并将其视为直线段是一个选项,那么这将是一个更容易进行的计算。您可以简单地将来自客户机的每个新报告视为一个向量,并将它们相加。计算一组曲线将更加复杂。为简单起见,假设车辆的转弯半径r与速度无关。因此,要计算给定初始坐标和时间的新位置:
- 计算距离(即速度*时间)
- 计算你转弯的距离(即距离/(2*pi*r))
- 将该圆弧添加到原始位置
[ cos b , -sin b ]
[ sin(b), cos(b) ]
最后,添加初始位置,就完成了。现在,如果改变速度或转向,只需发送更新。啊,是的,我当然也知道方向改变的速度,但可以假设它是一个常数。