極座標と直交座標の変換
https://i0.wp.com/science.shinshu-u.ac.jp/~tiiyama/wp-content/uploads/2011/02/Spherical_with_grid.png
code:極座標から直交座標への変換
// 左手座標系、Y-up
x = r * sin(theta) * cos(phi);
y = r * cos(theta);
z = r * sin(theta) * sin(phi);
// 右手座標系、Z-up
x = r * sin(theta) * cos(phi);
y = r * sin(theta) * sin(phi);
z = r * cos(theta);
code:直交座標から極座標への変換
// 左手座標系、Y-up
r = sqrt(x*x + y*y + z*z);
theta = acos(y / r) // 原点でのNaNに注意しましょう atan2(sqrt(x*x + z*z), y)
phi = atan2(z, x)
// 右手座標系、Z-up
r = sqrt(x*x + y*y + z*z);
theta = acos(z / r) // 原点でのNaNに注意しましょう atan2(sqrt(x*x + y*y), z)
phi = atan2(y, x)
極座標カメラのc#実装