00001 #ifndef FLOWGEOMETRY_H
00002 #define FLOWGEOMETRY_H
00003
00004 #include <stdio.h>
00005 #include <iostream>
00006 #include "vec3.h"
00007 #include <vector>
00009 class FlowGeometry{
00010 friend class FlowData;
00011 private:
00013 int dim[2];
00015 vec3 boundaryMin;
00017 vec3 boundaryMax;
00019 vec3 boundarySize;
00020
00022 vec3* geometryData;
00023
00025 int getVtx(int x, int y);
00027 int getVtxX(int vtxID);
00029 int getVtxY(int vtxID);
00030
00032 int getXYvtx(vec3 pos);
00033
00035 vec3 getPos(int vtxID);
00037 float getPosX(int vtxID);
00039 float getPosY(int vtxID);
00040
00042 bool isFlipped;
00043
00044
00046 int getNearestVtx(vec3 pos);
00047
00048 public:
00049 FlowGeometry();
00051 ~FlowGeometry();
00052
00053
00054 bool IsFlipped();
00055 void getMesh(std::vector<float>& xdiff, std::vector<float>& ydiff);
00056
00058
00065 bool getInterpolationAt(vec3 pos, int* vtxID, float* coef);
00066
00068 bool readFromFile(char* header, FILE* fp, bool bigEndian);
00069
00070
00072 int getDimX();
00074 int getDimY();
00076 int getDimZ();
00077
00079 float getMinX();
00081 float getMaxX();
00083 float getMinY();
00085 float getMaxY();
00086
00088 int getRightNeigh(int vtxID);
00090 int getTopNeigh(int vtxID);
00092 int getLeftNeigh(int vtxID);
00094 int getBottomNeigh(int vtxID);
00095
00097 vec3 normalizeCoords(vec3 pos);
00099 vec3 unNormalizeCoords(vec3 pos);
00100 };
00101
00102 #endif