public class SphericalCoordinates extends Object implements Serializable
The conventions used here are the mathematical ones, i.e. spherical coordinates are related to Cartesian coordinates as follows:
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.
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.
|
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.
|
public SphericalCoordinates(Vector3D v)
v
- Cartesian coordinatespublic SphericalCoordinates(double r, double theta, double phi)
r
- radiustheta
- azimuthal angle in x-y planephi
- polar (co-latitude) anglepublic Vector3D getCartesian()
public double getR()
getTheta()
,
getPhi()
public double getTheta()
public double getPhi()
getR()
,
getTheta()
public double[] toCartesianGradient(double[] sGradient)
sGradient
- gradient with respect to spherical coordinates
{df/dr, df/dθ, df/dΦ}public double[][] toCartesianHessian(double[][] sHessian, double[] sGradient)
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.
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Φ}Copyright © 2003–2016 The Apache Software Foundation. All rights reserved.