это не похоже на 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 = angle1 z = angle2.
EDIT:
под моим кодом я имею в виду некоторый код, который я украл откуда-то и использовал как один раз.