mirror of https://github.com/CGAL/cgal
62 lines
1.7 KiB
C++
62 lines
1.7 KiB
C++
namespace CGAL {
|
|
|
|
/*!
|
|
\addtogroup squared_distance_grp
|
|
|
|
\code
|
|
#include <CGAL/squared_distance_2.h> //for 2D functions
|
|
#include <CGAL/squared_distance_3.h> //for 3D functions
|
|
\endcode
|
|
|
|
*/
|
|
/// @{
|
|
|
|
/*!
|
|
computes the square of the Euclidean distance between two geometric
|
|
objects. For arbitrary geometric objects `obj1` and `obj2` the
|
|
squared distance is defined as the minimal `squared_distance(p1, p2)`,
|
|
where `p1` is a point of `obj1` and `p2` is a point of `obj2`. Note
|
|
that for objects that have an inside (a bounded region), this inside
|
|
is part of the object. So, the squared distance from a point inside is
|
|
zero, not the squared distance to the closest point on the boundary.
|
|
|
|
In 2D, the types `Type1` and `Type2` can be any of the following:
|
|
|
|
- `Point_2`
|
|
- `Line_2`
|
|
- `Ray_2`
|
|
- `Segment_2`
|
|
- `Triangle_2`
|
|
|
|
as well as any combination of `Kernel::Point_2` and `Kernel::Weighted_point_2`
|
|
|
|
In 3D, the types `Type1` and `Type2` can be any of the following:
|
|
|
|
- `Point_3`
|
|
- `Line_3`
|
|
- `Ray_3`
|
|
- `Segment_3`
|
|
- `Plane_3`
|
|
|
|
as well as the following combinations:
|
|
- `Point_3`/`Triangle_3`
|
|
- `Point_3`/`Tetrahedron_3`
|
|
- `Weighted_point_3`/`Triangle_3`
|
|
- `Weighted_point_3`/`Tetrahedron_3`
|
|
- `Triangle_3`/`Triangle_3`
|
|
|
|
\sa `compare_distance_to_point_grp`
|
|
\sa `compare_signed_distance_to_line_grp`
|
|
\sa `compare_signed_distance_to_plane_grp`
|
|
\sa `has_larger_distance_to_point_grp`
|
|
\sa `has_larger_signed_distance_to_line_grp`
|
|
\sa `has_larger_signed_distance_to_plane_grp`
|
|
\sa `has_smaller_distance_to_point_grp`
|
|
\sa `has_smaller_signed_distance_to_line_grp`
|
|
\sa `has_smaller_signed_distance_to_plane_grp`
|
|
*/
|
|
template <typename Kernel>
|
|
Kernel::FT squared_distance(Type1<Kernel> obj1, Type2<Kernel> obj2);
|
|
/// @}
|
|
}
|