Jika yang polarAnda maksud besarnya vektor, dan elevationdidefinisikan sebagai sudut antara vektor dan bidang xy (sesuai namanya), fungsinya adalah:
public Vector3 getCartesianFor(float elevation, float asimuth, float polar)
{
return new Vector3(polar*Cos(elevation)*Cos(asimuth),
polar*Cos(elevation)*Sin(asimuth),
polar*Sin(inclination));
}
Perhatikan bahwa ini sangat mirip dengan jawaban MLM, itu semua tergantung pada bagaimana Anda mendefinisikan elevationsudut Anda . Saya juga menghormati tanda tangan templat fungsi Anda, tetapi saya menyarankan beberapa perubahan:
asimuth adalah salah ketik, ejaan yang benar adalah azimuth
polarbiasanya mengacu pada sistem koordinat 2D (r, θ). Besarnya vektor biasanya disebut sebagairadius
- Urutan yang lebih konvensional akan
radiusmenjadi parameter pertama.