Changes in src/tesselationhelpers.cpp [b998c3:856098]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/tesselationhelpers.cpp
rb998c3 r856098 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 }
Note:
See TracChangeset
for help on using the changeset viewer.