我在 3D 建模软件中有一堆垂直于窗口表面的向量。投影到 XY 平面,我想知道他们面向哪个方向,转换为 8 罗盘坐标(北,东北、东、东南、南、西南、西> 和西北)。
向量是这样工作的:
- X 轴代表东西方向(东为正)
- y 轴代表南北(北为正)
- 因此
- (0, 1) == 北
- (1, 0) == 东
- (0,-1) == 南
- (-1,0) == 西
给定一个向量 (x, y),我正在寻找 8 个罗盘坐标中最接近的一个。关于如何优雅地执行此操作的任何想法?
最佳答案
这在 Java 中有效,计算八个方向的值 0...7:
import static java.lang.Math.*;
int compass = (((int) round(atan2(y, x) / (2 * PI / 8))) + 8) % 8;
结果映射到罗盘如下:
0 => E
1 => NE
2 => N
3 => NW
4 => W
5 => SW
6 => S
7 => SE
关于algorithm - 如何将 "snap"方向(2D)矢量指向罗盘(N、NE、E、SE、S、SW、W、NW)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1437790/