double x = ...; // -1.0 to 1.0
double y = ...; // -1.0 to 1.0
int deg = (int) ((atan(x / y) * 57.2958) + (y > 0 ? 540 : 360)) % 360;
一些我现在似乎无法理解的基本几何图形。花了一段时间。上面的代码工作正常,但似乎镜像错误,我很确定这里不需要 mod。
我有一个相当奇怪的场景,当红点在那个位置时,我需要那些度数输出。基本上是一个镜像单位圆。
寻找一个简单的实现(也许是几何复习)。
最佳答案
你需要:
degrees = atan2(x, y) * 360.0 / (2.0 * M_PI) + 180.0;
注意 atan2 的使用获得有效的 4 象限结果。我们还需要添加 π 弧度(180 度),因为 atan2
返回 -π 到 π 范围内的值。
另请注意,与更传统的用法 (atan2(y, x)
) 相比,x 和 y 被调换了。
关于c++ - 位置百分比度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26798631/