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

Go to the documentation of this file.
00001 // $Id: edgearray.h,v 1.39 2006/05/24 16:52:42 sean Exp $
00002 // $Copyright: (c)2001 National Biocomputation Center, Stanford University $
00003 
00004 #ifndef EdgeArray_H
00005 #define EdgeArray_H
00006 
00007 #include "util.h"
00008 #include "edge.h"
00009 #include "nodearray.h"
00010 #include <string.h>
00011 
00012 class NodeArray;
00013 class Object;
00014 
00015 class EdgeArray
00016 {
00017 private:
00018     int numedges; // number currently used
00019     int maxedges;       // number allocated in memory
00020     Edge* *edges;
00021     char edgefilename[MAXLINE];
00022     
00023     // links to parallel arrays
00024     NodeArray* nodearray_p;
00025     
00026 public:
00027     EdgeArray(NodeArray* nodearray_p_in);
00028     ~EdgeArray();
00029     static const char* rcsid;
00030     static int debug;
00031     
00032     int do_nonlinear;
00033     void reset(void);
00034     void setEdgeFilename(char *s);
00035     int getNumEdges();
00036     int getIndex(Edge* e);
00037     Object* getObject();
00038     NodeArray* getNodeArray();
00039     void SaveFrdEdgeData(ostream& os);
00040     int getFRDEdgeData(FILE *meshfile);
00041     
00042     // dynamic allocation routines
00043     // called by facearray when using mesh files
00044     void allocateEdges(int maxedges);
00045     int addEdge(int i0, int i1, double restLength=-1.0, 
00046         double springConstant=1.0, double dampConstant=0.5);
00047     int addEdge(Node* n0, Node* n1, double restLength=-1.0, 
00048         double springConstant=1.0, double dampConstant=0.5);
00049     
00050     // called by spring when using node/edge files
00051     int getEdgeData(void);
00052     Edge *getEdge(int i);
00053     
00054     // methods which iterate over all numedges of the Edges in edges[]
00055     void addTorsions(void);
00056     void DrawEdges();
00057     void drawinitial();
00058     void KnotIdentify(int testing);
00059     void setSpringConstants(double value, int restLengthScale = 0);
00060     void setDampConstants(double value);
00061     void drawover(double scale);
00062     void drawlabels(float offset);
00063     double getEnergy(void);
00064     void DeleteEdge(int index);
00065     void DeleteEdge(Edge* e);
00066     void EraseEdge(Edge* e);
00067     void DeleteAllEdges();
00068     void DeleteFacelessEdges();
00069     void SanityCheck();
00070     void Cleanup();
00071     int CompressDuplicateEdges();
00072     void scaleRestLengths(double scalefactor);
00073     void computeNewRestLengths();
00074 
00075         void ComputeForceVectors(int dampingType);
00076         void ComputeForceVectorsNonlinear(int dampingType);
00077 };
00078 
00079 inline int EdgeArray::getNumEdges() 
00080 {return (numedges);}
00081 
00082 inline Edge* EdgeArray::getEdge(int i) 
00083 {return (edges[i]);}
00084 
00085 inline NodeArray* EdgeArray::getNodeArray()
00086 {return (nodearray_p);}
00087 
00088 inline Object* EdgeArray::getObject()
00089 { return (nodearray_p->getObject()); }
00090 
00091 #endif

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