Isis Developer Reference
TargetBody.h
Go to the documentation of this file.
1#ifndef TargetBody_h
2#define TargetBody_h
3
10/* SPDX-License-Identifier: CC0-1.0 */
11
12#include <vector>
13
14#include <QList>
15#include <QObject>
16#include <QSharedPointer>
17#include <QString>
18
19#include <SpiceUsr.h>
20#include <SpiceZfc.h>
21#include <SpiceZmc.h>
22
23#include "Angle.h"
24//#include "BundleTargetBody.h"
25#include "Distance.h"
26#include "Target.h"
27#include "XmlStackedHandler.h"
28
29
30class QDataStream;
31class QUuid;
32class QXmlStreamWriter;
33
34namespace Isis {
35 //class Distance;
36 class FileName;
37 class Project; // TODO: does xml stuff need project???
38 class PvlObject;
39 class TargetBodyDisplayProperties;
40 class XmlStackedHandlerReader;
41
65 class TargetBody : public QObject {
66
67 Q_OBJECT
68
69 public:
70 TargetBody(Target *target, QObject *parent = 0);
71 //TargetBody(BundleTargetBodyQsp bundleTargetBody, QObject *parent = 0);
72// TargetBody(Project *project, XmlStackedHandlerReader *xmlReader,
73// QObject *parent = 0); // TODO: does xml stuff need project???
75
76 bool operator==(const TargetBody &src) const;
77
80
81 QString id() const;
82 QString targetName();
83// void deleteFromDisk();
84
85 int frameType();
86
87 std::vector<Angle> poleRaCoefs();
88 std::vector<Angle> poleDecCoefs();
89 std::vector<Angle> pmCoefs();
90
91 std::vector<double> poleRaNutPrecCoefs();
92 std::vector<double> poleDecNutPrecCoefs();
93
94 std::vector<double> pmNutPrecCoefs();
95
96 std::vector<Angle> sysNutPrecConstants();
97 std::vector<Angle> sysNutPrecCoefs();
98
99 SpiceInt naifBodyCode() const;
100 SpiceInt naifPlanetSystemCode() const;
101 QString naifPlanetSystemName() const;
102 Distance radiusA() const;
103 Distance radiusB() const;
104 Distance radiusC() const;
105 Distance meanRadius() const;
106 Distance sigmaRadiusA() const;
107 Distance sigmaRadiusB() const;
108 Distance sigmaRadiusC() const;
110
111// void save(QXmlStreamWriter &stream, const Project *project, FileName newProjectRoot) const;
112// TODO: does xml stuff need project and newRoot???
113// void save(QXmlStreamWriter &stream, const Project *project) const;
114// TODO: does xml stuff need project???
115//
116// QDataStream &write(QDataStream &stream) const;
117// QDataStream &read(QDataStream &stream);
118
119 private:
126// class XmlHandler : public XmlStackedHandler {
127// public:
128// XmlHandler(TargetBody *TargetBody, Project *project);
129// TODO: does xml stuff need project???
130// ~XmlHandler();
131//
132// virtual bool startElement(const QString &namespaceURI, const QString &localName,
133// const QString &qName, const QXmlAttributes &atts);
134// virtual bool characters(const QString &ch);
135// virtual bool endElement(const QString &namespaceURI, const QString &localName,
136// const QString &qName);
137//
138// private:
139// Q_DISABLE_COPY(XmlHandler);
140//
141// TargetBody *m_xmlHandlerTargetBody;
142// Project *m_xmlHandlerProject; // TODO: does xml stuff need project???
143// QString m_xmlHandlerCharacters;
144// };
145
146 private:
147 TargetBody(const TargetBody &other); // NOTE: copy constructor & assignment operators
148 TargetBody &operator=(const TargetBody &rhs); // are private so compiler will generate error
149 // if trying to use them (because parent is
150 // QObject which uses Q_DISABLE_COPY macro
151 //testing
152 TargetQsp m_isisTarget;
153
158 QUuid *m_id;
159
163 QString m_targetName;
164
170 SpiceInt *m_bodyCode;
171
175 SpiceInt *m_systemCode;
176
180 QString m_systemName;
181
185 std::vector<Distance> m_radii;
186
190 std::vector<Distance> m_sigmaRadii;
191
195 TargetBodyDisplayProperties *m_displayProperties;
196
197 int m_frametype;
198
199 // The next three vectors will have length 3 (for a quadratic polynomial) if used.
200 std::vector<Angle> m_raPole;
201 std::vector<Angle> m_decPole;
202 std::vector<Angle> m_pm ;
203 //
204 // Currently multiples (terms with periods matching other terms but varying amplitudes)
205 // are handled as additional terms added to the end of the vector as Naif does (see
206 // comments in any of the standard Naif PCK.
207 std::vector<double> m_raNutPrec;
208 std::vector<double> m_decNutPrec;
209 std::vector<double> m_pmNutPrec;
210
211 // The periods of bodies in the same system are modeled with a linear equation
212 std::vector<Angle> m_sysNutPrec0;
213 std::vector<Angle> m_sysNutPrec1;
214 };
215
216 typedef QSharedPointer<TargetBody> TargetBodyQsp;
217
218 //
219
220 // operators to read/write TargetBody to/from binary data
221 QDataStream &operator<<(QDataStream &stream, const TargetBody &TargetBody);
222 QDataStream &operator>>(QDataStream &stream, TargetBody &TargetBody);
223};
224
226
227#endif // TargetBody_h
Q_DECLARE_METATYPE(Isis::TargetBodyQsp)
Distance measurement, usually in meters.
Definition Distance.h:34
This is the GUI communication mechanism for target body objects.
Definition TargetBodyDisplayProperties.h:63
Container class for TargetBody.
Definition TargetBody.h:65
std::vector< Angle > pmCoefs()
Returns coefficients of a quadratic polynomial fitting pole pm.
Definition TargetBody.cpp:250
TargetBodyDisplayProperties * displayProperties()
Gets TargetBodyDisplayProperties.
Definition TargetBody.cpp:195
Distance radiusB() const
Returns "b" radius.
Definition TargetBody.cpp:357
TargetBody(Target *target, QObject *parent=0)
The first constructor for this class.
Definition TargetBody.cpp:23
SpiceInt naifBodyCode() const
This returns the NAIF body code of the target.
Definition TargetBody.cpp:305
Distance sigmaRadiusC() const
Returns the "c" radius sigma.
Definition TargetBody.cpp:387
std::vector< Angle > poleDecCoefs()
Returns coefficients of a quadratic polynomial fitting pole dec.
Definition TargetBody.cpp:241
std::vector< double > poleDecNutPrecCoefs()
TargetBody::poleDecNutPrecCoefs.
Definition TargetBody.cpp:268
std::vector< Angle > sysNutPrecCoefs()
Returns Linear terms of planetary system nut/prec periods.
Definition TargetBody.cpp:294
std::vector< double > pmNutPrecCoefs()
Returns coefficients of the prime meridian nut/prec terms.
Definition TargetBody.cpp:277
int frameType()
Returns the frame type.
Definition TargetBody.cpp:223
QString id() const
Output format:
Definition TargetBody.cpp:580
Distance meanRadius() const
Returns the mean radius.
Definition TargetBody.cpp:397
bool operator==(const TargetBody &src) const
Compares two Target Body objects to see if they are equal.
Definition TargetBody.cpp:173
Distance sigmaRadiusB() const
Returns "b" radius sigma.
Definition TargetBody.cpp:367
std::vector< Angle > poleRaCoefs()
TargetBody::poleRaCoefs.
Definition TargetBody.cpp:232
~TargetBody()
The second constructor for this class.
Definition TargetBody.cpp:141
Distance sigmaMeanRadius() const
Returns the mean radius sigma.
Definition TargetBody.cpp:411
QString naifPlanetSystemName() const
This returns the body name of the target's planet system.
Definition TargetBody.cpp:327
std::vector< Angle > sysNutPrecConstants()
Returns constants of planetary system nut/prec periods.
Definition TargetBody.cpp:286
Distance radiusC() const
Returns the "c" radius.
Definition TargetBody.cpp:377
Distance radiusA() const
Returns "a" radius.
Definition TargetBody.cpp:337
std::vector< double > poleRaNutPrecCoefs()
Returns coefficients of pole right ascension nut/prec terms.
Definition TargetBody.cpp:259
Distance sigmaRadiusA() const
Returns "a" radius sigma.
Definition TargetBody.cpp:347
SpiceInt naifPlanetSystemCode() const
This returns the NAIF body code of the target's planet system.
Definition TargetBody.cpp:316
QString targetName()
Returns the value stored at TargetName in the original pvl label.
Definition TargetBody.cpp:214
This class is used to create and store valid Isis targets.
Definition Target.h:63
This is free and unencumbered software released into the public domain.
Definition Apollo.h:16
QSharedPointer< TargetBody > TargetBodyQsp
Defines A smart pointer to a TargetBody obj.
Definition TargetBody.h:216
std::istream & operator>>(std::istream &is, CSVReader &csv)
Input read operator for input stream sources.
Definition CSVReader.cpp:447
QDebug operator<<(QDebug debug, const Hillshade &hillshade)
Print this class out to a QDebug object.
Definition Hillshade.cpp:313