Algorithm 在坐标系中寻找相反的方向

Algorithm 在坐标系中寻找相反的方向,algorithm,math,coordinates,Algorithm,Math,Coordinates,给定一个笛卡尔坐标系和该坐标系中的一个点(x,y)。例如,点p的坐标为(-12,2): 现在我需要一个函数/算法,根据给定点计算坐标系中心(0,0)的相反“方向”(北、东、南、西)。在我们的示例中,选择的最佳相反方向是东方,沿着X轴向右 然而,在我的应用程序中的某些情况下,并非所有方向都可以选择,在这种情况下,必须选择下一个最佳方向。在我们的例子中,如果不可能向东,那么下一个最好的方向就是向南(然后向北,然后向西) 我可以用一些if语句来解决这个问题,但这似乎不是很优雅。 还有其他(更好的)想法

给定一个笛卡尔坐标系和该坐标系中的一个点(x,y)。例如,点p的坐标为(-12,2):

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

然而,在我的应用程序中的某些情况下,并非所有方向都可以选择,在这种情况下,必须选择下一个最佳方向。在我们的例子中,如果不可能向东,那么下一个最好的方向就是向南(然后向北,然后向西)

我可以用一些if语句来解决这个问题,但这似乎不是很优雅。

还有其他(更好的)想法吗?

真正的相反方向是
-p
,即(12,-2)

“最佳”方向是较长的震级,即(12,0)。将其标准化,得到(1,0),即east

下一个最佳方向是较短的震级,即(0,-2)。将其标准化,得到(0,-1),即南部


一般来说,如果你被限制沿着一组特定的单位向量走,你可以使用具有最大点积的单位向量。

真正的相反方向是
-p
,即(12,-2)

“最佳”方向是较长的震级,即(12,0)。将其标准化,得到(1,0),即east

下一个最佳方向是较短的震级,即(0,-2)。将其标准化,得到(0,-1),即南部


一般来说,如果你被限制沿着一组特定的单位向量走,你可以使用具有最大点积的单位向量。

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

(1, 0), (-1, 0), (0, 1), (0, -1).
最小的数字对应您想要的方向。然后是第二个最小的,依此类推


这适用于任何方向,而不仅仅是E、W、S和N-您只需沿所需方向拾取单位向量,并比较点积

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

(1, 0), (-1, 0), (0, 1), (0, -1).
最小的数字对应您想要的方向。然后是第二个最小的,依此类推

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