Commit Graph

239 Commits

Author SHA1 Message Date
Sébastien Loriot b682c47c56 Merge remote-tracking branch 'cgal/5.5.x-branch' into HEAD 2024-08-26 15:22:53 +02:00
Sebastien Loriot 9dea168da5
Fix for Line_3 Ray_3 do_intersect (#8398)
## Summary of Changes

Some non intersection is wrongfully detected as an intersection for the
Line_3 Ray_3 combination. Here is an illustration:


![image](https://github.com/user-attachments/assets/f18fd662-5ad6-4a01-9a49-a8d0c62cf7fe)

The base code is :
```cpp
  if(!do_intersect(l, r.supporting_line()))
    return false;

  typename K::Coplanar_orientation_3 pred = k.coplanar_orientation_3_object();
  CGAL::Orientation p0p1s = pred(l.point(0), l.point(1), r.source());
  if(p0p1s == COLLINEAR)
    return true;

  CGAL::Orientation stp0 = pred(r.source(), r.second_point(), l.point(0));
  if(stp0 == COLLINEAR)
    return Ray_3_has_on_collinear_Point_3(r,l.point(0),k);

  return (p0p1s != stp0);
```

The supporting line of the ray intersects the line, and then nothing is
collinear, so we check L0,L1,R1 vs R0,R1,L0, which are of opposite sign
so there is an intersection... but there is none.

This check is very similar to what is done in Ray_3-Ray_3, where it is
correct.

I did a naive fix for now: without loss of generality we can go to the
configuration below


![image](https://github.com/user-attachments/assets/5f004941-7f58-4bf3-8416-7dc2144a891f)

and so we have an intersection as long as the ray "points" in the other
slab wrt to the line. And so, in coplanar orientation checks, if the
orientation L0,L1,R0 differs from L0, L1, (L0 + (R1-R0)).

I feel like I could probably skip at least a translation by having
something like Coplanar_orientation(P3, P3, P3, V3), and maybe even
more...

## Release Management

* Affected package(s): `Intersections_3`
* Issue(s) solved (if any): -
* Feature/Small Feature (if any): -
* License and copyright ownership: no change
2024-08-26 15:21:21 +02:00
Sébastien Loriot ca2907fbfc avoid creating degenerate planes 2024-08-20 10:09:23 +02:00
Mael Rouxel-Labbé c1e5926e70 Add new Intersection_3 test cases 2024-08-06 10:36:09 +02:00
Laurent Rineau 8a6b583780 Merge pull request #6880 from soesau/PMP-tests_only_for_epeck-soesau
Pmp tests only for epeck
2023-01-27 21:02:26 +01:00
Mael 0ff7882997
Merge branch 'master' into feature/bug_documentation_spell_20221113 2022-12-06 22:21:06 +01:00
Laurent Rineau e8ec440859 Merge branch 'master' into Kernel-Compare_distance_3_RT_FT__always_Filtered_predicate_RT_FT-GF
# Conflicts:
#	STL_Extension/doc/STL_Extension/CGAL/Concurrent_compact_container.h
2022-12-05 14:51:31 +01:00
Laurent Rineau 2f92fdded4 Merge pull request #7082 from MaelRL/Intersections_3-L3_bug-GF
Fix Line_3-Tet_3 intersection test
2022-12-05 12:21:56 +01:00
Laurent Rineau 3135821001 Merge pull request #7082 from MaelRL/Intersections_3-L3_bug-GF
Fix Line_3-Tet_3 intersection test
2022-12-05 11:57:11 +01:00
Mael da0b13699c
Merge branch 'master' into Kernel-Compare_distance_3_RT_FT__always_Filtered_predicate_RT_FT-GF 2022-12-02 23:19:29 +01:00
Mael Rouxel-Labbé 87960efc48 Fix Line_3 Tet_3 intersection test
The construction of the line is only valid if the tet is well oriented
2022-11-24 12:41:05 +01:00
Mael Rouxel-Labbé a758101038 Remove some useless includes 2022-11-22 12:35:44 +01:00
albert-github 45478184de spelling corrections
Some spelling corrections (Directories starting with `E`-` L`),
some backward work
some forward work
2022-11-15 13:39:40 +01:00
Sven Oesau cd3d7528ec intersection is only validated for exact construction kernels 2022-10-01 16:08:26 +02:00
Laurent Rineau 743de32052 Merge pull request #6779 from sloriot/Intersections_3-better_tetra_tri
Simpler implementation of Tet vs. Tri intersection
2022-09-13 12:33:08 +02:00
Laurent Rineau 0141404f4d Merge pull request #6809 from lrineau/Filtered_kernel-fix__do_intersect__Bbox_3__Triangle_3__static_filters-GF
Fix static filter of Do_intersect_3(Bbox_3,Triangle_3)
2022-09-13 12:33:03 +02:00
Laurent Rineau 4bc403857d Merge pull request #6779 from sloriot/Intersections_3-better_tetra_tri
Simpler implementation of Tet vs. Tri intersection
2022-09-13 12:32:22 +02:00
Laurent Rineau ad2a07e653 Merge pull request #6809 from lrineau/Filtered_kernel-fix__do_intersect__Bbox_3__Triangle_3__static_filters-GF
Fix static filter of Do_intersect_3(Bbox_3,Triangle_3)
2022-09-13 12:32:20 +02:00
Laurent Rineau e93011ae2a Merge pull request #6779 from sloriot/Intersections_3-better_tetra_tri
Simpler implementation of Tet vs. Tri intersection
2022-09-13 12:31:37 +02:00
Mael Rouxel-Labbé bc9aa692c3 Add a few more tests to Tr-Tet 2022-09-07 16:00:59 +02:00
Sébastien Loriot f0f01b70ba remove trailing whitespace 2022-09-07 08:44:42 +02:00
Andreas Fabri 550e4306c8 Add triangles completelty to the left of the bbox parallel/projection on face inside, projection on face intersects 2022-08-25 13:09:18 +01:00
Sébastien Loriot eaffbfb886 add new test from issue 2022-08-02 07:34:54 +02:00
Sébastien Loriot 445be90c04 update triangle (permutation) 2022-08-02 07:34:54 +02:00
Laurent Rineau 734c96e951 Merge branch 'master' into pr/lrineau/6558 2022-05-06 16:25:32 +02:00
Laurent Rineau 2288225448 Massive update of CMake policies to version 3.23 2022-05-06 09:34:35 +02:00
Andreas Fabri 21ebead9b0 Intersect_3: Fix assert in the testsuite 2022-05-03 11:54:19 +01:00
Sébastien Loriot ab48f63e30 update latest cmake version tested 2021-11-09 10:58:47 +01:00
Mael Rouxel-Labbé d61680e324 Fix warning 2021-08-31 11:08:39 +02:00
Mael Rouxel-Labbé 529da2ff68 Explicit the random seed in triangle/other tests 2021-08-29 13:54:01 +02:00
Mael Rouxel-Labbé f0b00551f6 Fix constructing degenerate spheres in Plane_3 intersection tests 2021-08-29 13:53:33 +02:00
Mael Rouxel-Labbé fe37492692 Remove debug print 2021-08-25 08:39:25 +02:00
Mael Rouxel-Labbé cc6e76dd85 Lower verbosity of Intersection_3 tests 2021-08-24 11:40:26 +02:00
Mael Rouxel-Labbé e1d6f75579 Fix bad tests 2021-08-23 11:49:54 +02:00
Mael Rouxel-Labbé 6dfe06a286 Fix conversion warnings 2021-08-23 11:49:45 +02:00
Mael Rouxel-Labbé db4c3fbc76 Fix misc issues within intersection tests themselves 2021-08-06 10:12:37 +02:00
Mael Rouxel-Labbé 0002c4ae61 Enhance tests 2021-08-03 14:34:37 +02:00
Mael Rouxel-Labbé bdba6eedfe Fix accidentally calling API-only tests 2021-07-29 14:24:54 +02:00
Mael Rouxel-Labbé 98b7235aea Add missing helper file 2021-07-29 13:43:40 +02:00
Mael Rouxel-Labbé 989f8b79de More tests for the intersection Tet_3/Tr_3 2021-07-05 22:02:54 +02:00
Mael Rouxel-Labbé 2b41096f69 Fix Sphere_3 Triangle_3/Tetrahedron_3 do_intersect 2021-06-30 11:26:13 +02:00
Mael Rouxel-Labbé 3afa3b546b Re-enable tests + enhancements 2021-06-29 09:25:40 +02:00
Mael Rouxel-Labbé 6b6ab287a8 Fix Segment_3-Sphere_3 do intersect: detect fully contained segments 2021-06-28 13:26:28 +02:00
Mael Rouxel-Labbé 65b7d11acd Test improvements 2021-06-25 21:28:54 +02:00
Mael Rouxel-Labbé d1b456cd70 Add a lot more testing to Intersections_3 2021-06-23 17:39:52 +02:00
Laurent Rineau 38812be5eb Merge pull request #5680 from afabri/Intersections-fix_RT-GF
Intersections_3: Fix do_intersect(sphere/triangle) if FT has no division
2021-05-27 19:12:35 +02:00
Andreas Fabri 4f7703fd94 trailing whitespace 2021-05-06 08:07:39 +02:00
Andreas Fabri b7b2e19555 Add the sphere ray tests 2021-05-05 17:39:59 +02:00
Andreas Fabri 10e1b51ed3 Add &s 2021-05-05 17:24:37 +02:00
Andreas Fabri 28a6a91453 Intersections_3: Make do_intersect(sphere/triangle) work if FT is division free 2021-05-05 16:54:05 +02:00