00001 #ifndef FLOWGEOMETRY_H 00002 #define FLOWGEOMETRY_H 00003 00004 #include <stdio.h> 00005 #include <iostream> 00006 #include "vec3.h" 00008 class FlowGeometry{ 00009 friend class FlowData; 00010 private: 00012 int dim[2]; 00014 vec3 boundaryMin; 00016 vec3 boundaryMax; 00018 vec3 boundarySize; 00019 00021 vec3* geometryData; 00022 00024 int getVtxX(int vtxID); 00026 int getVtxY(int vtxID); 00027 00029 int getXYvtx(vec3 pos); 00030 00032 float getPosX(int vtxID); 00034 float getPosY(int vtxID); 00035 00037 bool isFlipped; 00038 00040 int getNearestVtx(vec3 pos); 00041 00042 public: 00043 FlowGeometry(); 00045 ~FlowGeometry(); 00046 00048 00055 bool getInterpolationAt(vec3 pos, int* vtxID, float* coef); 00056 00058 bool readFromFile(char* header, FILE* fp, bool bigEndian); 00059 00060 //remember that our grids are curvilinear and only 2D 00062 int getDimX(); 00064 int getDimY(); 00066 int getDimZ(); 00067 00069 float getMinX(); 00071 float getMaxX(); 00073 float getMinY(); 00075 float getMaxY(); 00076 00078 int getRightNeigh(int vtxID); 00080 int getTopNeigh(int vtxID); 00082 int getLeftNeigh(int vtxID); 00084 int getBottomNeigh(int vtxID); 00085 00087 vec3 normalizeCoords(vec3 pos); 00089 vec3 unNormalizeCoords(vec3 pos); 00090 00092 int getVtx(int x, int y); 00093 00095 vec3 getPos(int vtxID); 00096 00097 vec3 getPosXY(int x, int y); 00098 00099 bool flipped(); 00100 }; 00101 00102 #endif