如何确定新的推力输入以将当前坐标移动到指定的坐标位置

时间:2015-11-16 19:51:45

标签: c# vector coordinates trigonometry coordinate-systems

所以说我在一个已知位置(X1,Y1)的X,Y空间中有一架无人机,其坐标系相对于坐标系中的原点向右45度(见下面的例子)。

Drone1

红色箭头表示无人机的正面,橙色点表示空间的位置(X1,Y1)。

知道无人机有向前和向后运动的推力输入(范围从+1(向前)到-1(向后);向左和向右运动(范围从+1(向右)到-1(向左)关于无人机前脸(见下面的例子,用紫色表示)。

Drone2

考虑到无人机的方向,我如何确定在坐标系(X2,Y2)中到达新点的推力输入。原谅我粗糙的mspaint图纸。感谢任何帮助!

Drone3

1 个答案:

答案 0 :(得分:2)

提出问题的方式,我假设你不想转动无人机。

让我们给点起一些名字:A =(X1,Y1),B =(X2,Y2)。

您想要移动的方向是D =标准化(B - A)。

无人机的前部面向U =(cos(a),sin(a)),其中a是角度。
无人机的右侧面向V =(sin(a), - cos(a))。

如果将前进/后退推进器与点(D,U)成比例,左/右推进器与点(D,V)成比例,则将按所需方向移动。 (这称为change of basis。)

您可以均匀缩放(点(D,U),点(D,V))以提高或降低速度。