void CalcUV(XYZ p,double *u,double *v) { double r,phi; r = atan2(sqrt(p.x*p.x+p.y*p.y),p.z); r /= PI; /* -0.5 .. 0.5 */ phi = atan2(p.y,p.x); *u = r * cos(phi) + 0.5; *v = r * sin(phi) + 0.5; }