View Issue Details

IDProjectCategoryView StatusLast Update
0029368Open CASCADEOCCT:Modeling Algorithmspublic2018-06-29 21:19
Reporteremv Assigned Toapn  
PrioritynormalSeverityblock 
Status closedResolutionfixed 
Product Version7.2.0 
Target Version7.3.0Fixed in Version7.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

  • c2d_element (289 bytes)
  • c2d_hatching (51 bytes)
  • bug28385_de_iges_1_J9_faces.bin (5,581 bytes)
  • 001.png (3,381 bytes)
  • 002.png (4,834 bytes)

Relationships

child of 0028385 closedapn Improve drawing isolines (DBRep_IsoBuilder algorithm) 

Activities

emv

2017-12-05 08:40

developer  

c2d_element (289 bytes)

emv

2017-12-05 08:41

developer  

c2d_hatching (51 bytes)

emv

2017-12-05 08:41

developer  

bug28385_de_iges_1_J9_faces.bin (5,581 bytes)

emv

2017-12-05 08:42

developer  

001.png (3,381 bytes)

emv

2017-12-05 08:42

developer  

002.png (4,834 bytes)

git

2017-12-11 18:02

administrator   ~0072916

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.

msv

2017-12-11 18:06

developer   ~0072918

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/.

git

2017-12-12 11:05

administrator   ~0072930

Branch CR29368 has been updated forcibly by msv.

SHA-1: 064d7fe1e47160a1482b7a368f5ef3f336bc0327

git

2018-01-09 11:40

administrator   ~0073268

Branch CR29368 has been updated forcibly by msv.

SHA-1: 843248c40dec6b28159d6c89cffb6975ae274472

git

2018-01-09 17:20

administrator   ~0073274

Branch CR29368 has been updated forcibly by msv.

SHA-1: 31f2aa5b1dd1c01e55b607d591a6c9fb3a9b7535

git

2018-01-15 13:09

administrator   ~0073409

Branch CR29368 has been updated forcibly by msv.

SHA-1: e0559f8fb93788470b3ed40a301686e48d330bd0

msv

2018-01-16 09:29

developer   ~0073425

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.

emv

2018-01-16 15:17

developer   ~0073437

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.

git

2018-01-16 15:57

administrator   ~0073438

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.

msv

2018-01-16 15:58

developer   ~0073439

Please review again.

emv

2018-01-16 16:02

developer   ~0073440

Reviewed.

apn

2018-01-17 10:23

administrator   ~0073453

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

git

2018-02-05 11:39

administrator   ~0073767

Branch CR29368 has been deleted by kgv.

SHA-1: e0559f8fb93788470b3ed40a301686e48d330bd0

git

2018-02-05 11:39

administrator   ~0073768

Branch CR29368_1 has been deleted by kgv.

SHA-1: c313da9d710c8cf8cd067ffe7dd24432b44dcaf7

Related Changesets

occt: master 4bc805bf

2017-12-11 15:00:19

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.
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

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
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 aiv Target Version 7.4.0 => 7.3.0
2018-06-29 21:15 aiv Fixed in Version => 7.3.0
2018-06-29 21:19 aiv Status verified => closed