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

Comparing branches/development/src/math/ConvexHull.cpp (file contents):
Revision 1858 by gezelter, Wed Apr 3 21:32:13 2013 UTC vs.
Revision 1874 by gezelter, Wed May 15 15:09:35 2013 UTC

# 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 +
210    FORALLfacets {  
211      Triangle face;
212      //Qhull sets the unit normal in facet->normal
# Line 283 | Line 283 | void ConvexHull::computeHull(vector<StuntDouble*> body
283    qh_getarea(qh facet_list);
284    volume_ = qh totvol;
285    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];
286      
287    qh_freeqhull(!qh_ALL);
288    qh_memfreeshort(&curlong, &totlong);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines