VisLU Flow 0.1

src/FlowGeometry.h

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
 All Classes Functions Variables