Help with spherical coordinates

For the discussion of math. Duh.

Moderators: gmalivuk, Moderators General, Prelates

Watercleave
Posts: 10
Joined: Sat Aug 28, 2010 8:08 am UTC

Help with spherical coordinates

Postby Watercleave » Wed Dec 29, 2010 7:47 am UTC

For a programming project, I'm using a spherical coordinate system on the basis that it would be easier to handle. However, having programmed in a lot of different structures, I found that the Maths textbook I was relying on, while having a section on spherical coordinates, was limited to two pages on the topic.

So far, Google has been no help. It might be that I'm phrasing my searches incorrectly, but I've yet to find anything I can understand.

Can someone explain, or point me to a page that can explain, translation of points using spherical triples (ie. Translate point (r, θ, φ) by (d, θ, φ), where d is the distance from the point's current placement and the angles are standard).

~Watercleave

User avatar
skeptical scientist
closed-minded spiritualist
Posts: 6142
Joined: Tue Nov 28, 2006 6:09 am UTC
Location: San Francisco

Re: Help with spherical coordinates

Postby skeptical scientist » Wed Dec 29, 2010 8:27 am UTC

This is adding two vectors. By far the easiest way to do this with spherical coordinates is to convert from spherical to rectangular, add the vectors, and convert back to spherical. Spherical coordinates are great for dealing with certain things, but rectangular coordinates are much better for others, and adding vectors is one of them.
I'm looking forward to the day when the SNES emulator on my computer works by emulating the elementary particles in an actual, physical box with Nintendo stamped on the side.

"With math, all things are possible." —Rebecca Watson

User avatar
lamemaar
Posts: 13
Joined: Wed Dec 29, 2010 9:52 am UTC

Re: Help with spherical coordinates

Postby lamemaar » Wed Dec 29, 2010 3:46 pm UTC

sphcoor.jpg
sphcoor.jpg (7.92 KiB) Viewed 2227 times


In this figure, you see that [math]z_E = \rho \cos \phi[/math] and that the length of line segment [imath]z_E E[/imath] is equal to [imath]\rho \sin \phi[/imath].
Looking in the xOy-plane at the bottom you find the projection of this line segment, which has the same length.
Multiplying this by [imath]\cos \theta[/imath], you find [math]x_E = \rho \sin \phi \cos \theta[/math]
Similarly, multiplying it by [imath]\sin \theta[/imath], you find [math]y_E = \rho \sin \phi \sin \theta[/math]
So we have now expressed [imath]x[/imath], [imath]y[/imath] and [imath]z[/imath] in terms of [imath]\rho[/imath], [imath]\theta[/imath] and [imath]\phi[/imath].

If you also want to do it the other way round, let me show you a fragment of Java code to accomplish this:

Code: Select all

   rho = Math.sqrt(xE * xE + yE * yE + zE * zE);
   theta = Math.atan2(yE, xE);
   phi = Math.acos(zE/rho);

(It would have been more usual to denote the point in question by P instead of E, but I had this picture available on my computer as an illustration in a book of mine on Computer Graphics for Java Programmers, in which I used the letter E for the eye of the viewer of a 3D object.)


Return to “Mathematics”

Who is online

Users browsing this forum: Bing [Bot] and 14 guests