Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Language agnostic 涉及转弯时如何进行航位推算?_Language Agnostic_Network Programming_Dead Reckoning - Fatal编程技术网

Language agnostic 涉及转弯时如何进行航位推算?

Language agnostic 涉及转弯时如何进行航位推算?,language-agnostic,network-programming,dead-reckoning,Language Agnostic,Network Programming,Dead Reckoning,“航位推算是根据先前确定的位置估计当前位置,并根据已知或估计的速度在经过的时间和航向上推进该位置的过程。”() 我目前正在实现一个简单的服务器,它使用航位推算优化,通过对客户端和服务器进行逻辑假设,将所需的更新最小化 用户控制的对象可以说是在转动,也可以说是不转动。这就提出了一个航位推算的问题(在我看来) 例如,假设您有一个由[位置、速度、转弯:左/右/否]定义的时间点。现在你需要在t时间之后的B点。不转动时,新位置很容易推断。由此产生的方向也很容易推断。但当这两个因素结合在一起时又会怎样呢?当

“航位推算是根据先前确定的位置估计当前位置,并根据已知或估计的速度在经过的时间和航向上推进该位置的过程。”()

我目前正在实现一个简单的服务器,它使用航位推算优化,通过对客户端和服务器进行逻辑假设,将所需的更新最小化

用户控制的对象可以说是在转动,也可以说是不转动。这就提出了一个航位推算的问题(在我看来)

例如,假设您有一个由[位置、速度、转弯:左/右/否]定义的时间点。现在你需要在t时间之后的B点。不转动时,新位置很容易推断。由此产生的方向也很容易推断。但当这两个因素结合在一起时又会怎样呢?当物体在一定时间内翻转时,速度的方向将沿曲线变化

我是否应该使用另一种解决方案(比如让客户端发送每个新方向的更新,而不仅仅是告诉服务器“我现在左转”)

顺便说一句,为了简单起见,这是在二维空间中。

嗯,我认为“转弯:左/右/否”不足以确定位置B-您还需要知道转弯处的圆弧。如果沿半径为1的圆形路径向左转弯,则与沿半径为10的圆形路径转弯不同,即使初始位置、速度和转弯方向都相同


如果让客户机发送每个新方向的更新并将其视为直线段是一个选项,那么这将是一个更容易进行的计算。您可以简单地将来自客户机的每个新报告视为一个向量,并将它们相加。计算一组曲线将更加复杂。

为简单起见,假设车辆的转弯半径r与速度无关。因此,要计算给定初始坐标和时间的新位置:

  • 计算距离(即速度*时间)
  • 计算你转弯的距离(即距离/(2*pi*r))
  • 将该圆弧添加到原始位置
最后的步骤需要详细说明

给定步骤2中计算的角度a,如果您以正北航向(即pi/2弧度)从(0,0)开始并向左转弯,则您的新位置为:(rcos(a)-1,rsin(a))

如果您的原始标题不同,请说它是“b”,然后简单地相应地旋转新位置,即乘以此旋转矩阵:

 [ cos b , -sin b ]
 [ sin(b), cos(b) ]

最后,添加初始位置,就完成了。现在,如果改变速度或转向,只需发送更新。

啊,是的,我当然也知道方向改变的速度,但可以假设它是一个常数。