|
CGAL 5.1 - 2D and 3D Linear Geometry Kernel
|
#include <CGAL/Plane_3.h>
An object h of the data type Plane_3 is an oriented plane in the three-dimensional Euclidean space \( \E^3\). It is defined by the set of points with Cartesian coordinates \( (x,y,z)\) that satisfy the plane equation
\[h :\; a\, x +b\, y +c\, z + d = 0.\]
The plane splits \( \E^3\) in a positive and a negative side. A point p with Cartesian coordinates \( (px, py, pz)\) is on the positive side of h, iff \( a\, px +b\, py +c\, pz + d > 0\). It is on the negative side, iff \( a\, px +b\, py\, +c\, pz + d < 0\).
Creation | |
| Plane_3 (const Kernel::RT &a, const Kernel::RT &b, const Kernel::RT &c, const Kernel::RT &d) | |
creates a plane h defined by the equation \( a\, px +b\, py +c\, pz + d = 0\). More... | |
| Plane_3 (const Point_3< Kernel > &p, const Point_3< Kernel > &q, const Point_3< Kernel > &r) | |
creates a plane h passing through the points p, q and r. More... | |
| Plane_3 (const Point_3< Kernel > &p, const Vector_3< Kernel > &v) | |
introduces a plane h that passes through point p and that is orthogonal to v. More... | |
| Plane_3 (const Point_3< Kernel > &p, const Direction_3< Kernel > &d) | |
introduces a plane h that passes through point p and that has as an orthogonal direction equal to d. More... | |
| Plane_3 (const Line_3< Kernel > &l, const Point_3< Kernel > &p) | |
introduces a plane h that is defined through the three points l.point(0), l.point(1) and p. More... | |
| Plane_3 (const Ray_3< Kernel > &r, const Point_3< Kernel > &p) | |
introduces a plane h that is defined through the three points r.point(0), r.point(1) and p. More... | |
| Plane_3 (const Segment_3< Kernel > &s, const Point_3< Kernel > &p) | |
introduces a plane h that is defined through the three points s.source(), s.target() and p. More... | |
| Plane_3 (const Circle_3< Kernel > &c) | |
introduces a plane h that is defined as the plane containing the circle. More... | |
Operations | |
| bool | operator== (const Plane_3< Kernel > &h2) const |
| Test for equality: two planes are equal, iff they have a non empty intersection and the same orientation. More... | |
| bool | operator!= (const Plane_3< Kernel > &h2) const |
| Test for inequality. More... | |
| Kernel::RT | a () const |
returns the first coefficient of h. More... | |
| Kernel::RT | b () const |
returns the second coefficient of h. More... | |
| Kernel::RT | c () const |
returns the third coefficient of h. More... | |
| Kernel::RT | d () const |
returns the fourth coefficient of h. More... | |
| Line_3< Kernel > | perpendicular_line (const Point_3< Kernel > &p) const |
returns the line that is perpendicular to h and that passes through point p. More... | |
| Point_3< Kernel > | projection (const Point_3< Kernel > &p) const |
returns the orthogonal projection of p on h. More... | |
| Plane_3< Kernel > | opposite () const |
| returns the plane with opposite orientation. More... | |
| Point_3< Kernel > | point () const |
returns an arbitrary point on h. More... | |
| Vector_3< Kernel > | orthogonal_vector () const |
returns a vector that is orthogonal to h and that is directed to the positive side of h. More... | |
| Direction_3< Kernel > | orthogonal_direction () const |
returns the direction that is orthogonal to h and that is directed to the positive side of h. More... | |
| Vector_3< Kernel > | base1 () const |
returns a vector orthogonal to orthogonal_vector(). More... | |
| Vector_3< Kernel > | base2 () const |
returns a vector that is both orthogonal to base1(), and to orthogonal_vector(), and such that the result of orientation( point(), point() + base1(), point()+base2(), point() + orthogonal_vector() ) is positive. More... | |
2D Conversion | |
The following functions provide conversion between a plane and CGAL's two-dimensional space. The transformation is affine, but not necessarily an isometry. This means, the transformation preserves combinatorics, but not distances. | |
| Point_2< Kernel > | to_2d (const Point_3< Kernel > &p) const |
returns the image point of the projection of p under an affine transformation, which maps h onto the \( xy\)-plane, with the \( z\)-coordinate removed. More... | |
| Point_3< Kernel > | to_3d (const Point_2< Kernel > &p) const |
returns a point q, such that to_2d( to_3d( p )) is equal to p. More... | |
Predicates | |
| Oriented_side | oriented_side (const Point_3< Kernel > &p) const |
returns either ON_ORIENTED_BOUNDARY, or the constant ON_POSITIVE_SIDE, or the constant ON_NEGATIVE_SIDE, determined by the position of p relative to the oriented plane h. More... | |
Convenience Boolean Functions | |
| bool | has_on (const Point_3< Kernel > &p) const |
| bool | has_on_positive_side (const Point_3< Kernel > &p) const |
| bool | has_on_negative_side (const Point_3< Kernel > &p) const |
| bool | has_on (const Line_3< Kernel > &l) const |
| bool | has_on (const Circle_3< Kernel > &l) const |
| bool | is_degenerate () const |
Plane h is degenerate, if the coefficients a, b, and c of the plane equation are zero. More... | |
Miscellaneous | |
| Plane_3< Kernel > | transform (const Aff_transformation_3< Kernel > &t) const |
returns the plane obtained by applying t on a point of h and the orthogonal direction of h. More... | |
| CGAL::Plane_3< Kernel >::Plane_3 | ( | const Kernel::RT & | a, |
| const Kernel::RT & | b, | ||
| const Kernel::RT & | c, | ||
| const Kernel::RT & | d | ||
| ) |
creates a plane h defined by the equation \( a\, px +b\, py +c\, pz + d = 0\).
Notice that h is degenerate if \( a = b = c = 0\).
| CGAL::Plane_3< Kernel >::Plane_3 | ( | const Point_3< Kernel > & | p, |
| const Point_3< Kernel > & | q, | ||
| const Point_3< Kernel > & | r | ||
| ) |
creates a plane h passing through the points p, q and r.
The plane is oriented such that p, q and r are oriented in a positive sense (that is counterclockwise) when seen from the positive side of h. Notice that h is degenerate if the points are collinear.
| CGAL::Plane_3< Kernel >::Plane_3 | ( | const Point_3< Kernel > & | p, |
| const Vector_3< Kernel > & | v | ||
| ) |
introduces a plane h that passes through point p and that is orthogonal to v.
| CGAL::Plane_3< Kernel >::Plane_3 | ( | const Point_3< Kernel > & | p, |
| const Direction_3< Kernel > & | d | ||
| ) |
introduces a plane h that passes through point p and that has as an orthogonal direction equal to d.
| CGAL::Plane_3< Kernel >::Plane_3 | ( | const Line_3< Kernel > & | l, |
| const Point_3< Kernel > & | p | ||
| ) |
introduces a plane h that is defined through the three points l.point(0), l.point(1) and p.
| CGAL::Plane_3< Kernel >::Plane_3 | ( | const Ray_3< Kernel > & | r, |
| const Point_3< Kernel > & | p | ||
| ) |
introduces a plane h that is defined through the three points r.point(0), r.point(1) and p.
| CGAL::Plane_3< Kernel >::Plane_3 | ( | const Segment_3< Kernel > & | s, |
| const Point_3< Kernel > & | p | ||
| ) |
introduces a plane h that is defined through the three points s.source(), s.target() and p.
| CGAL::Plane_3< Kernel >::Plane_3 | ( | const Circle_3< Kernel > & | c | ) |
introduces a plane h that is defined as the plane containing the circle.
| Kernel::RT CGAL::Plane_3< Kernel >::a | ( | ) | const |
returns the first coefficient of h.
| Kernel::RT CGAL::Plane_3< Kernel >::b | ( | ) | const |
returns the second coefficient of h.
| Vector_3<Kernel> CGAL::Plane_3< Kernel >::base1 | ( | ) | const |
returns a vector orthogonal to orthogonal_vector().
| Vector_3<Kernel> CGAL::Plane_3< Kernel >::base2 | ( | ) | const |
returns a vector that is both orthogonal to base1(), and to orthogonal_vector(), and such that the result of orientation( point(), point() + base1(), point()+base2(), point() + orthogonal_vector() ) is positive.
| Kernel::RT CGAL::Plane_3< Kernel >::c | ( | ) | const |
returns the third coefficient of h.
| Kernel::RT CGAL::Plane_3< Kernel >::d | ( | ) | const |
returns the fourth coefficient of h.
| bool CGAL::Plane_3< Kernel >::has_on | ( | const Circle_3< Kernel > & | l | ) | const |
| bool CGAL::Plane_3< Kernel >::has_on | ( | const Line_3< Kernel > & | l | ) | const |
| bool CGAL::Plane_3< Kernel >::has_on | ( | const Point_3< Kernel > & | p | ) | const |
| bool CGAL::Plane_3< Kernel >::has_on_negative_side | ( | const Point_3< Kernel > & | p | ) | const |
| bool CGAL::Plane_3< Kernel >::has_on_positive_side | ( | const Point_3< Kernel > & | p | ) | const |
| bool CGAL::Plane_3< Kernel >::is_degenerate | ( | ) | const |
Plane h is degenerate, if the coefficients a, b, and c of the plane equation are zero.
| bool CGAL::Plane_3< Kernel >::operator!= | ( | const Plane_3< Kernel > & | h2 | ) | const |
Test for inequality.
| bool CGAL::Plane_3< Kernel >::operator== | ( | const Plane_3< Kernel > & | h2 | ) | const |
Test for equality: two planes are equal, iff they have a non empty intersection and the same orientation.
| Plane_3<Kernel> CGAL::Plane_3< Kernel >::opposite | ( | ) | const |
returns the plane with opposite orientation.
| Oriented_side CGAL::Plane_3< Kernel >::oriented_side | ( | const Point_3< Kernel > & | p | ) | const |
returns either ON_ORIENTED_BOUNDARY, or the constant ON_POSITIVE_SIDE, or the constant ON_NEGATIVE_SIDE, determined by the position of p relative to the oriented plane h.
| Direction_3<Kernel> CGAL::Plane_3< Kernel >::orthogonal_direction | ( | ) | const |
returns the direction that is orthogonal to h and that is directed to the positive side of h.
| Vector_3<Kernel> CGAL::Plane_3< Kernel >::orthogonal_vector | ( | ) | const |
returns a vector that is orthogonal to h and that is directed to the positive side of h.
| Line_3<Kernel> CGAL::Plane_3< Kernel >::perpendicular_line | ( | const Point_3< Kernel > & | p | ) | const |
returns the line that is perpendicular to h and that passes through point p.
The line is oriented from the negative to the positive side of h.
| Point_3<Kernel> CGAL::Plane_3< Kernel >::point | ( | ) | const |
returns an arbitrary point on h.
| Point_3<Kernel> CGAL::Plane_3< Kernel >::projection | ( | const Point_3< Kernel > & | p | ) | const |
returns the orthogonal projection of p on h.
| Point_2<Kernel> CGAL::Plane_3< Kernel >::to_2d | ( | const Point_3< Kernel > & | p | ) | const |
returns the image point of the projection of p under an affine transformation, which maps h onto the \( xy\)-plane, with the \( z\)-coordinate removed.
| Point_3<Kernel> CGAL::Plane_3< Kernel >::to_3d | ( | const Point_2< Kernel > & | p | ) | const |
returns a point q, such that to_2d( to_3d( p )) is equal to p.
| Plane_3<Kernel> CGAL::Plane_3< Kernel >::transform | ( | const Aff_transformation_3< Kernel > & | t | ) | const |
returns the plane obtained by applying t on a point of h and the orthogonal direction of h.