View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0029368 | Open CASCADE | OCCT:Modeling Algorithms | public | 2017-12-05 08:39 | 2018-06-29 21:19 |
Reporter | Assigned To | apn | |||
Priority | normal | Severity | block | ||
Status | closed | Resolution | fixed | ||
Product Version | 7.2.0 | ||||
Target Version | 7.3.0 | Fixed in Version | 7.3.0 | ||
Summary | 0029368: Incorrect intersection state of the intersection point of two 2d curves | ||||
Description | The intersection of the attached 2d curves gives one intersection point with the state "INTERSECTION". But the curves are really touching and the method IntRes2d_Transition::IsTangent() should return true for them. This intersection status strongly affects how the iso-lines of the faces are displayed. If the iso-line is touching some of the faces boundaries and the touching is not detected and goes as intersection, most likely this iso-line will be stopped at this intersection point. Some examples of such behavior can be seen on the attached pictures taken from test results of the branch CR28385. This problem has been detected while working on the improvement of DBRep_IsoBuilder class in frames of the issue 0028385 in the test cases de/iges_1/J9, bugs/step/bug3397. The problem is blocking for the 0028385. | ||||
Steps To Reproduce | restore c2d_element c1 restore c2d_hatching c2 2dintersect c1 c2 -tol 1.e-9 -state # INTERSECTION binrestore bug28385_de_iges_1_J9_faces.bin c | ||||
Tags | No tags attached. | ||||
Test case number | lowalgos 2dinter A1, A2 | ||||
2017-12-05 08:40 developer |
c2d_element (289 bytes) |
2017-12-05 08:41 developer |
c2d_hatching (51 bytes) |
2017-12-05 08:41 developer |
bug28385_de_iges_1_J9_faces.bin (5,581 bytes) |
2017-12-05 08:42 developer |
001.png (3,381 bytes) |
2017-12-05 08:42 developer |
002.png (4,834 bytes) |
|
Branch CR29368 has been created by msv. SHA-1: 3cdb9d59a0c9eea54fcbc96df8bff766898d4495 Detailed log of new commits: Author: msv Date: Mon Dec 11 18:00:19 2017 +0300 0029368: Incorrect intersection state of the intersection point of two 2d curves In the algorithm math_FunctionRoots, improve the case when it is needed to find the extremum of the function. Earlier, to solve this task the method of gold section was used. With the patch, first the algorithm tries to find zero value of the derivative function. In most cases it gives precise result. And only if it fails the old method of gold section is used. New category of tests "lowalgos" has been added. Tests for low level algorithms are to be put there. "2dinter" is a new group of tests in this category. |
|
Branch CR29368 is made on top of the fix CR28385. Testing job is http://jenkins-test-10.nnov.opencascade.com:8080/view/CR29368-master-msv/view/COMPARE/. |
|
Branch CR29368 has been updated forcibly by msv. SHA-1: 064d7fe1e47160a1482b7a368f5ef3f336bc0327 |
|
Branch CR29368 has been updated forcibly by msv. SHA-1: 843248c40dec6b28159d6c89cffb6975ae274472 |
|
Branch CR29368 has been updated forcibly by msv. SHA-1: 31f2aa5b1dd1c01e55b607d591a6c9fb3a9b7535 |
|
Branch CR29368 has been updated forcibly by msv. SHA-1: e0559f8fb93788470b3ed40a301686e48d330bd0 |
|
Dear Eugeny, Please review the fix. Differences in images in OCCT tests are expected due to improved drawing of isolines connected with the fix of touch case of 2D intersections. Differences in images in Products: IMAGE parasolid read bug24401_3: bug24401_3.png differs IMAGE sat read_parallel_1 B7: B7.png differs Are due to unstable work of reader for these cases. Several runs in master and in fixed versions show the same behavior. |
|
Commit message: "With the patch, first the algorithm tries to find zero value of the derivative function. In most cases it gives precise result. The algorithm chooses the best solution among two computed by different methods." And second? Please add description of what will be done next. src/BOPAlgo/BOPAlgo_PaveFiller_6.cxx: - lines 1488-1490 - move definition of aTmin and aTmax to the place where they are used. Use Precision::Infinite() or RealLast() for their initialization. - move the block at 1550-1553 inside the block "if (aBndNV[j] < 0)". - lines 1562-1585 - compute the Bnd_Box for new vertex before append. |
|
Branch CR29368_1 has been created by msv. SHA-1: c313da9d710c8cf8cd067ffe7dd24432b44dcaf7 Detailed log of new commits: Author: msv Date: Tue Jan 16 15:57:36 2018 +0300 # considering remarks Author: msv Date: Mon Dec 11 18:00:19 2017 +0300 0029368: Incorrect intersection state of the intersection point of two 2d curves In the algorithm math_FunctionRoots, improve the case when it is needed to find the extremum of the function. Earlier, to solve this task the method of gold section was used. With the patch, firstly the algorithm tries to find zero value of the derivative function. In most cases it gives precise result. Secondly, the algorithm tries to find zero value of the function using the old approach. The algorithm chooses the best solution among two computed by different methods. In the method PutStickPavesOnCurve of BOPAlgo_PaveFiller, forbid putting a vertex to the end of the curve if this end already has a vertex assigned to it. This allows getting rid of unwanted colliding of vertices. In the method UpdatePaveBlocks of BOPAlgo_PaveFiller, make the check for micro edges more precise. New category of tests "lowalgos" has been added. Tests for low level algorithms are to be put there. "2dinter" is a new group of tests in this category. Introduction of the new key for "2dintersect" command, allowing printing the intersection state for each point. It has the following syntax now: "2dintersect curve1 [curve2] [-tol tol] [-state]" Options: -tol - allows changing the intersection tolerance (default value is 1.e-3); -state - allows printing the intersection state for each point. Correct the test case bugs/modalg_7/bug28274 to make proper checks of the result. |
|
Please review again. |
|
Reviewed. |
|
Combination - OCCT branch : CR29368_1 SHA - c313da9d710c8cf8cd067ffe7dd24432b44dcaf7 Products branch : master SHA - c26fe4a5c40eb5b81c957dcb6529edeeabd884ee was compiled on Linux, MacOS and Windows platforms and tested in optimize mode. Number of compiler warnings: No new/fixed warnings Regressions/Differences/Improvements: No regressions/differences Test cases: lowalgos 2dinter A1 - OK lowalgos 2dinter A2 - OK CPU differences: Debian70-64: OCCT Total CPU difference: 18374.939999999766 / 18616.43999999968 [-1.30%] Products Total CPU difference: 7485.120000000009 / 7486.979999999992 [-0.02%] Windows-64-VC10: OCCT Total CPU difference: 17956.775906798444 / 17982.89047419848 [-0.15%] Products Total CPU difference: 8052.038415299968 / 8057.9820533999855 [-0.07%] Image differences : Differences in images in OCCT tests are expected due to improved drawing of isolines connected with the fix of touch case of 2D intersections. Memory differences : No differences that require special attention |
|
Branch CR29368 has been deleted by kgv. SHA-1: e0559f8fb93788470b3ed40a301686e48d330bd0 |
|
Branch CR29368_1 has been deleted by kgv. SHA-1: c313da9d710c8cf8cd067ffe7dd24432b44dcaf7 |
occt: master 4bc805bf 2017-12-11 15:00:19
Committer: apn Details Diff |
0029368: Incorrect intersection state of the intersection point of two 2d curves In the algorithm math_FunctionRoots, improve the case when it is needed to find the extremum of the function. Earlier, to solve this task the method of gold section was used. With the patch, firstly the algorithm tries to find zero value of the derivative function. In most cases it gives precise result. Secondly, the algorithm tries to find zero value of the function using the old approach. The algorithm chooses the best solution among two computed by different methods. In the method PutStickPavesOnCurve of BOPAlgo_PaveFiller, forbid putting a vertex to the end of the curve if this end already has a vertex assigned to it. This allows getting rid of unwanted colliding of vertices. In the method UpdatePaveBlocks of BOPAlgo_PaveFiller, make the check for micro edges more precise. New category of tests "lowalgos" has been added. Tests for low level algorithms are to be put there. "2dinter" is a new group of tests in this category. Introduction of the new key for "2dintersect" command, allowing printing the intersection state for each point. It has the following syntax now: "2dintersect curve1 [curve2] [-tol tol] [-state]" Options: -tol - allows changing the intersection tolerance (default value is 1.e-3); -state - allows printing the intersection state for each point. Correct the test case bugs/modalg_7/bug28274 to make proper checks of the result. |
Affected Issues 0029368 |
|
mod - dox/user_guides/draw_test_harness/draw_test_harness.md | Diff File | ||
mod - src/BOPAlgo/BOPAlgo_PaveFiller_3.cxx | Diff File | ||
mod - src/BOPAlgo/BOPAlgo_PaveFiller_6.cxx | Diff File | ||
mod - src/GeomliteTest/GeomliteTest_API2dCommands.cxx | Diff File | ||
mod - src/math/math_FunctionRoots.cxx | Diff File | ||
mod - tests/bugs/modalg_5/bug23706_43 | Diff File | ||
mod - tests/bugs/modalg_5/bug23706_48 | Diff File | ||
mod - tests/bugs/modalg_6/bug25593 | Diff File | ||
mod - tests/bugs/modalg_6/bug26938_3 | Diff File | ||
mod - tests/bugs/modalg_6/bug26938_4 | Diff File | ||
mod - tests/bugs/modalg_7/bug28274 | Diff File | ||
add - tests/bugs/modalg_7/bug28385_11 | Diff File | ||
mod - tests/bugs/moddata_2/bug23587 | Diff File | ||
mod - tests/bugs/moddata_3/bug25876 | Diff File | ||
add - tests/lowalgos/2dinter/A1 | Diff File | ||
add - tests/lowalgos/2dinter/A2 | Diff File | ||
add - tests/lowalgos/begin | Diff File | ||
add - tests/lowalgos/end | Diff File | ||
add - tests/lowalgos/grids.list | Diff File | ||
add - tests/lowalgos/parse.rules | Diff File |
Date Modified | Username | Field | Change |
---|---|---|---|
2017-12-05 08:39 |
|
New Issue | |
2017-12-05 08:39 |
|
Assigned To | => msv |
2017-12-05 08:40 |
|
File Added: c2d_element | |
2017-12-05 08:41 |
|
File Added: c2d_hatching | |
2017-12-05 08:41 |
|
File Added: bug28385_de_iges_1_J9_faces.bin | |
2017-12-05 08:42 |
|
File Added: 001.png | |
2017-12-05 08:42 |
|
File Added: 002.png | |
2017-12-05 08:43 |
|
Relationship added | child of 0028385 |
2017-12-08 09:49 |
|
Status | new => assigned |
2017-12-11 18:02 | git | Note Added: 0072916 | |
2017-12-11 18:06 |
|
Note Added: 0072918 | |
2017-12-12 11:05 | git | Note Added: 0072930 | |
2018-01-09 11:40 | git | Note Added: 0073268 | |
2018-01-09 17:20 | git | Note Added: 0073274 | |
2018-01-15 13:09 | git | Note Added: 0073409 | |
2018-01-16 09:29 |
|
Note Added: 0073425 | |
2018-01-16 09:29 |
|
Assigned To | msv => emv |
2018-01-16 09:29 |
|
Status | assigned => resolved |
2018-01-16 15:17 |
|
Note Added: 0073437 | |
2018-01-16 15:17 |
|
Assigned To | emv => msv |
2018-01-16 15:17 |
|
Status | resolved => assigned |
2018-01-16 15:57 | git | Note Added: 0073438 | |
2018-01-16 15:58 |
|
Note Added: 0073439 | |
2018-01-16 15:58 |
|
Assigned To | msv => emv |
2018-01-16 15:58 |
|
Status | assigned => resolved |
2018-01-16 16:02 |
|
Note Added: 0073440 | |
2018-01-16 16:02 |
|
Assigned To | emv => bugmaster |
2018-01-16 16:02 |
|
Status | resolved => reviewed |
2018-01-17 10:23 | apn | Test case number | => lowalgos 2dinter A1, A2 |
2018-01-17 10:23 | apn | Status | reviewed => tested |
2018-01-17 10:23 | apn | Additional Information Updated | |
2018-01-17 10:23 | apn | Note Added: 0073453 | |
2018-01-17 10:23 | apn | Additional Information Updated | |
2018-01-21 14:17 | apn | Changeset attached | => occt master 4bc805bf |
2018-01-21 14:17 | apn | Assigned To | bugmaster => apn |
2018-01-21 14:17 | apn | Status | tested => verified |
2018-01-21 14:17 | apn | Resolution | open => fixed |
2018-02-05 11:39 | git | Note Added: 0073767 | |
2018-02-05 11:39 | git | Note Added: 0073768 | |
2018-02-20 12:58 |
|
Target Version | 7.4.0 => 7.3.0 |
2018-06-29 21:15 |
|
Fixed in Version | => 7.3.0 |
2018-06-29 21:19 |
|
Status | verified => closed |