# | Line 63 | Line 63 | using namespace std; | |
---|---|---|
63 | using namespace OpenMD; | |
64 | using namespace std; | |
65 | ||
66 | < | ConvexHull::ConvexHull() : Hull(), dim_(3), options_("qhull Qt Pp") { |
66 | > | ConvexHull::ConvexHull() : Hull(), dim_(3), options_("qhull FA Qt Pp") { |
67 | } | |
68 | ||
69 | void ConvexHull::computeHull(vector<StuntDouble*> bodydoubles) { | |
# | Line 77 | Line 77 | void ConvexHull::computeHull(vector<StuntDouble*> body | |
77 | setT *vertices; | |
78 | int curlong, totlong; | |
79 | ||
80 | – | Vector3d boxMax; |
81 | – | Vector3d boxMin; |
82 | – | |
80 | vector<double> ptArray(numpoints*dim_); | |
81 | ||
82 | // Copy the positon vector into a points vector for qhull. | |
83 | vector<StuntDouble*>::iterator SD; | |
84 | int i = 0; | |
85 | < | |
85 | > | |
86 | for (SD =bodydoubles.begin(); SD != bodydoubles.end(); ++SD){ | |
87 | Vector3d pos = (*SD)->getPos(); | |
88 | ptArray[dim_ * i] = pos.x(); | |
# | Line 207 | Line 204 | void ConvexHull::computeHull(vector<StuntDouble*> body | |
204 | // commented out below, so comment out here also. | |
205 | // intPoint = qh interior_point; | |
206 | // RealType calcvol = 0.0; | |
207 | + | |
208 | + | qh_triangulate (); |
209 | + | int num_facets = qh num_facets; |
210 | + | int num_vertices = qh num_vertices; |
211 | + | |
212 | FORALLfacets { | |
213 | Triangle face; | |
214 | //Qhull sets the unit normal in facet->normal | |
# | Line 283 | Line 285 | void ConvexHull::computeHull(vector<StuntDouble*> body | |
285 | qh_getarea(qh facet_list); | |
286 | volume_ = qh totvol; | |
287 | area_ = qh totarea; | |
286 | – | |
287 | – | int index = 0; |
288 | – | FORALLvertices { |
289 | – | Vector3d point(vertex->point[0], vertex->point[1], vertex->point[2]); |
290 | – | if (index == 0) { |
291 | – | boxMax = point; |
292 | – | boxMin = point; |
293 | – | } else { |
294 | – | for (int i = 0; i < 3; i++) { |
295 | – | boxMax[i] = max(boxMax[i], point[i]); |
296 | – | boxMin[i] = min(boxMin[i], point[i]); |
297 | – | } |
298 | – | } |
299 | – | index++; |
300 | – | } |
301 | – | boundingBox_ = Mat3x3d(0.0); |
302 | – | boundingBox_(0,0) = boxMax[0] - boxMin[0]; |
303 | – | boundingBox_(1,1) = boxMax[1] - boxMin[1]; |
304 | – | boundingBox_(2,2) = boxMax[2] - boxMin[2]; |
288 | ||
289 | qh_freeqhull(!qh_ALL); | |
290 | qh_memfreeshort(&curlong, &totlong); |
– | Removed lines |
+ | Added lines |
< | Changed lines |
> | Changed lines |