|Anonymous | Login||2019-03-22 17:55 MSK|
|My View | View Issues | Change Log | Roadmap|
|View Issue Details|
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0029203||Open CASCADE||[OCCT] OCCT:Modeling Algorithms||public||2017-10-11 11:26||2019-02-14 12:01|
|Target Version||[OCCT] 7.4.0*||Fixed in Version|
|Summary||0029203: Ambiguous behavior of Point-Face-classification algorithms: shall it return ON-status?|
|Description||See Steps To Reproduce.|
Different algorithms return different results.
b2dclassifx DRAW-command uses "polygonal"-classifier (based on CSLib_Class2d).
b2dclassify uses "ray"-classifier (based on BRepClass_Intersector).
Wrong ON-status is returned by the reason of poor algorithm of IntRes2d_Position computation in BRepClass_Intersector class. Correct status is OUT.
3D-representation of the given point is in the wire of the given face.
Draw> explode ff w
Draw> mksurf ss ff
Draw> sval ss 1.6881493482012555 3.9044196877163997 xx yy zz
Draw> vertex vv xx yy zz
Draw> distmini dd ff_1 vv; dval dd_val
# 3.039106595854385e-008 < Tolerance (1.0e-7)
However, distance point-curve in 2D-space is quite big.
Draw> pcurve ff
Draw> 2dproj ff_7 1.6881493482012555 3.9044196877163997
#ext_1 ext_2 ext_3
Draw> length ext_1
On the current MASTER, status OUT is returned. After the fix for issue #28211, status ON will be returned.
|Steps To Reproduce||testgrid bug29203*|
Test cases are attached to this issue.
and documentation updates
|SCRIPT # 1|
The problem has been detected while fixing the bug #0028211 when debugging "de iges_1 O4" test case.
SCRIPT # 2
The problem has been detected while fixing the bug #0028211 when debugging "bugs modalg_6 bug27341_304" test case.
|Tags||No tags attached.|
|Test case number|
|Attached Files|| bug29203_transface.bin (85,016 bytes) 2017-10-11 11:33|
bug29203_toron.bin (5,773 bytes) 2017-10-19 18:06
bug29203_1 (1,027 bytes) 2018-01-12 14:57
bug29203_2 (1,107 bytes) 2018-01-12 14:57
0002-0029203-Ambiguous-behavior-of-Point-Face-classificat.patch (103,844 bytes) 2018-01-22 13:27
|Fix for the issue #0028211 will not solve the problem.|
|Test case has already been created and attached (see bug29203 file)|
edited on: 2017-10-19 18:42
In order to fix, we shall make the following steps:
1. Provide all edges on faces sent to the classification algorithm being same-parameter. It touches not only source files in test cases but intermediate results of the algorithms. It can lead to obtain huge tolerance of the edge(s). So, the face will be invalid (see #0023731).
2. Change the algorithm in BRepClass_Intersector::Perform(...) method in order to make it work with 3D-tolerance of the considered edge (not with external 3D-tolerance). Maybe, after this solution will be implemented, the external tolerance will be rejected from classifier algorithm. Currently, it is impossible to be done by the reason explained in item 1.
3. Improve the algorithm of computation of deflection between discrete polygon and source curve (see method BRepTopAdaptor_FClass2d::Init()). Currently, the computed deflection is equal to the length of projection of middle-point of arc to the chord. New algorithm can be based on GCPnts_DistFunction2d class or can use simple iteration formula (obtained if we apply Newton-algorithm to GCPnts_DistFunction2d function):
where C' and C'' are 1st and 2nd derivative of the curve, obtained in the point U(n), D - direction of the segment of the polygon.
Please note that this formula is satisfied for 2D-space only. For 3D-algorithm it will look more complexly.
Other steps must be defined dependently on regressions.
|I.e. after the fix, behavior "de iges_1 O4" and "bugs modalg_6 bug27341_*" test cases will be probably changed.|
|Concerning item 2 of the proposal, we have to leave the old behavior, so that the algorithm could work in two modes: 1) old mode when input global 3D tolerance is used for all edges, 2) new mode when each edge uses its own tolerance.|
|Git-patch in the file " 0002-0029203-Ambiguous-behavior-of-Point-Face-classificat.patch" fixes described problem. However, it is based on "0001-0028211-Modeling-Algorithms-Boolean-fuse-operation-p.patch" (see message 0029421:0073554), which cannot be integrated at present.|
|2017-10-11 11:26||nbv||New Issue|
|2017-10-11 11:26||nbv||Assigned To||=> msv|
|2017-10-11 11:26||nbv||File Added: bug28211_transface.bin|
|2017-10-11 11:27||nbv||Note Added: 0071332|
|2017-10-11 11:27||nbv||Priority||normal => low|
|2017-10-11 11:29||nbv||Relationship added||related to 0028211|
|2017-10-11 11:33||nbv||File Deleted: bug28211_transface.bin|
|2017-10-11 11:33||nbv||File Added: bug29203_transface.bin|
|2017-10-11 11:34||nbv||File Added: bug29203|
|2017-10-11 11:35||nbv||Steps to Reproduce Updated||View Revisions|
|2017-10-11 11:35||nbv||Note Added: 0071333|
|2017-10-19 17:27||nbv||Note Added: 0071647|
|2017-10-19 18:01||nbv||Summary||Different Point-Face-classification algorithms return different results => Ambiguous behavior of Point-Face-classification algorithms: shall it return ON-status?|
|2017-10-19 18:01||nbv||Description Updated||View Revisions|
|2017-10-19 18:01||nbv||Steps to Reproduce Updated||View Revisions|
|2017-10-19 18:01||nbv||Additional Information Updated||View Revisions|
|2017-10-19 18:02||nbv||Steps to Reproduce Updated||View Revisions|
|2017-10-19 18:05||nbv||Note Added: 0071648|
|2017-10-19 18:06||nbv||File Added: bug29203_toron.bin|
|2017-10-19 18:42||nbv||Note Edited: 0071647||View Revisions|
|2017-10-20 16:40||msv||Note Added: 0071667|
|2017-11-07 10:06||nbv||Description Updated||View Revisions|
|2018-01-12 14:23||nbv||File Deleted: bug29203|
|2018-01-12 14:27||nbv||File Added: bug29203_1|
|2018-01-12 14:27||nbv||File Added: bug29203_2|
|2018-01-12 14:28||nbv||Steps to Reproduce Updated||View Revisions|
|2018-01-12 14:57||nbv||File Deleted: bug29203_1|
|2018-01-12 14:57||nbv||File Deleted: bug29203_2|
|2018-01-12 14:57||nbv||File Added: bug29203_1|
|2018-01-12 14:57||nbv||File Added: bug29203_2|
|2018-01-12 15:58||nbv||Relationship added||related to 0029421|
|2018-01-12 15:58||nbv||Relationship deleted||related to 0028211|
|2018-01-22 13:27||nbv||File Added: 0002-0029203-Ambiguous-behavior-of-Point-Face-classificat.patch|
|2018-01-22 13:27||nbv||Assigned To||msv => nbv|
|2018-01-22 13:27||nbv||Status||new => feedback|
|2018-01-22 13:31||nbv||Note Added: 0073555|
|2018-11-12 16:52||nbv||Relationship added||related to 0030365|
|2019-02-14 12:01||bugmaster||Project||Internal => Open CASCADE|
|Copyright © 2000 - 2019 MantisBT Team|