# Spherical-esque Coordiante System

1. Dec 6, 2006

Is there a generalization of the 2D or 3D spherical coordinate system to N-dimensions? I want to represent points in the space as a distance r from something, and then a bunch of angles. If this works for arbitrary dimensions, what's the rule for defining the newest angle each time I add a dimension?

In case that's not clear, what I want to know is, if I have a point in 3D (x,y,z) I can also call it (r,phi,theta). But if I have a point in 4D (x,y,z,w), and I want to call it (r,phi,theta,omega), how do I compute omega?

2. Dec 13, 2006

### Werg22

I don't exactly know for what application you need that, but to define an angle you have to first define a function between two axes. If what you mean is "convert" something N-1 D to N D coordinates, I think you take it as if the added value can be arbitrary.

3. Dec 13, 2006

### hypermorphism

Use the dot product.

4. Dec 13, 2006

### Doodle Bob

This is one of doing it:

x=r cos(phi)
y=r sin(phi) cos(theta)
z=r sin(phi) sin(theta) cos(omega)
w=r sin(phi) sin(theta) sin(omega)

5. Dec 13, 2006

Ok I think I can see how it generalizes now. If I have a coordinate system for (N-1) D, I can just define an angle between (N-1) space and the Nth dimension, and then project into (N-1) space and then use the (N-1) coordinate system with the projection prepended.

So in 2D we have
x = r*cos(phi)
y = r*sin(phi).
Then when I add a third dimension, I define theta as the angle between the 2D space and the new dimension, then project r onto the 2D space with cos(theta), and get
x = r*cos(theta)*cos(phi)
y = r*cos(theta)*sin(phi). Then project onto the 3rd D to get the final piece,
z = r*sin(theta).

So for 4D I would define omega as the angle between 3D and the 4th D, and let the projection be cos(omega) into 3D to get
x = r*cos(omega)*cos(theta)*cos(phi)
y = r*cos(omega)*cos(theta)*sin(phi)
z = r*cos(omega)*sin(theta)
w = r*sin(omega)
where all I did was prepend cos(omega) to the (N-1) projections and then define the new coordinate as r*sin(omega).