Position on a Sphere

De DigiWiki.

How to calculate the position on a sphere. Usefull to get something to rotate around a point other than it's center, among other things.

vector spherePos(vector offset, float radius, float zenith, float azimuth)
{
    // zenith is the angle between the positive z-axis and the vector.  Ranges from 0 to PI.  0 will put the object at the top of the sphere, PI will put it at the bottom.  This represents a horizontal slice of the sphere, the height the object will be placed at.
    // azimuth is the angle between the positive x-axis and the vector projected onto the xy-plane.  Ranges from 0 to TWO_PI.  0  or TWO_PI will put the object at the positive radius for x and 0 for y.  This is how far around the horiztonal sphere-slice determined from the zenith the object will be placed at.  
    // see http://en.wikipedia.org/wiki/Spherical_coordinates
 
    float sinzenith = llFabs(llSin(zenith));
    float x = sinzenith * llCos(azimuth);
    float y = sinzenith * llSin(azimuth);
    float z = llCos(zenith);
    return offset + (radius * <x, y, z>);
}
Outils personnels
  • Cette page a été consultée 544 fois.
donate
Google Ads