View Issue Details

IDProjectCategoryView StatusLast Update
0032794CommunityOCCT:Modeling Algorithmspublic2023-08-01 15:08
Reportereryar Assigned Tomsv 
Status newResolutionopen 
PlatformWindowsOSVC++ 2012 
Product Version7.6.0 
Target VersionUnscheduled 
Summary0032794: Design clear and user-defined Tolerance Management
DescriptionTolerance Management is very import(robust and performance) for numerical calculation,
such as Intersection Algorithm, Projection Algorithm, Approximation Algorithm, Classification Algorithm, etc.

Though OCCT have Precision class to provide some precision criteria, but some precision are still fixed in
source code, such as the precison in IntAna package:
IntAna_QuadQuadGeo.cxx line 828:
  static Standard_Real EllipseLimit = 1.0E+9; //OCC513(apo) 1000000
  static Standard_Real HyperbolaLimit = 2.0E+6; //OCC537(apo) 50000
  if(typeres==IntAna_Ellipse && nbint>=1) {
    if(Abs(param1) > EllipseLimit || Abs(param1bis) > EllipseLimit) {

In math package, you can set tolerance and iteration number for math solvers, such as math_BFGS, math_FunctionRoot, .etc.,
but in upper class you cannot set these parameters, or even set but not use, such as the tolerance in IntAna_IntQuadQuad Perform funcion:
void IntAna_IntQuadQuad::Perform(const gp_Cylinder& Cyl,
                 const IntAna_Quadric& Quad,
                 const Standard_Real)

For some application fields they do not need high-precision, such as ship building, chemical plant design, 0.001mm I think is enough.
So I suggest that let the user to choose the proper tolerance for their specific application, that is user can set the Precision tolerance
before algorithm(Intersection Algorithm, Projection Algorithm, Approximation Algorithm, Classification Algorithm, etc.) preform,
this will clear than Fuzzy value in Boolean Operations.
TagsNo tags attached.
Test case number


There are no notes attached to this issue.

Issue History

Date Modified Username Field Change
2022-01-24 05:15 eryar New Issue
2022-01-24 05:15 eryar Assigned To => kgv
2022-01-24 10:32 kgv Assigned To kgv => msv
2022-01-24 10:32 kgv Category OCCT:Coding => OCCT:Modeling Algorithms
2022-10-24 10:41 szy Target Version 7.7.0 => 7.8.0
2023-08-01 15:08 dpasukhi Target Version 7.8.0 => Unscheduled