MantisBT
Mantis Bug Tracker Workflow

View Issue Details Jump to Notes ] Related Changesets ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0029368Open CASCADE[OCCT] OCCT:Modeling Algorithmspublic2017-12-05 08:392018-06-29 21:19
Reporteremv 
Assigned Toapn 
PrioritynormalSeverityblock 
StatusclosedResolutionfixed 
PlatformOSOS Version
Product Version[OCCT] 7.2.0 
Target Version[OCCT] 7.3.0Fixed in Version[OCCT] 7.3.0 
Summary0029368: Incorrect intersection state of the intersection point of two 2d curves
DescriptionThe 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 Reproducerestore 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
TagsNo tags attached.
Test case numberlowalgos 2dinter A1, A2
Attached Files? file icon c2d_element (289 bytes) 2017-12-05 08:40
? file icon c2d_hatching (51 bytes) 2017-12-05 08:41
? file icon bug28385_de_iges_1_J9_faces.bin (5,581 bytes) 2017-12-05 08:41
png file icon 001.png (3,381 bytes) 2017-12-05 08:42
png file icon 002.png (4,834 bytes) 2017-12-05 08:42

- Relationships
child of 0028385closedapn Improve drawing isolines (DBRep_IsoBuilder algorithm) 

-  Notes
(0072916)
git (administrator)
2017-12-11 18:02

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.
(0072918)
msv (developer)
2017-12-11 18:06

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/. [^]
(0072930)
git (administrator)
2017-12-12 11:05

Branch CR29368 has been updated forcibly by msv.

SHA-1: 064d7fe1e47160a1482b7a368f5ef3f336bc0327
(0073268)
git (administrator)
2018-01-09 11:40

Branch CR29368 has been updated forcibly by msv.

SHA-1: 843248c40dec6b28159d6c89cffb6975ae274472
(0073274)
git (administrator)
2018-01-09 17:20

Branch CR29368 has been updated forcibly by msv.

SHA-1: 31f2aa5b1dd1c01e55b607d591a6c9fb3a9b7535
(0073409)
git (administrator)
2018-01-15 13:09

Branch CR29368 has been updated forcibly by msv.

SHA-1: e0559f8fb93788470b3ed40a301686e48d330bd0
(0073425)
msv (developer)
2018-01-16 09:29

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.
(0073437)
emv (developer)
2018-01-16 15:17

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.
(0073438)
git (administrator)
2018-01-16 15:57

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.
(0073439)
msv (developer)
2018-01-16 15:58

Please review again.
(0073440)
emv (developer)
2018-01-16 16:02

Reviewed.
(0073453)
apn (administrator)
2018-01-17 10:23

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
(0073767)
git (administrator)
2018-02-05 11:39

Branch CR29368 has been deleted by kgv.

SHA-1: e0559f8fb93788470b3ed40a301686e48d330bd0
(0073768)
git (administrator)
2018-02-05 11:39

Branch CR29368_1 has been deleted by kgv.

SHA-1: c313da9d710c8cf8cd067ffe7dd24432b44dcaf7

- Related Changesets
occt: master 4bc805bf
Timestamp: 2017-12-11 15:00:19
Author: msv
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.
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 ]

- Issue History
Date Modified Username Field Change
2017-12-05 08:39 emv New Issue
2017-12-05 08:39 emv Assigned To => msv
2017-12-05 08:40 emv File Added: c2d_element
2017-12-05 08:41 emv File Added: c2d_hatching
2017-12-05 08:41 emv File Added: bug28385_de_iges_1_J9_faces.bin
2017-12-05 08:42 emv File Added: 001.png
2017-12-05 08:42 emv File Added: 002.png
2017-12-05 08:43 emv Relationship added child of 0028385
2017-12-08 09:49 msv Status new => assigned
2017-12-11 18:02 git Note Added: 0072916
2017-12-11 18:06 msv 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 msv Note Added: 0073425
2018-01-16 09:29 msv Assigned To msv => emv
2018-01-16 09:29 msv Status assigned => resolved
2018-01-16 15:17 emv Note Added: 0073437
2018-01-16 15:17 emv Assigned To emv => msv
2018-01-16 15:17 emv Status resolved => assigned
2018-01-16 15:57 git Note Added: 0073438
2018-01-16 15:58 msv Note Added: 0073439
2018-01-16 15:58 msv Assigned To msv => emv
2018-01-16 15:58 msv Status assigned => resolved
2018-01-16 16:02 emv Note Added: 0073440
2018-01-16 16:02 emv Assigned To emv => bugmaster
2018-01-16 16:02 emv 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 View Revisions
2018-01-17 10:23 apn Note Added: 0073453
2018-01-17 10:23 apn Additional Information Updated View Revisions
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 user533 Target Version 7.4.0* => 7.3.0
2018-06-29 21:15 user533 Fixed in Version => 7.3.0
2018-06-29 21:19 user533 Status verified => closed


Copyright © 2000 - 2018 MantisBT Team
Powered by Mantis Bugtracker