- File:
-
- 1 edited
-
molecuilder/src/tesselationhelpers.cpp (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
molecuilder/src/tesselationhelpers.cpp
r49d3e1e rea3627 143 143 if (fabs(HalfplaneIndicator) < MYEPSILON) 144 144 { 145 if ((TempNormal.ScalarProduct(AlternativeDirection) <0 && AlternativeIndicator >0) || (TempNormal.ScalarProduct(AlternativeDirection) >0 &&AlternativeIndicator <0))145 if ((TempNormal.ScalarProduct(AlternativeDirection) <0 and AlternativeIndicator >0) or (TempNormal.ScalarProduct(AlternativeDirection) >0 and AlternativeIndicator <0)) 146 146 { 147 147 TempNormal.Scale(-1); … … 150 150 else 151 151 { 152 if ( ((TempNormal.ScalarProduct(Direction)<0) && (HalfplaneIndicator >0)) || ((TempNormal.ScalarProduct(Direction)>0) && (HalfplaneIndicator<0)))152 if (TempNormal.ScalarProduct(Direction)<0 && HalfplaneIndicator >0 || TempNormal.ScalarProduct(Direction)>0 && HalfplaneIndicator<0) 153 153 { 154 154 TempNormal.Scale(-1); … … 226 226 Vector helper; 227 227 double radius, alpha; 228 Vector RelativeOldSphereCenter; 229 Vector RelativeNewSphereCenter; 230 231 RelativeOldSphereCenter.CopyVector(&OldSphereCenter); 232 RelativeOldSphereCenter.SubtractVector(&CircleCenter); 233 RelativeNewSphereCenter.CopyVector(&NewSphereCenter); 234 RelativeNewSphereCenter.SubtractVector(&CircleCenter); 235 helper.CopyVector(&RelativeNewSphereCenter); 228 229 helper.CopyVector(&NewSphereCenter); 236 230 // test whether new center is on the parameter circle's plane 237 231 if (fabs(helper.ScalarProduct(&CirclePlaneNormal)) > HULLEPSILON) { … … 239 233 helper.ProjectOntoPlane(&CirclePlaneNormal); 240 234 } 241 radius = helper. NormSquared();235 radius = helper.ScalarProduct(&helper); 242 236 // test whether the new center vector has length of CircleRadius 243 237 if (fabs(radius - CircleRadius) > HULLEPSILON) 244 238 eLog() << Verbose(1) << "The projected center of the new sphere has radius " << radius << " instead of " << CircleRadius << "." << endl; 245 alpha = helper.Angle(& RelativeOldSphereCenter);239 alpha = helper.Angle(&OldSphereCenter); 246 240 // make the angle unique by checking the halfplanes/search direction 247 241 if (helper.ScalarProduct(&SearchDirection) < -HULLEPSILON) // acos is not unique on [0, 2.*M_PI), hence extra check to decide between two half intervals 248 242 alpha = 2.*M_PI - alpha; 249 Log() << Verbose(1) << "INFO: RelativeNewSphereCenter is " << helper << ", RelativeOldSphereCenter is " << RelativeOldSphereCenter << " and resulting angle is " << alpha << "." << endl;250 radius = helper.Distance(& RelativeOldSphereCenter);243 //Log() << Verbose(1) << "INFO: RelativeNewSphereCenter is " << helper << ", RelativeOldSphereCenter is " << OldSphereCenter << " and resulting angle is " << alpha << "." << endl; 244 radius = helper.Distance(&OldSphereCenter); 251 245 helper.ProjectOntoPlane(&NormalVector); 252 246 // check whether new center is somewhat away or at least right over the current baseline to prevent intersecting triangles 253 247 if ((radius > HULLEPSILON) || (helper.Norm() < HULLEPSILON)) { 254 Log() << Verbose(1) << "INFO: Distance between old and new center is " << radius << " and between new center and baseline center is " << helper.Norm() << "." << endl;248 //Log() << Verbose(1) << "INFO: Distance between old and new center is " << radius << " and between new center and baseline center is " << helper.Norm() << "." << endl; 255 249 return alpha; 256 250 } else { 257 Log() << Verbose(1) << "INFO: NewSphereCenter " << RelativeNewSphereCenter << " is too close to RelativeOldSphereCenter" << RelativeOldSphereCenter << "." << endl;251 //Log() << Verbose(1) << "INFO: NewSphereCenter " << helper << " is too close to OldSphereCenter" << OldSphereCenter << "." << endl; 258 252 return 2.*M_PI; 259 253 } … … 558 552 * @return point which is second closest to the provided one 559 553 */ 560 TesselPoint* FindSecondClosest TesselPoint(const Vector* Point, const LinkedCell* const LC)554 TesselPoint* FindSecondClosestPoint(const Vector* Point, const LinkedCell* const LC) 561 555 { 562 556 Info FunctionInfo(__func__); … … 613 607 * @return point which is closest to the provided one, NULL if none found 614 608 */ 615 TesselPoint* FindClosest TesselPoint(const Vector* Point, TesselPoint *&SecondPoint, const LinkedCell* const LC)609 TesselPoint* FindClosestPoint(const Vector* Point, TesselPoint *&SecondPoint, const LinkedCell* const LC) 616 610 { 617 611 Info FunctionInfo(__func__); … … 639 633 helper.CopyVector(Point); 640 634 helper.SubtractVector((*Runner)->node); 641 double currentNorm = helper. NormSquared();635 double currentNorm = helper. Norm(); 642 636 if (currentNorm < distance) { 643 637 secondDistance = distance; … … 866 860 } 867 861 *tecplot << "\", N=" << TesselStruct->PointsOnBoundary.size() << ", E=" << TesselStruct->TrianglesOnBoundary.size() << ", DATAPACKING=POINT, ZONETYPE=FETRIANGLE" << endl; 868 int i=cloud->GetMaxId(); 862 int i=0; 863 for (cloud->GoToFirst(); !cloud->IsEnd(); cloud->GoToNext(), i++); 869 864 int *LookupList = new int[i]; 870 865 for (cloud->GoToFirst(), i=0; !cloud->IsEnd(); cloud->GoToNext(), i++)
Note:
See TracChangeset
for help on using the changeset viewer.
