Isis Developer Reference
CubeCalculator.h
Go to the documentation of this file.
1 
6 /* SPDX-License-Identifier: CC0-1.0 */
7 
8 // Calculator.h
9 #ifndef CUBE_CALCULATOR_H_
10 #define CUBE_CALCULATOR_H_
11 
12 #include "Calculator.h"
13 #include "Cube.h"
14 
15 class QString;
16 template<class T> class QVector;
17 
18 namespace Isis {
19  class DataValue;
20  class CameraBuffers;
21 
58  public:
61 
66  void Clear();
67 
68  void prepareCalculations(QString equation,
69  QVector<Cube *> &inCubes,
70  Cube *outCube);
71 
73  int line, int band);
74 
75  private:
81  enum Calculations {
83  CallNextMethod,
85  PushNextData
86  };
87 
88  void addMethodCall(void (Calculator::*method)(void));
89 
90  int lastPushToCubeStats(QVector<Cube *> &inCubes);
91 
92  int lastPushToCubeCameras(QVector<Cube *> &inCubes);
93 
99  QVector<Calculations> *m_calculations;
100 
102  QVector<void (Calculator:: *)(void)> *m_methods;
103 
105  QVector<DataValue> *m_dataDefinitions;
106 
108  QVector<Statistics *> *m_cubeStats;
109 
114  QVector<Camera *> *m_cubeCameras;
115 
120  QVector<CameraBuffers *> *m_cameraBuffers;
121 
122  int m_outputSamples;
123  };
124 
125 
132  class DataValue {
133  public:
153  PhacData
154  };
155 
156  DataValue();
159  DataValue(DataValueType type, double value);
160 
162  int cubeIndex();
163  double constant();
164 
165  private:
166  int m_cubeIndex;
167  double m_constantValue;
168 
169  DataValueType m_type;
170  };
171 
172 
188  public:
189  CameraBuffers(Camera *camera);
190  ~CameraBuffers();
191 
192  void enablePhaBuffer();
193  void enableInaBuffer();
194  void enableEmaBuffer();
195  void enableLatBuffer();
196  void enableLonBuffer();
197  void enableResBuffer();
198  void enableRadiusBuffer();
199  void enablePhalBuffer();
200  void enableInalBuffer();
201  void enableEmalBuffer();
202  void enablePhacBuffer();
203  void enableInacBuffer();
204  void enableEmacBuffer();
205 
206  // Accessors
207  QVector<double> *phaBuffer(int currentLine, int ns, int currentBand);
208  QVector<double> *inaBuffer(int currentLine, int ns, int currentBand);
209  QVector<double> *emaBuffer(int currentLine, int ns, int currentBand);
210  QVector<double> *latBuffer(int currentLine, int ns, int currentBand);
211  QVector<double> *lonBuffer(int currentLine, int ns, int currentBand);
212  QVector<double> *resBuffer(int currentLine, int ns, int currentBand);
213  QVector<double> *radiusBuffer(int currentLine, int ns, int currentBand);
214  QVector<double> *phalBuffer(int currentLine, int ns, int currentBand);
215  QVector<double> *inalBuffer(int currentLine, int ns, int currentBand);
216  QVector<double> *emalBuffer(int currentLine, int ns, int currentBand);
217  QVector<double> *phacBuffer(int currentLine, int ns, int currentBand);
218  QVector<double> *inacBuffer(int currentLine, int ns, int currentBand);
219  QVector<double> *emacBuffer(int currentLine, int ns, int currentBand);
220 
221 
222  private:
223  void loadBuffers(int currentLine, int ns, int currentBand);
224 
225  Camera *m_camera;
226  int m_lastLine;
227 
228  QVector<double> *m_phaBuffer;
229  QVector<double> *m_inaBuffer;
230  QVector<double> *m_emaBuffer;
231  QVector<double> *m_phalBuffer;
232  QVector<double> *m_inalBuffer;
233  QVector<double> *m_emalBuffer;
234  QVector<double> *m_phacBuffer;
235  QVector<double> *m_inacBuffer;
236  QVector<double> *m_emacBuffer;
237  QVector<double> *m_resBuffer;
238  QVector<double> *m_latBuffer;
239  QVector<double> *m_lonBuffer;
240  QVector<double> *m_radiusBuffer;
241  };
242 }
243 #endif
Isis::IString::ToDouble
double ToDouble() const
Returns the floating point value the IString represents.
Definition: IString.cpp:799
Isis::DataValue::constant
double constant()
Accesses the constant value of the DataValue.
Definition: CubeCalculator.cpp:923
Isis::CameraBuffers::enableInaBuffer
void enableInaBuffer()
Enables the incidence angle buffer for use.
Definition: CubeCalculator.cpp:994
Cube.h
Isis::CameraBuffers::enablePhaBuffer
void enablePhaBuffer()
Enables the phase angle buffer for use.
Definition: CubeCalculator.cpp:988
Isis::DataValue::PhacData
@ PhacData
Center phase camera data.
Definition: CubeCalculator.h:153
Isis::DataValue::Line
@ Line
Current line number.
Definition: CubeCalculator.h:138
Isis::PI
const double PI
The mathematical constant PI.
Definition: Constants.h:40
Isis::Average
Functor for reduce using average functionality.
Definition: Reduce.h:107
Calculator.h
Isis::CameraBuffers::inalBuffer
QVector< double > * inalBuffer(int currentLine, int ns, int currentBand)
Definition: CubeCalculator.cpp:1113
Isis::CameraBuffers::enableLatBuffer
void enableLatBuffer()
Enables the latitude buffer for use.
Definition: CubeCalculator.cpp:1006
Isis::CameraBuffers::inacBuffer
QVector< double > * inacBuffer(int currentLine, int ns, int currentBand)
Definition: CubeCalculator.cpp:1131
Isis::DataValue::RadiusData
@ RadiusData
DEM radius.
Definition: CubeCalculator.h:147
Isis::CameraBuffers::enablePhalBuffer
void enablePhalBuffer()
Enables the local phase angle buffer for use.
Definition: CubeCalculator.cpp:1030
Isis::CameraBuffers::enablePhacBuffer
void enablePhacBuffer()
Enables the center phase angle buffer for use.
Definition: CubeCalculator.cpp:1048
Isis::Calculator
Calculator for arrays.
Definition: Calculator.h:55
Isis::CubeCalculator
Calculator for arrays.
Definition: CubeCalculator.h:57
Isis::CubeCalculator::runCalculations
QVector< double > runCalculations(QVector< Buffer * > &cubeData, int line, int band)
This method will execute the calculations built up when PrepareCalculations was called.
Definition: CubeCalculator.cpp:114
Isis::CameraBuffers::latBuffer
QVector< double > * latBuffer(int currentLine, int ns, int currentBand)
Definition: CubeCalculator.cpp:1083
Isis::DataValue::type
DataValueType type()
Accesses the type of the DataValue.
Definition: CubeCalculator.cpp:903
Isis::DataValue::PhalData
@ PhalData
Local phase camera data.
Definition: CubeCalculator.h:150
Isis::CubeCalculator::~CubeCalculator
~CubeCalculator()
Destroys the CubeCalculator object.
Definition: CubeCalculator.cpp:42
Isis::CameraBuffers::lonBuffer
QVector< double > * lonBuffer(int currentLine, int ns, int currentBand)
Definition: CubeCalculator.cpp:1089
Isis::CameraBuffers::phaBuffer
QVector< double > * phaBuffer(int currentLine, int ns, int currentBand)
Definition: CubeCalculator.cpp:1065
Isis::CubeCalculator::CubeCalculator
CubeCalculator()
Constructs a CubeCalculator.
Definition: CubeCalculator.cpp:22
Isis::DataValue::InaData
@ InaData
Incidence camera data.
Definition: CubeCalculator.h:141
Isis::Camera
Definition: Camera.h:236
Isis::IString::ToInteger
int ToInteger() const
Returns the object string as an integer.
Definition: IString.cpp:718
Isis::CameraBuffers::resBuffer
QVector< double > * resBuffer(int currentLine, int ns, int currentBand)
Definition: CubeCalculator.cpp:1095
IString.h
Isis::DataValue::ResData
@ ResData
Pixel resolution camera data.
Definition: CubeCalculator.h:146
Isis::DataValue::Constant
@ Constant
A single constant value.
Definition: CubeCalculator.h:136
Isis::CameraBuffers::enableEmaBuffer
void enableEmaBuffer()
Enables the emission angle buffer for use.
Definition: CubeCalculator.cpp:1000
Isis::CameraBuffers::CameraBuffers
CameraBuffers(Camera *camera)
Constructs a CameraBuffers object.
Definition: CubeCalculator.cpp:933
Isis::DataValue::EmalData
@ EmalData
Local emission camera data.
Definition: CubeCalculator.h:149
Isis::CameraBuffers::enableInalBuffer
void enableInalBuffer()
Enables the local incidence angle buffer for use.
Definition: CubeCalculator.cpp:1036
Isis::DataValue::InacData
@ InacData
Center incidence camera data.
Definition: CubeCalculator.h:151
Isis::CameraBuffers::enableEmalBuffer
void enableEmalBuffer()
Enables the local emission angle buffer for use.
Definition: CubeCalculator.cpp:1042
_FILEINFO_
#define _FILEINFO_
Macro for the filename and line number.
Definition: IException.h:24
Isis::CameraBuffers::enableRadiusBuffer
void enableRadiusBuffer()
Enables the radius buffer for use.
Definition: CubeCalculator.cpp:1024
Isis::DataValue::Sample
@ Sample
Current sample number.
Definition: CubeCalculator.h:137
Isis::CameraBuffers::enableEmacBuffer
void enableEmacBuffer()
Enables the center emission angle buffer for use.
Definition: CubeCalculator.cpp:1060
Isis::DataValue::LonData
@ LonData
Longitude camera data.
Definition: CubeCalculator.h:145
Isis::CameraBuffers::enableInacBuffer
void enableInacBuffer()
Enables the center incidence angle buffer for use.
Definition: CubeCalculator.cpp:1054
Isis::DataValue::InalData
@ InalData
Local incidence camera data.
Definition: CubeCalculator.h:148
Isis::CubeCalculator::prepareCalculations
void prepareCalculations(QString equation, QVector< Cube * > &inCubes, Cube *outCube)
This method builds a list of actions to perform based on the postfix expression.
Definition: CubeCalculator.cpp:249
Isis::Cube::sampleCount
int sampleCount() const
Definition: Cube.cpp:1807
Isis::DataValue::DataValueType
DataValueType
This is used to tell what kind of data to push onto the RPN calculator.
Definition: CubeCalculator.h:135
Isis::Cube
IO Handler for Isis Cubes.
Definition: Cube.h:167
Isis::DataValue::cubeIndex
int cubeIndex()
Accesses the cube index of the DataValue.
Definition: CubeCalculator.cpp:913
Isis::IException
Isis exception class.
Definition: IException.h:91
Isis::CameraBuffers::emacBuffer
QVector< double > * emacBuffer(int currentLine, int ns, int currentBand)
Definition: CubeCalculator.cpp:1137
Isis::CameraBuffers::radiusBuffer
QVector< double > * radiusBuffer(int currentLine, int ns, int currentBand)
Definition: CubeCalculator.cpp:1101
Isis::CameraBuffers::phacBuffer
QVector< double > * phacBuffer(int currentLine, int ns, int currentBand)
Definition: CubeCalculator.cpp:1125
Camera.h
Isis::CameraBuffers::inaBuffer
QVector< double > * inaBuffer(int currentLine, int ns, int currentBand)
Definition: CubeCalculator.cpp:1071
Isis::DataValue::Band
@ Band
Current band number.
Definition: CubeCalculator.h:139
Isis::DataValue::EmacData
@ EmacData
Center emission camera data.
Definition: CubeCalculator.h:152
Isis::CameraBuffers::enableLonBuffer
void enableLonBuffer()
Enables the longitude buffer for use.
Definition: CubeCalculator.cpp:1012
Isis::CameraBuffers::emaBuffer
QVector< double > * emaBuffer(int currentLine, int ns, int currentBand)
Definition: CubeCalculator.cpp:1077
Isis::DataValue::CubeData
@ CubeData
A brick of cube data.
Definition: CubeCalculator.h:140
Isis::DataValue::PhaData
@ PhaData
Phase camera data.
Definition: CubeCalculator.h:143
Statistics.h
std
Namespace for the standard library.
Isis::CameraBuffers::phalBuffer
QVector< double > * phalBuffer(int currentLine, int ns, int currentBand)
Definition: CubeCalculator.cpp:1107
Isis::CameraBuffers::emalBuffer
QVector< double > * emalBuffer(int currentLine, int ns, int currentBand)
Definition: CubeCalculator.cpp:1119
Isis::IString::Token
IString Token(const IString &separator)
Returns the first token in the IString.
Definition: IString.cpp:897
Angle.h
Isis::E
const double E
Sets some basic constants for use in ISIS programming.
Definition: Constants.h:39
Isis::DataValue
This class is used to define what kind of data is being pushed onto the cube calculator.
Definition: CubeCalculator.h:132
Isis::CameraBuffers::~CameraBuffers
~CameraBuffers()
Destroys the CameraBuffers.
Definition: CubeCalculator.cpp:956
CubeCalculator.h
Isis::IString
Adds specific functionality to C++ strings.
Definition: IString.h:165
Distance.h
QVector< Calculations >
Isis::DataValue::EmaData
@ EmaData
Emission camera data.
Definition: CubeCalculator.h:142
Isis::CubeCalculator::Clear
void Clear()
This method completely resets the calculator.
Definition: CubeCalculator.cpp:64
Isis::DataValue::LatData
@ LatData
Latitude camera data.
Definition: CubeCalculator.h:144
Isis
This is free and unencumbered software released into the public domain.
Definition: Apollo.h:16
Isis::IString::ToQt
QString ToQt() const
Retuns the object string as a QString.
Definition: IString.cpp:869
Isis::CameraBuffers::enableResBuffer
void enableResBuffer()
Enables the resolution buffer for use.
Definition: CubeCalculator.cpp:1018
Isis::CameraBuffers
This class is used to manage buffers for calculating camera related information, such as angles,...
Definition: CubeCalculator.h:187
Isis::DataValue::DataValue
DataValue()
Constructs a default DataValue.
Definition: CubeCalculator.cpp:840