जवाबों:
http://blog.nobel-joergensen.com/2010/10/22/spherical-coordinates-in-unity/
public static void SphericalToCartesian(float radius, float polar, float elevation, out Vector3 outCart){
float a = radius * Mathf.Cos(elevation);
outCart.x = a * Mathf.Cos(polar);
outCart.y = radius * Mathf.Sin(elevation);
outCart.z = a * Mathf.Sin(polar);
}
public static void CartesianToSpherical(Vector3 cartCoords, out float outRadius, out float outPolar, out float outElevation){
if (cartCoords.x == 0)
cartCoords.x = Mathf.Epsilon;
outRadius = Mathf.Sqrt((cartCoords.x * cartCoords.x)
+ (cartCoords.y * cartCoords.y)
+ (cartCoords.z * cartCoords.z));
outPolar = Mathf.Atan(cartCoords.z / cartCoords.x);
if (cartCoords.x < 0)
outPolar += Mathf.PI;
outElevation = Mathf.Asin(cartCoords.y / outRadius);
}



r: रेडियल दूरीθ: झुकावφ: अजीमुथविकिपीडिया के माध्यम से
public Vector3 getCartesianFor(float radius, float inclination, float azimuth)
{
return new Vector3(radius*Sin(inclination)*Cos(azimuth), radius*Sin(inclination)*Sin(azimuth), radius*Cos(inclination));
}

यदि polarआप वेक्टर के परिमाण से मतलब रखते हैं, और elevationवेक्टर और एक्स प्लेन (जैसा कि नाम से पता चलता है) के बीच के कोण के रूप में परिभाषित किया जाता है, तो समारोह होगा:
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));
}
ध्यान दें कि यह एमएलएम के उत्तर के समान है, यह सब इस बात पर निर्भर करता है कि आप अपने elevationकोण को कैसे परिभाषित करते हैं । मैंने आपके फ़ंक्शन टेम्प्लेट हस्ताक्षर का भी सम्मान किया है, लेकिन मैं कुछ बदलावों का सुझाव देता हूं:
asimuth एक टाइपो है, सही वर्तनी होगी azimuthpolarआमतौर पर 2 डी समन्वय प्रणाली (आर, coord) को संदर्भित करता है । वेक्टर की भयावहता को सामान्यतः कहा जाता हैradiusradiusपहले पैरामीटर के रूप में एक अधिक पारंपरिक आदेश होगा ।