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

C# 如何确定将当前坐标移动到指定坐标位置的新推力输入,c#,vector,coordinates,trigonometry,coordinate-systems,C#,Vector,Coordinates,Trigonometry,Coordinate Systems,假设我在X,Y空间的已知位置(X1,Y1)有一个无人机,其方向相对于坐标系中的原点向右45度(见下面的示例) 红色箭头表示无人机的正面,橙色点表示其在空间中的位置(X1,Y1) 知道无人机有向前和向后运动的推力输入(范围为+1(向前)到-1(向后);以及向左和向右运动(范围为+1(向右)到-1(向左)。关于无人机正面(见下面紫色显示的示例) 考虑到无人机的方位,我如何确定推力输入以到达坐标系(X2,Y2)中的一个新点。请原谅我粗糙的mspaint图纸。感谢您的帮助 从你提出问题的方式来看,我

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

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

知道无人机有向前和向后运动的推力输入(范围为+1(向前)到-1(向后);以及向左和向右运动(范围为+1(向右)到-1(向左)。关于无人机正面(见下面紫色显示的示例)

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


从你提出问题的方式来看,我想你不想改变现状

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

要移动的方向是D=规格化(B-A)

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

如果按点(D,U)的比例打开前/后推力器,按点(D,V)的比例打开左/右推力器,则将朝所需方向移动。(这称为a。)


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

我希望将来更改无人机的方向。这种方法是否适用于不考虑旋转角度(0-360)和点可能所在的位置?@SamW是的,无论位置和旋转,它都有效。通过“D=标准化(B-A)”进行澄清你的意思是:normalize((X1-X2),(Y1-Y2))?@SamW No.B-A=(X2-X1,Y2-Y1)。所以normalize(B-A)=normalize(X2-X1,Y2-Y1)。啊,当然,我有点疏忽。谢谢你的帮助!