无论方向如何,始终使正确的轴向前移动。 2D

时间:2013-02-18 22:23:27

标签: c# math xna

我正在努力思考问这个问题的最佳方式,如果我没有多大意义,请原谅我,但如果我在一个轴上移动,那么在相反轴上复制该运动的最佳方法是什么?

到目前为止我的方法是:

获取从A点到B点的距离。 翻转轴(So X = Y和Y = X)。 用这个新方向从A点移动。

请看下面的图表,

我得到的问题是这个,水平/垂直它工作正常,所以例如如果方向是正确的,当翻转时给定的方向将向下,你向下移动(如果使用笛卡尔坐标系),如果你翻转轴。

然而,在对角线上做它并且遇到问题,如果我移动正x和正y然后翻转轴,我仍然继续向前移动。我真正想要的是负x,正y或正X,负y。

请有人解释数学解释,我觉得我知道这一点,但我的头脑似乎混淆了不同的经过试验和测试的解决方案。

编辑:

Cartesian Plane

1 个答案:

答案 0 :(得分:0)

听起来你实际上是在尝试反射y = x线上的点(使用微软样式的屏幕坐标,其中(0,0)是左上角)。如果是这样,(20,20)不应该改变,因为它位于那条线上。你想要它成为什么?

编辑: 我只是仔细检查了我的工作。给定从(x1,y1)到(x2,y2)的非有向线,具有相同中点的相等长度的垂直线来自 ((y2-y1+x1+x2)/2,(x1-x2+y1+y2)/2)((y1-y2+x1+x2)/2,(x2-x1+y1+y2)/2)