给定的是笛卡尔坐标系和该系统内的一个点(x,y)。例如点 p 的坐标为 (-12,2):
|
|
p |
|
------------------+------------------>
|
|
|
|
现在我需要一个函数/算法来计算基于给定点的坐标系中心 (0,0) 的相反“方向”(北、东、南、西)。在我们的示例中,最好选择相反的方向是 EAST,沿着 X 轴向右。
但是,在我的应用程序中的某些情况下,并非所有方向都可以选择,在这种情况下,必须选择次佳方向。在我们的示例中,如果向东不可行,那么下一个最佳方向将是向南(然后向北,然后向西)。
我可以用一些 if 语句来解决这个问题,但这似乎不是很优雅。
还有其他(更好的)想法吗?
最佳答案
使用向量 (x, y)
与沿四个方向的单位向量的点积
(1, 0), (-1, 0), (0, 1), (0, -1).
最小的数字对应你想要的方向。然后是第二小的,依此类推。
这适用于任何方向,而不仅仅是 E、W、S 和 N - 您只需要沿所需方向选择单位向量并比较点积
关于algorithm - 在坐标系中寻找相反的方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7351669/