I am trying to define a planet using spherical corrdinates (rho, phi, theta). The sphere is centered on the origin, and I have my camera defined by a second set of spherical coordinates. What I want to do is clip away all geometry on the sphere that is not visible (the sphere has a radius of ~5000, the camera is at rho 5020). How can i avoid the cost of converting from Spherical to cartesian coordinates, and clip off all that extra geometry?
Z.

# Spherical Coordinates

Started by Zaei, Oct 14 2001 11:24 AM

3 replies to this topic

Sponsor:

###
#2
Members - Reputation: **864**

Posted 14 October 2001 - 07:31 PM

I will assume that your camera is located on the positive z axis at a point z

Given that z

Assuming this is the case...

A vector from the origin of the sphere to z

So, you can clip all points on the sphere for which phi>cos

I hope this is what you were looking for!

Cheers,

Timkin

Edited by - Timkin on October 15, 2001 12:18:02 AM

_{c}, such that z_{c}> z_{p}(where z_{c}is the radius of the sphere the camera lies on and z_{p}is the radius of the planet). If you're camera lies elsewhere on the sphere, then it is a trivial transformation of coordinates to adjust the solution to your exact problem.Given that z

_{c}> z_{p}, then the visible part of the planet will be the locus of all points within the 'cap' of the sphere defined by the intersection of the sphere and a tangent cone with origin at z_{c}. In other words, all vectors that pass through z_{c}and are tangent to the sphere define a 'tangent cone' and it is only points on the planet within this cone that will be visible at z_{c}. I believe that finding this set of points is the problem you have asked. Please correct me if I am wrong.Assuming this is the case...

A vector from the origin of the sphere to z

_{c}is given by**c**= <0,0,z_{c}> and the vector function defining the surface of the sphere is given by**r**(theta,phi) = z_{p}(cos(theta)sin(phi)**i**+ sin(theta)sin(phi)**j**+ cos(phi)**k**). Hence, the tangent cone is defined by**t**=**c**-**r**such that**t.r**= 0; and so we can solve this to find that cos(phi)=z_{p}/z_{c}, thus defining the boundary of our set of points by the angle phi (which is the (angle of) declination from the z axis of the point on the sphere).So, you can clip all points on the sphere for which phi>cos

^{-1}(z_{p}/z_{c})I hope this is what you were looking for!

Cheers,

Timkin

Edited by - Timkin on October 15, 2001 12:18:02 AM