0024696: Lower performance of the new Edge/Edge intersection algorithm

Performance improvements in IntTools_EdgeEdge algorithm:
1. Added check for common box between edges: if common box between edges is thin,
   find exact solutions at once, without looking for rough ranges first;
2. Improved methods IntTools_EdgeEdge::FindBestSolution() and
   IntTools_EdgeEdge::CheckCoincidence(...) by using method SplitRangeOnSegments
   with resolution of the curve as a criteria for size of the ranges.

Test cases for issue CR24696
This commit is contained in:
emv
2014-03-20 13:36:43 +04:00
committed by bugmaster
parent fa84b8ffc4
commit 0d19eb340e
3 changed files with 205 additions and 93 deletions

View File

@@ -132,14 +132,22 @@ is
is protected;
---Purpose:
-- Looking for the rough intersection ranges
FindSolutions(me:out;
theRanges1 : out SequenceOfRanges from IntTools;
theRanges2 : out SequenceOfRanges from IntTools)
is protected;
---Purpose:
-- Looking for solutions
FindSolutions(me:out;
theR1, theR2 : Range from IntTools;
theBC : Box from Bnd;
theRanges1 : out SequenceOfRanges from IntTools;
theRanges2 : out SequenceOfRanges from IntTools)
is protected;
---Purpose:
-- Looking fot the exact intersection ranges
-- Looking for the exact intersection ranges
MergeSolutions(me:out;
theRanges1, theRanges2 : SequenceOfRanges from IntTools)