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
28
29class QDataStream;
30class QUuid;
31class QXmlStreamWriter;
32
33namespace Isis {
34 //class Distance;
35 class FileName;
36 class Project; // TODO: does xml stuff need project???
37 class PvlObject;
38 class TargetBodyDisplayProperties;
39
63 class TargetBody : public QObject {
64
65 Q_OBJECT
66
67 public:
68 TargetBody(Target *target, QObject *parent = 0);
70
71 bool operator==(const TargetBody &src) const;
72
75
76 QString id() const;
77 QString targetName();
78// void deleteFromDisk();
79
80 int frameType();
81
82 std::vector<Angle> poleRaCoefs();
83 std::vector<Angle> poleDecCoefs();
84 std::vector<Angle> pmCoefs();
85
86 std::vector<double> poleRaNutPrecCoefs();
87 std::vector<double> poleDecNutPrecCoefs();
88
89 std::vector<double> pmNutPrecCoefs();
90
91 std::vector<Angle> sysNutPrecConstants();
92 std::vector<Angle> sysNutPrecCoefs();
93
94 SpiceInt naifBodyCode() const;
95 SpiceInt naifPlanetSystemCode() const;
96 QString naifPlanetSystemName() const;
97 Distance radiusA() const;
98 Distance radiusB() const;
99 Distance radiusC() const;
100 Distance meanRadius() const;
101 Distance sigmaRadiusA() const;
102 Distance sigmaRadiusB() const;
103 Distance sigmaRadiusC() const;
105
106// void save(QXmlStreamWriter &stream, const Project *project, FileName newProjectRoot) const;
107// TODO: does xml stuff need project and newRoot???
108// void save(QXmlStreamWriter &stream, const Project *project) const;
109// TODO: does xml stuff need project???
110//
111// QDataStream &write(QDataStream &stream) const;
112// QDataStream &read(QDataStream &stream);
113
114 private:
115 TargetBody(const TargetBody &other); // NOTE: copy constructor & assignment operators
116 TargetBody &operator=(const TargetBody &rhs); // are private so compiler will generate error
117 // if trying to use them (because parent is
118 // QObject which uses Q_DISABLE_COPY macro
119 //testing
120 TargetQsp m_isisTarget;
121
126 QUuid *m_id;
127
131 QString m_targetName;
132
138 SpiceInt *m_bodyCode;
139
143 SpiceInt *m_systemCode;
144
148 QString m_systemName;
149
153 std::vector<Distance> m_radii;
154
158 std::vector<Distance> m_sigmaRadii;
159
163 TargetBodyDisplayProperties *m_displayProperties;
164
165 int m_frametype;
166
167 // The next three vectors will have length 3 (for a quadratic polynomial) if used.
168 std::vector<Angle> m_raPole;
169 std::vector<Angle> m_decPole;
170 std::vector<Angle> m_pm ;
171 //
172 // Currently multiples (terms with periods matching other terms but varying amplitudes)
173 // are handled as additional terms added to the end of the vector as Naif does (see
174 // comments in any of the standard Naif PCK.
175 std::vector<double> m_raNutPrec;
176 std::vector<double> m_decNutPrec;
177 std::vector<double> m_pmNutPrec;
178
179 // The periods of bodies in the same system are modeled with a linear equation
180 std::vector<Angle> m_sysNutPrec0;
181 std::vector<Angle> m_sysNutPrec1;
182 };
183
184 typedef QSharedPointer<TargetBody> TargetBodyQsp;
185
186 //
187
188 // operators to read/write TargetBody to/from binary data
189 QDataStream &operator<<(QDataStream &stream, const TargetBody &TargetBody);
190 QDataStream &operator>>(QDataStream &stream, TargetBody &TargetBody);
191};
192
194
195#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:61
Container class for TargetBody.
Definition TargetBody.h:63
std::vector< Angle > pmCoefs()
Returns coefficients of a quadratic polynomial fitting pole pm.
Definition TargetBody.cpp:240
TargetBodyDisplayProperties * displayProperties()
Gets TargetBodyDisplayProperties.
Definition TargetBody.cpp:185
Distance radiusB() const
Returns "b" radius.
Definition TargetBody.cpp:347
TargetBody(Target *target, QObject *parent=0)
The first constructor for this class.
Definition TargetBody.cpp:22
SpiceInt naifBodyCode() const
This returns the NAIF body code of the target.
Definition TargetBody.cpp:295
Distance sigmaRadiusC() const
Returns the "c" radius sigma.
Definition TargetBody.cpp:377
std::vector< Angle > poleDecCoefs()
Returns coefficients of a quadratic polynomial fitting pole dec.
Definition TargetBody.cpp:231
std::vector< double > poleDecNutPrecCoefs()
TargetBody::poleDecNutPrecCoefs.
Definition TargetBody.cpp:258
std::vector< Angle > sysNutPrecCoefs()
Returns Linear terms of planetary system nut/prec periods.
Definition TargetBody.cpp:284
std::vector< double > pmNutPrecCoefs()
Returns coefficients of the prime meridian nut/prec terms.
Definition TargetBody.cpp:267
int frameType()
Returns the frame type.
Definition TargetBody.cpp:213
QString id() const
Get a unique, identifying string associated with this TargetBody object.
Definition TargetBody.cpp:415
Distance meanRadius() const
Returns the mean radius.
Definition TargetBody.cpp:387
bool operator==(const TargetBody &src) const
Compares two Target Body objects to see if they are equal.
Definition TargetBody.cpp:163
Distance sigmaRadiusB() const
Returns "b" radius sigma.
Definition TargetBody.cpp:357
std::vector< Angle > poleRaCoefs()
TargetBody::poleRaCoefs.
Definition TargetBody.cpp:222
~TargetBody()
The second constructor for this class.
Definition TargetBody.cpp:131
Distance sigmaMeanRadius() const
Returns the mean radius sigma.
Definition TargetBody.cpp:401
QString naifPlanetSystemName() const
This returns the body name of the target's planet system.
Definition TargetBody.cpp:317
std::vector< Angle > sysNutPrecConstants()
Returns constants of planetary system nut/prec periods.
Definition TargetBody.cpp:276
Distance radiusC() const
Returns the "c" radius.
Definition TargetBody.cpp:367
Distance radiusA() const
Returns "a" radius.
Definition TargetBody.cpp:327
std::vector< double > poleRaNutPrecCoefs()
Returns coefficients of pole right ascension nut/prec terms.
Definition TargetBody.cpp:249
Distance sigmaRadiusA() const
Returns "a" radius sigma.
Definition TargetBody.cpp:337
SpiceInt naifPlanetSystemCode() const
This returns the NAIF body code of the target's planet system.
Definition TargetBody.cpp:306
QString targetName()
Returns the value stored at TargetName in the original pvl label.
Definition TargetBody.cpp:204
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:184
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