在坐标系中找到相反的方向

时间:2011-09-08 16:50:47

标签: algorithm math coordinates

给出的是笛卡尔坐标系和该系统中的点(x,y)。例如,点p具有坐标(-12,2):

                  |
                  |
      p           |
                  |
------------------+------------------>
                  |
                  |
                  |
                  |

现在我需要一个函数/算法,根据给定的点,从坐标系的中心(0,0)计算相反的“方向”(北,东,南,西)。在我们的例子中,选择的最佳相反方向是EAST,沿着X轴向右移动。

但是,在我的应用程序中的某些情况下,并非所有方向都是可供选择的选项,在这种情况下,必须选择下一个最佳方向。在我们的例子中,如果EAST不可能,那么下一个最佳方向将是SOUTH(然后是NORTH,然后是WEST)。

我可以用一些if语句来解决这个问题,但这看起来并不是很优雅 还有其他(更好的)想法吗?

2 个答案:

答案 0 :(得分:3)

使用向量(x, y)的点积与沿四个方向的单位向量

(1, 0), (-1, 0), (0, 1), (0, -1).

最小的数字对应您想要的方向。然后是第二小,依此类推。

这适用于任何方向,不仅仅是E,W,S和N - 您只需要沿所需方向选择单位矢量并比较点积

答案 1 :(得分:2)

“真正的”相反方向是-P,即(12,-2)

“最佳”方向是较长的幅度,即(12,0)。你将它标准化并得到(1,0)这是东方。

下一个最佳方向是较短的幅度,即(0,-2)。你将它标准化并得到(0,-1),这是南方。

一般情况下,如果您被限制使用某组单位向量,则使用具有最大点积的那个。