NETGeographicLib 1.52
Loading...
Searching...
No Matches
MagneticCircle.h
Go to the documentation of this file.
1#pragma once
2/**
3 * \file NETGeographicLib/MagneticCircle.h
4 * \brief Header for NETGeographicLib::MagneticCircle class
5 *
6 * NETGeographicLib is copyright (c) Scott Heiman (2013)
7 * GeographicLib is Copyright (c) Charles Karney (2010-2012)
8 * <charles@karney.com> and licensed under the MIT/X11 License.
9 * For more information, see
10 * https://geographiclib.sourceforge.io/
11 **********************************************************************/
12
13namespace NETGeographicLib
14{
15 /**
16 * \brief .NET wrapper for GeographicLib::MagneticCircle.
17 *
18 * This class allows .NET applications to access GeographicLib::MagneticCircle.
19 *
20 * Evaluate the earth's magnetic field on a circle of constant height and
21 * latitude. This uses a CircularEngine to pre-evaluate the inner sum of the
22 * spherical harmonic sum, allowing the values of the field at several
23 * different longitudes to be evaluated rapidly.
24 *
25 * Use MagneticModel::Circle to create a MagneticCircle object. (The
26 * constructor for this class is for internal use only.)
27 *
28 * C# Example:
29 * \include example-MagneticCircle.cs
30 * Managed C++ Example:
31 * \include example-MagneticCircle.cpp
32 * Visual Basic Example:
33 * \include example-MagneticCircle.vb
34 *
35 * <B>INTERFACE DIFFERENCES:</B><BR>
36 * The () operator has been replaced with Field.
37 *
38 * The following functions are implemented as properties:
39 * Init, EquatorialRadius, Flattening, Latitude, Height, and Time.
40 **********************************************************************/
41 public ref class MagneticCircle
42 {
43 private:
44 // pointer to the unmanaged GeographicLib::MagneticCircle.
45 const GeographicLib::MagneticCircle* m_pMagneticCircle;
46
47 // the finalizer frees the unmanaged memory when the object is destroyed.
48 !MagneticCircle(void);
49 public:
50
51 /**
52 * %brief A constructor that is initialized from an unmanaged
53 * GeographicLib::MagneticCircle. This is for internal use only.
54 *
55 * Developers should use MagneticModel::Circle to create a
56 * MagneticCircle.
57 **********************************************************************/
59
60 /**
61 * %brief The destructor calls the finalizer.
62 **********************************************************************/
64 { this->!MagneticCircle(); }
65
66 /** \name Compute the magnetic field
67 **********************************************************************/
68 ///@{
69 /**
70 * %brief Evaluate the components of the geomagnetic field at a
71 * particular longitude.
72 *
73 * @param[in] lon longitude of the point (degrees).
74 * @param[out] Bx the easterly component of the magnetic field (nanotesla).
75 * @param[out] By the northerly component of the magnetic field (nanotesla).
76 * @param[out] Bz the vertical (up) component of the magnetic field
77 * (nanotesla).
78 **********************************************************************/
79 void Field(double lon,
80 [System::Runtime::InteropServices::Out] double% Bx,
81 [System::Runtime::InteropServices::Out] double% By,
82 [System::Runtime::InteropServices::Out] double% Bz);
83
84 /**
85 * Evaluate the components of the geomagnetic field and their time
86 * derivatives at a particular longitude.
87 *
88 * @param[in] lon longitude of the point (degrees).
89 * @param[out] Bx the easterly component of the magnetic field (nanotesla).
90 * @param[out] By the northerly component of the magnetic field (nanotesla).
91 * @param[out] Bz the vertical (up) component of the magnetic field
92 * (nanotesla).
93 * @param[out] Bxt the rate of change of \e Bx (nT/yr).
94 * @param[out] Byt the rate of change of \e By (nT/yr).
95 * @param[out] Bzt the rate of change of \e Bz (nT/yr).
96 **********************************************************************/
97 void Field(double lon,
98 [System::Runtime::InteropServices::Out] double% Bx,
99 [System::Runtime::InteropServices::Out] double% By,
100 [System::Runtime::InteropServices::Out] double% Bz,
101 [System::Runtime::InteropServices::Out] double% Bxt,
102 [System::Runtime::InteropServices::Out] double% Byt,
103 [System::Runtime::InteropServices::Out] double% Bzt);
104 ///@}
105
106 /** \name Inspector functions
107 **********************************************************************/
108 ///@{
109 /**
110 * @return true if the object has been initialized.
111 **********************************************************************/
112 property bool Init { bool get(); }
113 /**
114 * @return \e a the equatorial radius of the ellipsoid (meters). This is
115 * the value inherited from the MagneticModel object used in the
116 * constructor. This property throws a GeographicErr exception if
117 * the object is not initialized.
118 **********************************************************************/
119 property double EquatorialRadius { double get(); }
120 /**
121 * @return \e f the flattening of the ellipsoid. This is the value
122 * inherited from the MagneticModel object used in the constructor.
123 * This property throws a GeographicErr exception if the object is
124 * not initialized.
125 **********************************************************************/
126 property double Flattening { double get(); }
127 /**
128 * @return the latitude of the circle (degrees).
129 * This property throws a GeographicErr exception if the object is
130 * not initialized.
131 **********************************************************************/
132 property double Latitude { double get(); }
133 /**
134 * @return the height of the circle (meters).
135 * This property throws a GeographicErr exception if the object is
136 * not initialized.
137 **********************************************************************/
138 property double Height { double get(); }
139 /**
140 * @return the time (fractional years).
141 * This property throws a GeographicErr exception if the object is
142 * not initialized.
143 **********************************************************************/
144 property double Time { double get(); }
145 ///@}
146 };
147} //namespace NETGeographicLib
.NET wrapper for GeographicLib::MagneticCircle.
MagneticCircle(const GeographicLib::MagneticCircle &c)
void Field(double lon, [System::Runtime::InteropServices::Out] double% Bx, [System::Runtime::InteropServices::Out] double% By, [System::Runtime::InteropServices::Out] double% Bz)