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 TimeChannel;
00011
00012 private:
00014 int dim[2];
00016 vec3 boundaryMin;
00018 vec3 boundaryMax;
00020 vec3 boundarySize;
00021
00023 vec3* geometryData;
00024
00026 int getVtx(int x, int y);
00028 int getVtxX(int vtxID);
00030 int getVtxY(int vtxID);
00031
00033 int getXYvtx(vec3 pos);
00034
00036 float getPosX(int vtxID);
00038 float getPosY(int vtxID);
00039
00041 bool isFlipped;
00042
00044 int getNearestVtx(vec3 pos);
00045
00046 public:
00047 FlowGeometry();
00049 ~FlowGeometry();
00050
00052
00059 bool getInterpolationAt(vec3 pos, int* vtxID, float* coef);
00060
00062 bool readFromFile(char* header, FILE* fp, bool bigEndian);
00063
00065 vec3 getPos(int vtxID);
00066
00067
00069 int getDimX();
00071 int getDimY();
00073 int getDimZ();
00074
00076 float getMinX();
00078 float getMaxX();
00080 float getMinY();
00082 float getMaxY();
00083
00085 int getRightNeigh(int vtxID);
00087 int getTopNeigh(int vtxID);
00089 int getLeftNeigh(int vtxID);
00091 int getBottomNeigh(int vtxID);
00092
00094 vec3 normalizeCoords(vec3 pos);
00096 vec3 unNormalizeCoords(vec3 pos);
00097 };
00098
00099 #endif