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 SphericalCoordinates
      extends Object
      implements 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.java 1443364 2013-02-07 09:28:04Z luc $
  See Also:
    Serialized Form

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `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

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `Vector3D` | `getCartesian()` Get the Cartesian coordinates.
    `double` | `getPhi()` Get the polar (co-latitude) angle.
    `double` | `getR()` Get the radius.
    `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()

      Get the radius.
      Returns:
        radius r
      See Also:
        `getTheta()`, `getPhi()`

    - #### getTheta

          public double getTheta()

      Get the azimuthal angle in x-y plane.
      Returns:
        azimuthal angle in x-y plane θ
      See Also:
        `getR()`, `getPhi()`

    - #### getPhi

          public double getPhi()

      Get the polar (co-latitude) angle.
      Returns:
        polar (co-latitude) angle Φ
      See Also:
        `getR()`, `getTheta()`

    - #### toCartesianGradient

          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,
                                      double[] sGradient)

      Convert a Hessian with respect to spherical coordinates into a Hessian with respect to Cartesian coordinates.

      As Hessian are always symmetric, we use only the lower left part of the provided spherical Hessian, so the upper part may not be initialized. However, we still do fill up the complete array we create, with guaranteed symmetry.

      Parameters:
        `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Φ}
      Returns:
        Hessian with respect to Cartesian coordinates {{d2f/dx2, d2f/dxdy, d2f/dxdz}, {d2f/dxdy, d2f/dy2, d2f/dydz}, {d2f/dxdz, d2f/dydz, d2f/dz2}}

Copyright © 2003–2014 The Apache Software Foundation. All rights reserved.