9#ifndef CUBE_CALCULATOR_H_
10#define CUBE_CALCULATOR_H_
69 QVector<Cube *> &inCubes,
88 void addMethodCall(
void (
Calculator::*method)(
void));
90 int lastPushToCubeStats(QVector<Cube *> &inCubes);
92 int lastPushToCubeCameras(QVector<Cube *> &inCubes);
99 QVector<Calculations> *m_calculations;
105 QVector<DataValue> *m_dataDefinitions;
108 QVector<Statistics *> *m_cubeStats;
114 QVector<Camera *> *m_cubeCameras;
120 QVector<CameraBuffers *> *m_cameraBuffers;
161 DataValueType
type();
167 double m_constantValue;
169 DataValueType m_type;
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);
223 void loadBuffers(
int currentLine,
int ns,
int currentBand);
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;
Calculator for arrays.
Definition Calculator.h:55
This class is used to manage buffers for calculating camera related information, such as angles,...
Definition CubeCalculator.h:187
void enableLonBuffer()
Enables the longitude buffer for use.
Definition CubeCalculator.cpp:1012
void enableLatBuffer()
Enables the latitude buffer for use.
Definition CubeCalculator.cpp:1006
QVector< double > * inalBuffer(int currentLine, int ns, int currentBand)
Definition CubeCalculator.cpp:1113
void enablePhalBuffer()
Enables the local phase angle buffer for use.
Definition CubeCalculator.cpp:1030
void enableResBuffer()
Enables the resolution buffer for use.
Definition CubeCalculator.cpp:1018
QVector< double > * emalBuffer(int currentLine, int ns, int currentBand)
Definition CubeCalculator.cpp:1119
QVector< double > * emaBuffer(int currentLine, int ns, int currentBand)
Definition CubeCalculator.cpp:1077
void enablePhaBuffer()
Enables the phase angle buffer for use.
Definition CubeCalculator.cpp:988
void enableRadiusBuffer()
Enables the radius buffer for use.
Definition CubeCalculator.cpp:1024
CameraBuffers(Camera *camera)
Constructs a CameraBuffers object.
Definition CubeCalculator.cpp:933
QVector< double > * phacBuffer(int currentLine, int ns, int currentBand)
Definition CubeCalculator.cpp:1125
void enableInalBuffer()
Enables the local incidence angle buffer for use.
Definition CubeCalculator.cpp:1036
QVector< double > * emacBuffer(int currentLine, int ns, int currentBand)
Definition CubeCalculator.cpp:1137
QVector< double > * latBuffer(int currentLine, int ns, int currentBand)
Definition CubeCalculator.cpp:1083
void enableInaBuffer()
Enables the incidence angle buffer for use.
Definition CubeCalculator.cpp:994
void enableEmalBuffer()
Enables the local emission angle buffer for use.
Definition CubeCalculator.cpp:1042
QVector< double > * inacBuffer(int currentLine, int ns, int currentBand)
Definition CubeCalculator.cpp:1131
QVector< double > * inaBuffer(int currentLine, int ns, int currentBand)
Definition CubeCalculator.cpp:1071
~CameraBuffers()
Destroys the CameraBuffers.
Definition CubeCalculator.cpp:956
void enableEmacBuffer()
Enables the center emission angle buffer for use.
Definition CubeCalculator.cpp:1060
void enableInacBuffer()
Enables the center incidence angle buffer for use.
Definition CubeCalculator.cpp:1054
void enableEmaBuffer()
Enables the emission angle buffer for use.
Definition CubeCalculator.cpp:1000
QVector< double > * radiusBuffer(int currentLine, int ns, int currentBand)
Definition CubeCalculator.cpp:1101
QVector< double > * resBuffer(int currentLine, int ns, int currentBand)
Definition CubeCalculator.cpp:1095
QVector< double > * phaBuffer(int currentLine, int ns, int currentBand)
Definition CubeCalculator.cpp:1065
QVector< double > * lonBuffer(int currentLine, int ns, int currentBand)
Definition CubeCalculator.cpp:1089
QVector< double > * phalBuffer(int currentLine, int ns, int currentBand)
Definition CubeCalculator.cpp:1107
void enablePhacBuffer()
Enables the center phase angle buffer for use.
Definition CubeCalculator.cpp:1048
Calculator for arrays.
Definition CubeCalculator.h:57
~CubeCalculator()
Destroys the CubeCalculator object.
Definition CubeCalculator.cpp:42
CubeCalculator()
Constructs a CubeCalculator.
Definition CubeCalculator.cpp:22
void Clear()
This method completely resets the calculator.
Definition CubeCalculator.cpp:64
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
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
IO Handler for Isis Cubes.
Definition Cube.h:168
This class is used to define what kind of data is being pushed onto the cube calculator.
Definition CubeCalculator.h:132
int cubeIndex()
Accesses the cube index of the DataValue.
Definition CubeCalculator.cpp:913
double constant()
Accesses the constant value of the DataValue.
Definition CubeCalculator.cpp:923
DataValue()
Constructs a default DataValue.
Definition CubeCalculator.cpp:840
DataValueType
This is used to tell what kind of data to push onto the RPN calculator.
Definition CubeCalculator.h:135
@ InaData
Incidence camera data.
Definition CubeCalculator.h:141
@ PhacData
Center phase camera data.
Definition CubeCalculator.h:153
@ EmalData
Local emission camera data.
Definition CubeCalculator.h:149
@ PhaData
Phase camera data.
Definition CubeCalculator.h:143
@ InalData
Local incidence camera data.
Definition CubeCalculator.h:148
@ EmaData
Emission camera data.
Definition CubeCalculator.h:142
@ LatData
Latitude camera data.
Definition CubeCalculator.h:144
@ Sample
Current sample number.
Definition CubeCalculator.h:137
@ Band
Current band number.
Definition CubeCalculator.h:139
@ ResData
Pixel resolution camera data.
Definition CubeCalculator.h:146
@ Constant
A single constant value.
Definition CubeCalculator.h:136
@ InacData
Center incidence camera data.
Definition CubeCalculator.h:151
@ PhalData
Local phase camera data.
Definition CubeCalculator.h:150
@ Line
Current line number.
Definition CubeCalculator.h:138
@ RadiusData
DEM radius.
Definition CubeCalculator.h:147
@ LonData
Longitude camera data.
Definition CubeCalculator.h:145
@ CubeData
A brick of cube data.
Definition CubeCalculator.h:140
@ EmacData
Center emission camera data.
Definition CubeCalculator.h:152
DataValueType type()
Accesses the type of the DataValue.
Definition CubeCalculator.cpp:903
This is free and unencumbered software released into the public domain.
Definition Calculator.h:18
This is free and unencumbered software released into the public domain.
Definition Apollo.h:16