FlowGeometry.h

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                 //TODO for students: improve this
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                 //remember that our grids are curvilinear and only 2D
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
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines