Merge pull request #6796 from janetournois/Mesh_3-compare_distance_performance_issue-jtournois

Mesh_3 speedup (filter failures in `Compare_distance_3(Point_3, Segment_3, Point_3)` )
This commit is contained in:
Laurent Rineau 2022-10-04 13:48:18 +02:00
commit 207a1e896b
1 changed files with 15 additions and 6 deletions

View File

@ -373,16 +373,23 @@ private:
if(nearest_is_a_segment)
{
if(compare_distance(p, seg, nearest_segment) == CGAL::SMALLER)
{
nearest_segment = seg;
result = previous;
}
if(compare_distance(p, *it, nearest_segment) == CGAL::SMALLER)
{
nearest_vertex = it;
nearest_is_a_segment = false;
result = it;
if (possibly(angle(*previous, *it, p) == CGAL::ACUTE) &&
compare_distance(p, seg, *nearest_vertex) == CGAL::SMALLER)
{
nearest_segment = seg;
nearest_is_a_segment = true;
result = previous;
}
}
else if(compare_distance(p, seg, nearest_segment) == CGAL::SMALLER)
{
nearest_segment = seg;
result = previous;
}
}
else {
@ -391,7 +398,9 @@ private:
nearest_vertex = it;
result = it;
}
if(compare_distance(p, seg, *nearest_vertex) == CGAL::SMALLER)
if ((nearest_vertex != it ||
possibly(angle(*previous, *it, p) == CGAL::ACUTE)) &&
compare_distance(p, seg, *nearest_vertex) == CGAL::SMALLER)
{
nearest_segment = seg;
nearest_is_a_segment = true;