# | 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 |
– | Removed lines |
+ | Added lines |
< | Changed lines |
> | Changed lines |