c++ - 位置百分比度

标签 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。

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

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

最佳答案

你需要:

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

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

另请注意,与更传统的用法 (atan2(y, x)) 相比,x 和 y 被调换了。

LIVE DEMO

关于c++ - 位置百分比度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26798631/

相关文章:

c++ - Direct3D 中的利萨如图形

c++ - C++ 函数参数中的求值顺序

c++ - 如何扩展和字符串化这样的宏?

c++ - std::stringstream vs std::string 用于连接许多字符串

algorithm - AI 算法到 "shoot"在 2d 游戏中的目标

java - 如何使用Java Math Commons CurveFitter?

c++ - 使用顶点着色器确定线方向

android - 从 GPS 坐标计算平均速度的最佳实践

c++ - OpenGL 中的射线球相交

java - Ellipse2D 绘制精度较差