MantisBT
Mantis Bug Tracker Workflow

View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0027279Community[OCCT] OCCT:Modeling Algorithmspublic2016-03-17 16:012017-12-05 17:09
ReporterMarkus 
Assigned Toifv 
PrioritynormalSeverityminor 
StatusassignedResolutionopen 
PlatformOSOS Version
Product Version[OCCT] 6.9.0 
Target Version[OCCT] 7.4.0*Fixed in Version 
Summary0027279: BRepOffsetAPI_NormalProjection fails to project an edge on a face
DescriptionFor 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 Reproducerestore 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

TagsNo tags attached.
Test case number
Attached Files? file icon diff.brep (343,848 bytes) 2016-03-17 16:01
png file icon input data.png (5,161 bytes) 2016-03-17 16:01
png file icon result.png (3,183 bytes) 2016-03-17 16:01
png file icon diffuser many dense sections - failing.png (39,397 bytes) 2017-03-21 11:12
png file icon wrong projection at parameter 0,0003.png (48,627 bytes) 2017-03-21 11:17

- Relationships
related to 0028562closedbugmaster Open CASCADE Replacement of old Boolean operations (BRepAlgo) with new ones (BRepAlgoAPI) in BRepAlgo_NormalProjection 

-  Notes
(0051758)
msv (developer)
2016-03-17 17:32

Unfortunately, the fix for 27135 does not help with this bug.
(0064571)
Timo (developer)
2017-03-21 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)
2017-03-21 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:
(P-S(u,v))*dS/du = 0, (P-S(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 time-consuming 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 like-Newton iteration processes, we can meet the same problems.

So, to solve the problem it is necessary to perform quite time-consuming mathematical research.

- Issue History
Date Modified Username Field Change
2016-03-17 16:01 Timo New Issue
2016-03-17 16:01 Timo Assigned To => msv
2016-03-17 16:01 Timo File Added: diff.brep
2016-03-17 16:01 Timo File Added: input data.png
2016-03-17 16:01 Timo File Added: result.png
2016-03-17 17:09 san Relationship added related to 0027135
2016-03-17 17:32 msv Note Added: 0051758
2016-04-15 15:05 ifv Assigned To msv => ifv
2016-04-15 15:05 ifv Status new => assigned
2016-10-28 11:54 msv Target Version 7.1.0 => 7.2.0
2017-03-16 18:13 Timo Relationship added related to 0028562
2017-03-21 11:11 Timo Note Added: 0064571
2017-03-21 11:12 Timo File Added: diffuser many dense sections - failing.png
2017-03-21 11:14 Timo Note Added: 0064572
2017-03-21 11:17 Timo File Added: wrong projection at parameter 0,0003.png
2017-05-31 15:33 Timo Reporter Timo => Markus
2017-07-21 11:16 msv Target Version 7.2.0 => 7.3.0
2017-12-05 17:09 msv Target Version 7.3.0 => 7.4.0*


Copyright © 2000 - 2018 MantisBT Team
Powered by Mantis Bugtracker