VisLU Flow 0.1
|
00001 #ifndef FLOWGEOMETRY_H 00002 #define FLOWGEOMETRY_H 00003 00004 #include <stdio.h> 00005 #include <iostream> 00006 #include "vec3.h" 00008 class FlowGeometry 00009 { 00010 friend class FlowData; 00011 00012 private: 00014 int dim[2]; 00016 vec3 boundaryMin; 00018 vec3 boundaryMax; 00020 vec3 boundarySize; 00021 00023 int getVtx(int x, int y); 00025 int getVtxX(int vtxID); 00027 int getVtxY(int vtxID); 00028 00030 int getXYvtx(vec3 pos); 00031 00033 float getPosX(int vtxID); 00035 float getPosY(int vtxID); 00036 00038 bool isFlipped; 00039 00040 //TODO for students: improve this 00042 int getNearestVtx(vec3 pos); 00043 00044 public: 00045 FlowGeometry(); 00047 ~FlowGeometry(); 00048 00050 vec3* geometryData; 00051 00053 00060 bool getInterpolationAt(vec3 pos, int* vtxID, float* coef); 00061 00063 bool readFromFile(char* header, FILE* fp, bool bigEndian); 00064 00066 vec3 getPos(int vtxID); 00067 00068 //remember that our grids are curvilinear and only 2D 00070 int getDimX(); 00072 int getDimY(); 00074 int getDimZ(); 00075 00077 float getMinX(); 00079 float getMaxX(); 00081 float getMinY(); 00083 float getMaxY(); 00084 00086 int getRightNeigh(int vtxID); 00088 int getTopNeigh(int vtxID); 00090 int getLeftNeigh(int vtxID); 00092 int getBottomNeigh(int vtxID); 00093 00095 vec3 normalizeCoords(vec3 pos); 00097 vec3 unNormalizeCoords(vec3 pos); 00098 }; 00099 00100 #endif