Go to the documentation of this file.00001 #ifndef FLOWGEOMETRY_H
00002 #define FLOWGEOMETRY_H
00003
00004 #include <stdio.h>
00005 #include <iostream>
00006 #include <stdlib.h>
00007 #include <vector>
00008 #include "vec3.h"
00009
00011 class FlowGeometry{
00012 friend class FlowData;
00013 private:
00015 int dim[2];
00017 vec3 boundaryMin;
00019 vec3 boundaryMax;
00021 vec3 boundarySize;
00022
00024 vec3* geometryData;
00025
00027 int getVtx(int x, int y);
00029 int getVtxX(int vtxID);
00031 int getVtxY(int vtxID);
00032
00034 int getXYvtx(vec3 pos);
00035
00037 vec3 getPos(int vtxID);
00039 float getPosX(int vtxID);
00041 float getPosY(int vtxID);
00042
00044 bool isFlipped;
00045
00046 bool tempValid;
00047
00048 vec3 tempPos;
00049 int tempVtx[4];
00050 int tempCoef[4];
00051
00052
00054 int getNearestVtx(vec3 pos);
00055 std::vector<float*> distances;
00056
00057 public:
00058 FlowGeometry();
00060 ~FlowGeometry();
00061
00063
00070 bool getInterpolationAt(vec3 pos, int* vtxID, float* coef);
00071
00073 bool readFromFile(char* header, FILE* fp, bool bigEndian);
00074
00075
00077 int getDimX();
00079 int getDimY();
00081 int getDimZ();
00082
00084 float getMinX();
00086 float getMaxX();
00088 float getMinY();
00090 float getMaxY();
00091
00092 int getLeftUpperVtx(vec3 pos, int top, int bottom, int left, int right);
00094 int getRightNeigh(int vtxID);
00096 int getTopNeigh(int vtxID);
00098 int getLeftNeigh(int vtxID);
00100 int getBottomNeigh(int vtxID);
00101
00103 vec3 normalizeCoords(vec3 pos);
00105 vec3 unNormalizeCoords(vec3 pos);
00106
00107 bool getIsFlipped();
00108 };
00109
00110 #endif