.NET wrapper for GeographicLib::SphericalHarmonic2. More...
#include <SphericalHarmonic2.h>
Public Types | |
enum | Normalization { Normalization::FULL, Normalization::SCHMIDT } |
Public Member Functions | |
CircularEngine | Circle (double tau1, double tau2, double p, double z, bool gradp) |
SphericalCoefficients | Coefficients () |
SphericalCoefficients | Coefficients1 () |
SphericalCoefficients | Coefficients2 () |
double | HarmonicSum (double tau1, double tau2, double x, double y, double z) |
double | HarmonicSum (double tau1, double tau2, double x, double y, double z, [System::Runtime::InteropServices::Out] double%gradx, [System::Runtime::InteropServices::Out] double%grady, [System::Runtime::InteropServices::Out] double%gradz) |
SphericalHarmonic2 (array< double >^C, array< double >^S, int N, array< double >^C1, array< double >^S1, int N1, array< double >^C2, array< double >^S2, int N2, double a, Normalization norm) | |
SphericalHarmonic2 (array< double >^C, array< double >^S, int N, int nmx, int mmx, array< double >^C1, array< double >^S1, int N1, int nmx1, int mmx1, array< double >^C2, array< double >^S2, int N2, int nmx2, int mmx2, double a, Normalization norm) | |
~SphericalHarmonic2 () | |
Private Member Functions | |
!SphericalHarmonic2 (void) | |
Private Attributes | |
std::vector< double > ** | m_C |
const GeographicLib::SphericalHarmonic2 * | m_pSphericalHarmonic2 |
std::vector< double > ** | m_S |
Static Private Attributes | |
static const int | m_numCoeffVectors = 3 |
.NET wrapper for GeographicLib::SphericalHarmonic2.
This class allows .NET applications to access GeographicLib::SphericalHarmonic2.
This class is similar to SphericalHarmonic, except that the coefficients Cnm are replaced by Cnm + tau' C'nm + tau'' C''nm (and similarly for Snm).
C# Example:
Managed C++ Example:
Visual Basic Example:
INTERFACE DIFFERENCES:
This class replaces the () operator with HarmonicSum().
Coefficients, Coefficients1, and Coefficients2 return a SphericalCoefficients object.
Definition at line 40 of file SphericalHarmonic2.h.
Supported normalizations for associate Legendre polynomials.
Definition at line 57 of file SphericalHarmonic2.h.
|
private |
Definition at line 23 of file SphericalHarmonic2.cpp.
SphericalHarmonic2::SphericalHarmonic2 | ( | array< double >^ | C, |
array< double >^ | S, | ||
int | N, | ||
array< double >^ | C1, | ||
array< double >^ | S1, | ||
int | N1, | ||
array< double >^ | C2, | ||
array< double >^ | S2, | ||
int | N2, | ||
double | a, | ||
Normalization | norm | ||
) |
Constructor with a full set of coefficients specified.
[in] | C | the coefficients Cnm. |
[in] | S | the coefficients Snm. |
[in] | N | the maximum degree and order of the sum |
[in] | C1 | the coefficients C'nm. |
[in] | S1 | the coefficients S'nm. |
[in] | N1 | the maximum degree and order of the first correction coefficients C'nm and S'nm. |
[in] | C2 | the coefficients C''nm. |
[in] | S2 | the coefficients S''nm. |
[in] | N2 | the maximum degree and order of the second correction coefficients C'nm and S'nm. |
[in] | a | the reference radius appearing in the definition of the sum. |
[in] | norm | the normalization for the associated Legendre polynomials, either SphericalHarmonic2::FULL (the default) or SphericalHarmonic2::SCHMIDT. |
GeographicErr | if N and N1 do not satisfy N ≥ N1 ≥ −1, and similarly for N2. |
GeographicErr | if any of the vectors of coefficients is not large enough. |
See SphericalHarmonic for the way the coefficients should be stored. N1 and N2 should satisfy N1 ≤ N and N2 ≤ N.
The class stores pointers to the first elements of C, S, C', S', C'', and S''. These arrays should not be altered or destroyed during the lifetime of a SphericalHarmonic object.
Definition at line 51 of file SphericalHarmonic2.cpp.
SphericalHarmonic2::SphericalHarmonic2 | ( | array< double >^ | C, |
array< double >^ | S, | ||
int | N, | ||
int | nmx, | ||
int | mmx, | ||
array< double >^ | C1, | ||
array< double >^ | S1, | ||
int | N1, | ||
int | nmx1, | ||
int | mmx1, | ||
array< double >^ | C2, | ||
array< double >^ | S2, | ||
int | N2, | ||
int | nmx2, | ||
int | mmx2, | ||
double | a, | ||
Normalization | norm | ||
) |
Constructor with a subset of coefficients specified.
[in] | C | the coefficients Cnm. |
[in] | S | the coefficients Snm. |
[in] | N | the degree used to determine the layout of C and S. |
[in] | nmx | the maximum degree used in the sum. The sum over n is from 0 thru nmx. |
[in] | mmx | the maximum order used in the sum. The sum over m is from 0 thru min(n, mmx). |
[in] | C1 | the coefficients C'nm. |
[in] | S1 | the coefficients S'nm. |
[in] | N1 | the degree used to determine the layout of C' and S'. |
[in] | nmx1 | the maximum degree used for C' and S'. |
[in] | mmx1 | the maximum order used for C' and S'. |
[in] | C2 | the coefficients C''nm. |
[in] | S2 | the coefficients S''nm. |
[in] | N2 | the degree used to determine the layout of C'' and S''. |
[in] | nmx2 | the maximum degree used for C'' and S''. |
[in] | mmx2 | the maximum order used for C'' and S''. |
[in] | a | the reference radius appearing in the definition of the sum. |
[in] | norm | the normalization for the associated Legendre polynomials, either SphericalHarmonic2::FULL (the default) or SphericalHarmonic2::SCHMIDT. |
GeographicErr | if the parameters do not satisfy N ≥ nmx ≥ mmx ≥ −1; N1 ≥ nmx1 ≥ mmx1 ≥ −1; N ≥ N1; nmx ≥ nmx1; mmx ≥ mmx1; and similarly for N2, nmx2, and mmx2. |
GeographicErr | if any of the vectors of coefficients is not large enough. |
The class stores pointers to the first elements of C, S, C', S', C'', and S''. These arrays should not be altered or destroyed during the lifetime of a SphericalHarmonic object.
Definition at line 93 of file SphericalHarmonic2.cpp.
|
inline |
The destructor calls the finalizer.
Definition at line 170 of file SphericalHarmonic2.h.
CircularEngine SphericalHarmonic2::Circle | ( | double | tau1, |
double | tau2, | ||
double | p, | ||
double | z, | ||
bool | gradp | ||
) |
Create a CircularEngine to allow the efficient evaluation of several points on a circle of latitude at fixed values of tau1 and tau2.
[in] | tau1 | multiplier for correction coefficients C' and S'. |
[in] | tau2 | multiplier for correction coefficients C'' and S''. |
[in] | p | the radius of the circle. |
[in] | z | the height of the circle above the equatorial plane. |
[in] | gradp | if true the returned object will be able to compute the gradient of the sum. |
std::bad_alloc | if the memory for the CircularEngine can't be allocated. |
SphericalHarmonic2::operator()() exchanges the order of the sums in the definition, i.e., ∑n = 0..N ∑m = 0..n becomes ∑m = 0..N ∑n = m..N.. SphericalHarmonic2::Circle performs the inner sum over degree n (which entails about N2 operations). Calling CircularEngine::operator()() on the returned object performs the outer sum over the order m (about N operations).
See SphericalHarmonic::Circle for an example of its use.
Definition at line 157 of file SphericalHarmonic2.cpp.
SphericalCoefficients SphericalHarmonic2::Coefficients | ( | ) |
Definition at line 171 of file SphericalHarmonic2.cpp.
SphericalCoefficients SphericalHarmonic2::Coefficients1 | ( | ) |
Definition at line 177 of file SphericalHarmonic2.cpp.
SphericalCoefficients SphericalHarmonic2::Coefficients2 | ( | ) |
Definition at line 183 of file SphericalHarmonic2.cpp.
double SphericalHarmonic2::HarmonicSum | ( | double | tau1, |
double | tau2, | ||
double | x, | ||
double | y, | ||
double | z | ||
) |
Compute a spherical harmonic sum with two correction terms.
[in] | tau1 | multiplier for correction coefficients C' and S'. |
[in] | tau2 | multiplier for correction coefficients C'' and S''. |
[in] | x | cartesian coordinate. |
[in] | y | cartesian coordinate. |
[in] | z | cartesian coordinate. |
This routine requires constant memory and thus never throws an exception.
Definition at line 136 of file SphericalHarmonic2.cpp.
double SphericalHarmonic2::HarmonicSum | ( | double | tau1, |
double | tau2, | ||
double | x, | ||
double | y, | ||
double | z, | ||
[System::Runtime::InteropServices::Out] double% | gradx, | ||
[System::Runtime::InteropServices::Out] double% | grady, | ||
[System::Runtime::InteropServices::Out] double% | gradz | ||
) |
Compute a spherical harmonic sum with two correction terms and its gradient.
[in] | tau1 | multiplier for correction coefficients C' and S'. |
[in] | tau2 | multiplier for correction coefficients C'' and S''. |
[in] | x | cartesian coordinate. |
[in] | y | cartesian coordinate. |
[in] | z | cartesian coordinate. |
[out] | gradx | x component of the gradient |
[out] | grady | y component of the gradient |
[out] | gradz | z component of the gradient |
This is the same as the previous function, except that the components of the gradients of the sum in the x, y, and z directions are computed. This routine requires constant memory and thus never throws an exception.
Definition at line 142 of file SphericalHarmonic2.cpp.
|
private |
Definition at line 52 of file SphericalHarmonic2.h.
|
staticprivate |
Definition at line 48 of file SphericalHarmonic2.h.
|
private |
Definition at line 44 of file SphericalHarmonic2.h.
|
private |
Definition at line 52 of file SphericalHarmonic2.h.