ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/branches/development/src/math/Triangle.hpp
(Generate patch)

Comparing trunk/src/math/Triangle.hpp (file contents):
Revision 1307 by chuckv, Mon Oct 20 19:36:32 2008 UTC vs.
Revision 1325 by chuckv, Fri Dec 5 16:20:39 2008 UTC

# Line 40 | Line 40
40   *
41   *  Triangle.hpp
42   *
43 < *  Purpose: Provide facets from hull to oopse
43 > *  Purpose: Provide basic triangle class for oopse. Hates Particle class.
44   *
45   *  Created by Charles F. Vardeman II on 29 July 2008.
46   *  @author  Charles F. Vardeman II
47 < *  @version $Id: Triangle.hpp,v 1.2 2008-10-20 19:36:32 chuckv Exp $
47 > *  @version $Id: Triangle.hpp,v 1.4 2008-12-05 16:20:39 chuckv Exp $
48   *
49   */
50  
# Line 71 | Line 71 | namespace oopse {
71    class Triangle {
72  
73    public:
74 <    Triangle(){};
74 >    Triangle();
75      virtual ~Triangle() { };
76  
77      void setNormal(Vector3d normal) {
78        normal_ = normal;
79 +      HaveNormal_ = true;
80      }
81  
82 <    void addVertex(StuntDouble* thisSD){
82 >    void addVertices(Vector3d P1, Vector3d P2, Vector3d P3);
83 >
84 >    void addVertexSD(StuntDouble* thisSD){
85        vertexSD_.push_back(thisSD);
86      }
87 <    
87 >
88      std::vector<StuntDouble*> getVertices(){return vertexSD_;}
89  
90      void setArea(RealType area) {
91        area_ = area;
92 +      HaveArea_ = true;
93      }
94      
95 <    Vector3d getNormal() {
96 <      return normal_;
95 >    Vector3d getNormal() {
96 >      if (HaveNormal_) {
97 >        return normal_;
98 >      } else {
99 >        return computeNormal();
100 >      }
101      }
102      
103      RealType getArea() {
104 <      return area_;
104 >      if(HaveArea_){
105 >        return area_;
106 >      }else{
107 >        return computeArea();
108 >      }
109      }
110  
111 +    RealType computeArea();
112 +    Vector3d computeNormal();
113 +    Vector3d computeCentroid();
114 +
115      void setCentroid(Vector3d centroid) {
116        centroid_ = centroid;
117 +      HaveCentroid_ = true;
118      }
119  
120 <    Vector3d getCentroid() {
121 <      return centroid_;
120 >    Vector3d getCentroid() {
121 >      if (HaveCentroid_) {
122 >        return centroid_;
123 >      } else {
124 >        return computeCentroid();
125 >      }
126      }
127 <
127 >    
128      Vector3d getFacetVelocity(){
129        return facetVelocity_;
130      }
# Line 112 | Line 133 | namespace oopse {
133        facetVelocity_ = facetVelocity;
134      }
135  
136 +    void setFacetMass(RealType mass){
137 +      mass_ = mass;
138 +    }
139  
140 +    RealType getFacetMass(){
141 +      return mass_;
142 +    }
143 +
144 +    RealType a(){
145 +      return a_.length();
146 +    }
147 +
148 +    RealType b(){
149 +      return b_.length();
150 +    }
151 +
152 +    RealType c(){
153 +      return c_.length();
154 +    }
155 +
156 +    RealType getHydroLength() {
157 +      RealType a1 = a();
158 +      RealType b1 = b();
159 +      RealType c1 = c();
160 +      RealType t1 =  a1 + b1 + c1;
161 +      RealType t4 =  a1 + b1 - c1;
162 +
163 +      return 32.0 * c1 / log(t1*t1/t4/t4);
164 +    }
165 +
166 +
167 +    RealType getIncircleRadius() {
168 +      return 2.0 * getArea() / (a() + b() + c());
169 +    }
170 +
171 +    RealType getCircumcircleRadius() {
172 +      RealType a1 = a();
173 +      RealType b1 = b();
174 +      RealType c1 = c();
175 +      RealType t1 =  a1 + b1 + c1;
176 +      RealType t2 = -a1 + b1 + c1;
177 +      RealType t3 =  a1 - b1 + c1;
178 +      RealType t4 =  a1 + b1 - c1;
179 +      RealType junk = t1*t2*t3*t4;
180 +      return a1 * b1 * c1 / sqrt(t1 * t2 * t3 * t4);
181 +    }
182 +      
183 +
184 +
185    private:
186      /* Local Indentity of vertex atoms in pos array*/
187      std::vector <StuntDouble*> vertexSD_;
188      Vector3d normal_;
189      Vector3d centroid_;
190 +    Vector3d vertices_[3];
191      RealType area_;
192 +    RealType mass_;
193      Vector3d facetVelocity_;
194 +    //Length of triangle sides
195 +    Vector3d a_,b_,c_;
196 +    RealType alpha_,beta_,gamma_;
197 +    bool HaveArea_;
198 +    bool HaveNormal_;
199 +    bool HaveCentroid_;
200      
201    }; // End class Triangle
202      

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines