## org.apache.commons.math3.geometry.euclidean.threed Class SphericalCoordinates

```java.lang.Object
org.apache.commons.math3.geometry.euclidean.threed.SphericalCoordinates
```
All Implemented Interfaces:
Serializable

`public class SphericalCoordinatesextends Objectimplements Serializable`

This class provides conversions related to spherical coordinates.

The conventions used here are the mathematical ones, i.e. spherical coordinates are related to Cartesian coordinates as follows:

• x = r cos(θ) sin(Φ)
• y = r sin(θ) sin(Φ)
• z = r cos(Φ)
• r = √(x2+y2+z2)
• θ = atan2(y, x)
• Φ = acos(z/r)

r is the radius, θ is the azimuthal angle in the x-y plane and Φ is the polar (co-latitude) angle. These conventions are different from the conventions used in physics (and in particular in spherical harmonics) where the meanings of θ and Φ are reversed.

This class provides conversion of coordinates and also of gradient and Hessian between spherical and Cartesian coordinates.

Since:
3.2
Version:
\$Id: SphericalCoordinates.html 860130 2013-04-27 21:11:39Z luc \$
Serialized Form

Constructor Summary
```SphericalCoordinates(double r, double theta, double phi)```
Build a spherical coordinates transformer from spherical coordinates.
`SphericalCoordinates(Vector3D v)`
Build a spherical coordinates transformer from Cartesian coordinates.

Method Summary
` Vector3D` `getCartesian()`
Get the Cartesian coordinates.
` double` `getPhi()`
Get the polar (co-latitude) angle.
` double` `getR()`
` double` `getTheta()`
Get the azimuthal angle in x-y plane.
` double[]` `toCartesianGradient(double[] sGradient)`
Convert a gradient with respect to spherical coordinates into a gradient with respect to Cartesian coordinates.
` double[][]` ```toCartesianHessian(double[][] sHessian, double[] sGradient)```
Convert a Hessian with respect to spherical coordinates into a Hessian with respect to Cartesian coordinates.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### SphericalCoordinates

`public SphericalCoordinates(Vector3D v)`
Build a spherical coordinates transformer from Cartesian coordinates.

Parameters:
`v` - Cartesian coordinates

### SphericalCoordinates

```public SphericalCoordinates(double r,
double theta,
double phi)```
Build a spherical coordinates transformer from spherical coordinates.

Parameters:
`r` - radius
`theta` - azimuthal angle in x-y plane
`phi` - polar (co-latitude) angle
Method Detail

### getCartesian

`public Vector3D getCartesian()`
Get the Cartesian coordinates.

Returns:
Cartesian coordinates

### getR

`public double getR()`

Returns:
`getTheta()`, `getPhi()`

### getTheta

`public double getTheta()`
Get the azimuthal angle in x-y plane.

Returns:
azimuthal angle in x-y plane θ
`getR()`, `getPhi()`

### getPhi

`public double getPhi()`
Get the polar (co-latitude) angle.

Returns:
polar (co-latitude) angle Φ
`getR()`, `getTheta()`

`public double[] toCartesianGradient(double[] sGradient)`
Convert a gradient with respect to spherical coordinates into a gradient with respect to Cartesian coordinates.

Parameters:
`sGradient` - gradient with respect to spherical coordinates {df/dr, df/dθ, df/dΦ}
Returns:
gradient with respect to Cartesian coordinates {df/dx, df/dy, df/dz}

### toCartesianHessian

```public double[][] toCartesianHessian(double[][] sHessian,
`sHessian` - Hessian with respect to spherical coordinates {{d2f/dr2, d2f/drdθ, d2f/drdΦ}, {d2f/drdθ, d2f/dθ2, d2f/dθdΦ}, {d2f/drdΦ, d2f/dθdΦ, d2f/dΦ2}
`sGradient` - gradient with respect to spherical coordinates {df/dr, df/dθ, df/dΦ}