00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #ifndef _RECTGRID_H
00034 #define _RECTGRID_H
00035
00036 #include "GeomObject.h"
00037
00038 namespace Go
00039 {
00042
00043
00046 class RectGrid : public GeomObject
00047 {
00048 public:
00049
00052 RectGrid()
00053 : numu_(0), numv_(0), dim_(-1)
00054 {
00055 }
00056
00065 RectGrid(int numu, int numv, int dim, double* pts)
00066 : numu_(numu), numv_(numv), dim_(dim),
00067 points_(pts, pts + numu*numv*dim)
00068 {
00069 }
00071 virtual ~RectGrid();
00072
00073
00074 virtual BoundingBox boundingBox() const;
00075
00076
00077 virtual int dimension() const;
00078
00079
00080 virtual ClassType instanceType() const;
00081
00082
00083 static ClassType classType()
00084 {
00085 return Class_RectGrid;
00086 }
00087
00088
00089 virtual GeomObject* clone() const
00090 {
00091 return new RectGrid(*this);
00092 }
00093
00094
00095 void read(std::istream& is);
00096
00097
00098 void write(std::ostream& os) const;
00099
00108 void setGrid(int numu, int numv, int dim, const double* pts)
00109 {
00110 std::vector<double> tmp(pts, pts + numu*numv*dim);
00111 points_.swap(tmp);
00112 numu_ = numu;
00113 numv_ = numv;
00114 dim_ = dim;
00115 }
00116
00119 int numCoefs_u() const
00120 {
00121 return numu_;
00122 }
00123
00126 int numCoefs_v() const
00127 {
00128 return numv_;
00129 }
00130
00134 double* rawData()
00135 {
00136 return &points_[0];
00137 }
00138
00142 const double* rawData() const
00143 {
00144 return &points_[0];
00145 }
00146
00147 void swapDirections();
00148
00149 private:
00150 int numu_;
00151 int numv_;
00152 int dim_;
00153 std::vector<double> points_;
00154 };
00155
00157 }
00158
00159
00160 #endif // _RECTGRID_H
00161
00162