36 #ifndef PROFILETHIN_OBJECT_H
37 #define PROFILETHIN_OBJECT_H
62 class GeoTessMetaData;
126 {
return GeoTessProfileType::THIN; };
132 {
return (GeoTessProfile::operator==(p) && (radius == p.
getRadius(0)) && (*data == p.
getData(0))); }
142 virtual double getValue(
int attributeIndex,
int nodeIndex)
const
143 {
return nodeIndex == 0 ? data->
getDouble(attributeIndex) : NaN_DOUBLE; }
155 int attributeIndex,
double r,
bool allowRadiusOutOfRange)
const
157 if (!allowRadiusOutOfRange &&
158 ((r < getRadiusBottom()) || (r > getRadiusTop())))
167 return getValue(attributeIndex, 0);
177 {
return data->
getDouble(attributeIndex); }
189 virtual bool isNaN(
int nodeIndex,
int attributeIndex)
191 return nodeIndex != 0 || data->
isNaN(attributeIndex);
198 virtual float getRadius(
int i)
const {
return radius; };
214 {
float* fa =
new float [1]; fa[0] = radius;
return fa; };
235 virtual void setData(
const vector<GeoTessData*>& inData)
236 {
delete data; data = inData[0]; }
241 virtual void setRadii(
const vector<float>& newRadii)
242 { radius = newRadii[0]; }
245 {
if (index == 0) radius = newRadius; }
251 {
delete data; data = inData; }
289 radius(-1.0), data(NULL), pointIndex(-1)
290 { radius = ifs.
readFloat(); data = GeoTessData::getData(ifs, gtmd); };
295 GeoTessProfileThin(IFStreamAscii& ifs, GeoTessMetaData& gtmd) : GeoTessProfile(),
296 radius(-1.0), data(NULL), pointIndex(-1)
297 { radius = ifs.readFloat(); data = GeoTessData::getData(ifs, gtmd); };
303 virtual ~GeoTessProfileThin() {
if (data != NULL)
delete data; };
308 virtual void write(IFStreamBinary& ofs)
309 { ofs.writeByte((
byte) GeoTessProfileType::THIN.ordinal());
310 ofs.writeFloat(radius); data->write(ofs); };
315 virtual void write(IFStreamAscii& ofs)
316 { ofs.writeInt(GeoTessProfileType::THIN.ordinal());
317 ofs.writeString(
" ");
318 ofs.writeFloat(radius);
330 virtual int findClosestRadiusIndex(
double r)
const
340 virtual void setPointIndex(
int nodeIndex,
int pntIndex)
341 { pointIndex = pntIndex; }
350 virtual void resetPointIndices() { pointIndex = -1; }
359 virtual int getPointIndex(
int nodeIndex)
const
360 {
return pointIndex; }
365 virtual GeoTessProfile* copy()
367 return new GeoTessProfileThin(radius, data->copy());
Abstract base class that manages the data values attached to a single grid point.
virtual LONG_INT getMemory()
virtual double getDouble(int attributeIndex) const
virtual bool isNaN(int attributeIndex) const
Enumeration of the interpolation algorithms supported by GeoTess including LINEAR,...
Abstract class that manages the radii and data values that span a single layer associated with a sing...
virtual float getRadius(int i) const
virtual GeoTessData ** getData()
A Profile object consiting of a single radius value and a single Data object. It represents a profile...
virtual const GeoTessData & getDataBottom() const
virtual void setRadii(const vector< float > &newRadii)
virtual GeoTessData * getDataBottom()
virtual float getRadiusTop() const
virtual GeoTessData * getData(int i)
virtual const GeoTessData & getData(int i) const
virtual float * getRadii()
virtual int getNRadii() const
virtual double getValue(const GeoTessInterpolatorType &rInterpType, int attributeIndex, double r, bool allowRadiusOutOfRange) const
virtual LONG_INT getMemory()
virtual float getRadiusBottom() const
virtual int getNData() const
virtual int class_size() const
virtual bool isNaN(int nodeIndex, int attributeIndex)
virtual void setData(const vector< GeoTessData * > &inData)
GeoTessProfileThin(float rad, GeoTessData *dat)
virtual GeoTessData * getDataTop()
virtual double getValueTop(int attributeIndex) const
virtual double getValue(int attributeIndex, int nodeIndex) const
virtual void setRadius(int index, float newRadius)
virtual const GeoTessData & getDataTop() const
virtual const GeoTessProfileType & getType() const
virtual void setData(int index, GeoTessData *inData)
static string class_name()
virtual GeoTessData ** getData()
virtual float getRadius(int i) const
Enumeration of the valid Profile types, including EMPTY, THIN, CONSTANT, NPOINT and SURFACE.
Opens a file for binary read and write access.