我需要将直角坐标转换为极坐标。你能推荐一个我可以使用的库吗,我不想自己写这个。
这用于理解天文学图像文件中包含的元数据。
我很确定标准库已经有了这个。如果有虚数类型,它们就是这样做的(real = x, imag = y, arg(val) = angle, abs(val) = radius)。使用数学库(atan2、sin、cos 和 sqrt)也不是那么困难。
这不就像2个功能吗?当然你可以用任何语言搜索它并自己转换它。
这是我在 C++ 中做矩形 -> 极坐标(另一种方法很简单)的代码
Vector3 C2P (const Vector3 &v)
{
float PI=3.14159260f;
Vector3 polar;
polar.x = v.Length();
if (v.z > 0.0f) {
polar.y = (float) atan ( v.z/sqrt (v.x * v.x + v.y * v.y));
}
else if (v.z < 0.0f) {
polar.y = (float) -atan (sqrt (v.x * v.x + v.y * v.y) / v.z);
}
else {
polar.y = 0.0;
}
if (v.x > 0.0f) {
polar.z = (float) atan (v.y / v.x);
}
else if (v.x < 0.0f) {
polar.z = (float) atan (v.y / v.x) + PI;
}
else if (v.y > 0) {
polar.z = PI * 0.5f;
}
else {
polar.z = -PI * 0.5f;
}
//polar.z=(polar.z/M_PI)*180;
//polar.y=(polar.y/M_PI)*180;
return polar;
}
注意结果是 x = 长度,y = 角度 1 z = 角度 2,以弧度为单位。
编辑:通过我的代码,我的意思是一些我从某个地方偷来并使用过一次的代码。