- Joined
- Jul 10, 2007

- Messages
- 6,306

The spherical coordinate system maps points relative to an origin given two angles and a distance.

What makes this different from the Cartesian coordinate system is that rather than defining a point by its x,y,z distance from the origin, it defines a point by the magnitude of an x,y,z point and two angles (magnitude being distance).

The magnitude is defined as ||p|| or ||r|| = SquareRoot(x*x+y*y+z*z)

Notice how it has 3 dimensions. The z just needs to be added in order to get that third dimension.

The two angles define direction.

In the polar coordinate system, one angle and a distance is needed. This angle is theta, which is how far around a circle a given point goes.

Theta-

Note that because z is 0, it doesn't do anything in the polar coordinate system.

By adding a z, the magnitude expands and a second angle is needed, this angle being how far the point is from the northern z-axis (easier this way).

The range of phi goes from 0 to pi, 0 being north and pi being south.

In polar coordinates, phi is always pi/2.

Equations are as follows

Angle Between Points (x0, y0, z0) and (x, y, z).

(x0, y0, z0) would be the first point

Distance between two 3D points

More information can be found at these sites

What makes this different from the Cartesian coordinate system is that rather than defining a point by its x,y,z distance from the origin, it defines a point by the magnitude of an x,y,z point and two angles (magnitude being distance).

The magnitude is defined as ||p|| or ||r|| = SquareRoot(x*x+y*y+z*z)

Notice how it has 3 dimensions. The z just needs to be added in order to get that third dimension.

The two angles define direction.

In the polar coordinate system, one angle and a distance is needed. This angle is theta, which is how far around a circle a given point goes.

Theta-

Code:

```
x = r*cos(theta)
y = r*sin(theta)
r = ||p|| = SquareRoot(x*x + y*y)
tan(theta) = y/x
```

Note that because z is 0, it doesn't do anything in the polar coordinate system.

By adding a z, the magnitude expands and a second angle is needed, this angle being how far the point is from the northern z-axis (easier this way).

The range of phi goes from 0 to pi, 0 being north and pi being south.

In polar coordinates, phi is always pi/2.

Equations are as follows

Code:

```
x = p*cos(theta)*sin(phi)
y = p*sin(theta)*sin(phi)
z = p*cos(phi)
p = SquareRoot(x*x + y*y + z*z)
r = SquareRoot(x*x + y*y)
tan(theta) = y/x
tan(phi) = r/z
```

Angle Between Points (x0, y0, z0) and (x, y, z).

(x0, y0, z0) would be the first point

Code:

```
where
----xd = x - x0
----yd = y - y0
----zd = z - z0
----pd = SquareRoot(xd*xd + yd*yd + zd*zd)
----rd = SquareRoot(xd*xd + yd*yd)
tan(theta) = yd/xd
tan(phi) = rd/zd
```

Distance between two 3D points

Code:

```
where
----xd = x - x0
----yd = y - y0
----zd = z - z0
----pd = SquareRoot(xd*xd + yd*yd + zd*zd)
distance = pd
```

JASS:

```
thetaBetween = Atan2((y - y0), (x - x0))
phiBetween = Atan2(SquareRoot((x - x0)*(x - x0) + (y - y0)*(y - y0)), z - z0)
distanceBetween = SquareRoot((x - x0)*(x - x0) + (y - y0)*(y - y0) + (z - z0)*(z - z0))
```

More information can be found at these sites

Last edited: