/Users/craigcornelius/Projects/SPRING Mac Release 0.2/tetraarray.h

Go to the documentation of this file.
00001 
00002 #ifndef Tetraarray_H
00003 #define Tetraarray_H
00004 
00005 #include <stdio.h>
00006 #include "tetra.h"
00007 #include "nodearray.h"
00008 #include "edgearray.h"
00009 #include "facearray.h"
00010 
00011 class Tetra;
00012 class NodeArray;
00013 class EdgeArray;
00014 class FaceArray;
00015 class Object;
00016 
00017 class TetraArray
00018 {
00019 private:
00020   int numtetras, maxtetras;
00021   Tetra* *tetras;
00022 
00023   // links to parallel arrays
00024   NodeArray* nodearray_p;
00025   EdgeArray* edgearray_p;
00026         FaceArray* facearray_p;
00027   
00028 public:
00029   TetraArray(NodeArray* nodearray_p_in, 
00030                         EdgeArray* edgearray_p_in, 
00031                         FaceArray* facearray_p_in);
00032                                                  
00033   ~TetraArray();
00034         
00035         static const char* rcsid;
00036   static int debug;
00037 
00038   // handy stuff
00039   void reset(void);
00040                 
00041   int getNumTetras();
00042         
00043   Tetra* getTetra(int i);
00044   int getIndex(Tetra* t);
00045         
00046   Object* getObject();
00047         
00048   friend ostream& operator<<(ostream& os, const TetraArray& ta);
00049 
00050   // dynamic allocation routines
00051   void allocateTetras(int i);
00052         
00053         int getAmiraTetraData(FILE *meshfile, int numtetras_given);     // used with Amira files
00054         void SaveAmiraTetraData(ostream& os);
00055         
00056   int addTetra();
00057         // these two are mutually exclusive
00058   int addTetra(int i0, int i1, int i2, int i3);
00059         int addTetra(Node* n0, Node* n1, Node* n2, Node* n3);
00060 
00061   // methods which iterate over all numtetras of the tetras in tetras[]
00062   void DrawTetras(int do_texture);
00063         
00064   void drawlabels(float offset);
00065         
00066   void drawnormals();
00067         
00068   void computeIsobarys();
00069   void computeNormals(void);
00070   double getVolume();
00071         
00072   void DeleteTetra(int index);
00073   void DeleteTetra(Tetra *t);
00074         void DeleteAllTetras();
00075                 
00076   void EraseTetra(Tetra *t);
00077         NodeArray* getNodeArray();
00078         
00079   void SanityCheck(NodeArray* real_na_p, EdgeArray* real_ea_p, FaceArray* real_fa_p);
00080         
00081   void Cleanup();
00082         
00083 };
00084 inline NodeArray* TetraArray::getNodeArray()
00085 { return (nodearray_p); }
00086 
00087 inline int TetraArray::getNumTetras()
00088 { return (numtetras); }
00089 
00090 inline Tetra* TetraArray::getTetra(int i) 
00091 { return (tetras[i]); }
00092 
00093 inline Object* TetraArray::getObject()
00094 { return (nodearray_p->getObject()); }
00095 
00096 #endif

Generated on Thu Aug 30 11:03:17 2007 for SPRING Mac by  doxygen 1.5.3