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

标签 algorithm math coordinates

给定的是笛卡尔坐标系和该系统内的一个点(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/

相关文章:

matlab - 如何在 MATLAB 中对离散二维曲面进行积分?

algorithm - 滑翔伞比赛中的最短路径

flash - AS3 x和y属性精度

algorithm - 如何将十进制分数转换为十六进制分数?

php - 统一排列/分布数组项

java - 分割音频信号

bash - for 循环中 bash 中的简单数学语句

c# - 顺时针排序列表中的 2d 个点

algorithm - 球桶,如果我添加另一个球,一个桶会装满吗?

algorithm - 大 Oh 符号证明 O(2^n)