36 #ifndef PROFILESURFACE_OBJECT_H
37 #define PROFILESURFACE_OBJECT_H
63 class GeoTessMetaData;
124 {
return GeoTessProfileType::SURFACE; };
130 {
return (GeoTessProfile::operator==(p) &&
142 virtual double getValue(
int attributeIndex,
int nodeIndex)
const
144 return nodeIndex == 0 ? data->
getDouble(attributeIndex) : NaN_DOUBLE;
154 {
return data->
getDouble(attributeIndex); }
166 virtual bool isNaN(
int nodeIndex,
int attributeIndex)
168 return nodeIndex != 0 || data->
isNaN(attributeIndex);
176 int attributeIndex,
double radius,
177 bool allowRadiusOutOfRange)
const
179 return getData(0).getDouble(attributeIndex);
187 {
return NaN_FLOAT; };
223 virtual void setData(
const vector<GeoTessData*>& inData)
224 {
delete data; data = inData[0]; }
230 {
delete data; data = inData; }
236 virtual void setRadii(
const vector<float>& newRadii)
246 {
return NaN_FLOAT; };
262 {
return NaN_FLOAT; };
280 data(NULL), pointIndex(-1)
281 { data = GeoTessData::getData(ifs, gtmd); };
286 GeoTessProfileSurface(IFStreamAscii& ifs, GeoTessMetaData& gtmd) : GeoTessProfile(),
287 data(NULL), pointIndex(-1)
288 { data = GeoTessData::getData(ifs, gtmd); };
294 virtual ~GeoTessProfileSurface() {
if (data != NULL)
delete data; };
299 virtual void write(IFStreamBinary& ofs)
300 { ofs.writeByte((
byte) GeoTessProfileType::SURFACE.ordinal());
306 virtual void write(IFStreamAscii& ofs)
307 { ofs.writeInt(GeoTessProfileType::SURFACE.ordinal());
320 virtual int findClosestRadiusIndex(
double radius)
const
331 virtual void setPointIndex(
int nodeIndex,
int pntIndex)
332 { pointIndex = pntIndex; }
342 virtual void resetPointIndices() { pointIndex = -1; }
352 virtual int getPointIndex(
int nodeIndex)
const
353 {
return pointIndex; }
359 virtual GeoTessProfile* copy()
361 return new GeoTessProfileSurface(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 GeoTessData ** getData()
A Profile object that defines a single Data object and no radius value.
virtual const GeoTessProfileType & getType() const
virtual void setRadii(const vector< float > &newRadii)
virtual double getValueTop(int attributeIndex) const
virtual GeoTessData * getData(int i)
virtual bool isNaN(int nodeIndex, int attributeIndex)
virtual float getRadiusTop() const
virtual float getRadius(int i) const
virtual GeoTessData * getDataBottom()
virtual double getValue(const GeoTessInterpolatorType &rInterpType, int attributeIndex, double radius, bool allowRadiusOutOfRange) const
virtual void setRadius(int index, float radius)
virtual int getNData() const
virtual GeoTessData ** getData()
virtual const GeoTessData & getDataTop() const
GeoTessProfileSurface(GeoTessData *dat)
virtual void setData(const vector< GeoTessData * > &inData)
virtual int getNRadii() const
virtual float * getRadii()
virtual GeoTessData * getDataTop()
virtual int class_size() const
virtual float getRadiusBottom() const
virtual LONG_INT getMemory()
virtual double getValue(int attributeIndex, int nodeIndex) const
static string class_name()
virtual const GeoTessData & getDataBottom() const
virtual const GeoTessData & getData(int i) const
virtual void setData(int index, GeoTessData *inData)
Enumeration of the valid Profile types, including EMPTY, THIN, CONSTANT, NPOINT and SURFACE.
Opens a file for binary read and write access.