将百分比定位到学位

时间:2014-11-07 10:02:09

标签: c++ math geometry

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。

我有一个相当奇怪的场景,当红点位于该位置时,我需要那些度数输出。基本上是一个镜像单位圈。

寻找简单的实现(也许是几何复习)。

1 个答案:

答案 0 :(得分:2)

你需要:

degrees = atan2(x, y) * 360.0 / (2.0 * M_PI) + 180.0;

请注意使用atan2获取有效的4象限结果。我们还需要添加π弧度(180度),因为atan2返回-π到π范围内的值。

另请注意,与更常规的用法(atan2(y, x))相比,x和y会被转置。

LIVE DEMO