Anonymous  Login  20190817 14:12 MSK 
My View  View Issues  Change Log  Roadmap 
View Issue Details [ Jump to Notes ]  [ Issue History ] [ Print ]  
ID  Project  Category  View Status  Date Submitted  Last Update  
0027279  Community  [OCCT] OCCT:Modeling Algorithms  public  20160317 16:01  20190812 16:44  
Reporter  Markus  
Assigned To  ifv  
Priority  normal  Severity  minor  
Status  assigned  Resolution  open  
Platform  OS  OS Version  
Product Version  [OCCT] 6.9.0  
Target Version  [OCCT] 7.5.0  Fixed in Version  
Summary  0027279: BRepOffsetAPI_NormalProjection fails to project an edge on a face  
Description  For a specific case BRepOffsetAPI_NormalProjection fails. A wire consisting of 3 edges should be projected on a face. The result is a compound with a single edge. The projection of the two other edges failed. For other, similar cases it works (see #25894).  
Steps To Reproduce  restore diff.brep d whatis d explode d whatis d_1 whatis d_2 checkshape d_1 checkshape d_2 tolerance d_1 tolerance d_2 vinit vdisplay d vfit nproject r d_2 d_1 whatis r explode r whatis r_1 vclear vdisplay r_1  
Tags  No tags attached.  
Test case number  
Attached Files  diff.brep (343,848 bytes) 20160317 16:01 input data.png (5,161 bytes) 20160317 16:01 result.png (3,183 bytes) 20160317 16:01 diffuser many dense sections  failing.png (39,397 bytes) 20170321 11:12 wrong projection at parameter 0,0003.png (48,627 bytes) 20170321 11:17  
Relationships  

Notes  
(0051758) msv (developer) 20160317 17:32 
Unfortunately, the fix for 27135 does not help with this bug. 
(0064571) Timo (developer) 20170321 11:11 
I want to provide still some input from our own investigations. We create the surface used for projection by BrepOffsetAPI_ThruSections. The sections are distributed unequally, but the resulting surface seems to be parameterized equally. At one end of the surface the sections are especially dense (see appended screenshot). If we use less sections there, the problem does not occur. If we use more sections there, the problem occurs. Maybe the surface starts to oscillate a little bit so that the normals get bad and the projection fails. This is just an idea. 
(0064572) Timo (developer) 20170321 11:14 
The problem was analyzed by OCC in April 2016: Reason of algorithm failure is problem of projecting two edges (d_2_1 and d_2_3) of wire d_2, see picture. Projection of any curve point on surface is performed by using Newton iterations from appropriate starting point for solving pair of equations: (PS(u,v))*dS/du = 0, (PS(u,v))*dS/dv = 0, P = C(t) is curve point for fixed parameter t, S(u,v) is point on surface for any surface parameters u, v. These equations are condition of the perpendicular projection of point on surface. It is possible to see class ProjLib_PrjResolve for details. At the beginning of each curve there are parametrical areas (approximate interval 0 ~ 0.0004) where Newton process convergences to “wrong” point, which is on surface boundary, see Picture. For example, projection of point of d_2_1 with parameter 0.0003 (red cross) is end of yellow arrow. Convergence of Newton process depends on local properties of surface near the starting points and for correct convergence we need some conditions for derivatives (see for example Kantorovich theorem). Sometimes these condition are not correct and Newton process cannot get correct roots of equations. It is difficult to define, are there small oscillations on surface or not and are the oscillation real reasons of bad projection, it is necessary to perform quite timeconsuming mathematical research. Area of possible surface oscillations is rather large, and covered large parametric range of curve, see Picture. But for t > 0.0004 projections of curve points are quite valid, on picture projection of point for t=0.001 is shown To solve this problem it is necessary: 1. To design and develop some algorithms for diagnosing such kind of problems; 2. To find out alternative methods for getting projection of point on surface, for example by minimization of distance between point and surface. Taking in account, that fast minimization methods use likeNewton iteration processes, we can meet the same problems. So, to solve the problem it is necessary to perform quite timeconsuming mathematical research. 
Issue History  
Date Modified  Username  Field  Change 
20160317 16:01  Timo  New Issue  
20160317 16:01  Timo  Assigned To  => msv 
20160317 16:01  Timo  File Added: diff.brep  
20160317 16:01  Timo  File Added: input data.png  
20160317 16:01  Timo  File Added: result.png  
20160317 17:09  san  Relationship added  related to 0027135 
20160317 17:32  msv  Note Added: 0051758  
20160415 15:05  ifv  Assigned To  msv => ifv 
20160415 15:05  ifv  Status  new => assigned 
20161028 11:54  msv  Target Version  7.1.0 => 7.2.0 
20170316 18:13  Timo  Relationship added  related to 0028562 
20170321 11:11  Timo  Note Added: 0064571  
20170321 11:12  Timo  File Added: diffuser many dense sections  failing.png  
20170321 11:14  Timo  Note Added: 0064572  
20170321 11:17  Timo  File Added: wrong projection at parameter 0,0003.png  
20170531 15:33  Timo  Reporter  Timo => Markus 
20170721 11:16  msv  Target Version  7.2.0 => 7.3.0 
20171205 17:09  msv  Target Version  7.3.0 => 7.4.0* 
20190812 16:44  msv  Target Version  7.4.0* => 7.5.0 
Copyright © 2000  2019 MantisBT Team 