Represents a Euclidean 3D plane. More...
#include <vgl_plane_3d.h>
Public Member Functions | |
vgl_plane_3d () | |
vgl_plane_3d (T ta, T tb, T tc, T td) | |
Construct a vgl_plane_3d from its equation $ax+by+cz+d=0$. | |
vgl_plane_3d (const T v[4]) | |
Construct a vgl_plane_3d from its equation $v[0]x+v[1]y+v[2]z+v[3]=0$. | |
vgl_plane_3d (vgl_homg_plane_3d< T > const &p) | |
Construct from a homogeneous plane. | |
vgl_plane_3d (vgl_vector_3d< T > const &normal, vgl_point_3d< T > const &p) | |
Construct from Normal and a point. | |
vgl_plane_3d (vgl_point_3d< T > const &p1, vgl_point_3d< T > const &p2, vgl_point_3d< T > const &p3) | |
Construct from three non-collinear points. | |
T | a () const |
Return x coefficient. | |
T | nx () const |
T | b () const |
Return y coefficient. | |
T | ny () const |
T | c () const |
Return z coefficient. | |
T | nz () const |
T | d () const |
Return constant coefficient. | |
void | set (T ta, T tb, T tc, T td) |
Set this vgl_plane_3d to have the equation $ax+by+cz+d=0$. | |
bool | operator== (vgl_plane_3d< T > const &p) const |
the comparison operator. | |
bool | operator!= (vgl_plane_3d< T >const &p) const |
bool | ideal (T=(T) 0) const |
Return true iff the plane is the plane at infinity. | |
vgl_vector_3d< T > | normal () const |
Return the normal direction, i.e., a unit vector orthogonal to this plane. | |
bool | contains (vgl_point_3d< T > const &p, T tol=(T) 0) const |
Return true if p is on the plane. | |
bool | plane_coords (vgl_point_3d< T > const &p3d, vgl_point_2d< T > &p2d, T tol=(T) 0) const |
Given a 3-d point, return a 2-d point in the coord. system of the plane. | |
vgl_point_3d< T > | world_coords (vgl_point_2d< T > const &p2d) const |
inverse map from plane coordinates to world coordinates. | |
void | plane_coord_vectors (vgl_vector_3d< T > &uvec, vgl_vector_3d< T > &vvec) const |
plane coordinate unit vectors. | |
Private Attributes | |
T | a_ |
T | b_ |
T | c_ |
T | d_ |
Related Functions | |
(Note that these are not member functions.) | |
template<class T > | |
vgl_point_3d< T > | vgl_intersection (const vcl_vector< vgl_plane_3d< T > > &p) |
Return the intersection point of vector of planes. | |
template<class T > | |
vgl_point_3d< T > | vgl_closest_point (vgl_plane_3d< T > const &pl, vgl_point_3d< T > const &p) |
Return the point on the given plane closest to the given point. | |
template<class T > | |
double | vgl_distance_origin (vgl_plane_3d< T > const &pl) |
find the shortest distance of the plane to the origin. | |
template<class T > | |
double | vgl_distance (vgl_plane_3d< T > const &l, vgl_point_3d< T > const &p) |
return the perpendicular distance from a point to a plane in 3D. | |
template<class T > | |
vgl_point_3d< T > | vgl_intersection (vgl_line_3d_2_points< T > const &line, vgl_plane_3d< T > const &plane) |
Return the intersection point of a line and a plane. | |
template<class T > | |
bool | vgl_intersection (vgl_line_segment_3d< T > const &line, vgl_plane_3d< T > const &plane, vgl_point_3d< T > &i_pt) |
Return the intersection point of a line and a plane. | |
template<class T > | |
bool | vgl_intersection (vgl_infinite_line_3d< T > const &line, vgl_plane_3d< T > const &plane, vgl_point_3d< T > &i_pt) |
Return the intersection point of a line and a plane. | |
template<class T > | |
bool | vgl_intersection (vgl_ray_3d< T > const &ray, vgl_plane_3d< T > const &plane, vgl_point_3d< T > &i_pt) |
Return the intersection point of a ray and a plane. | |
template<class T > | |
bool | vgl_intersection (vgl_plane_3d< T > const &plane0, vgl_plane_3d< T > const &plane1, vgl_line_segment_3d< T > &line) |
Return the intersection line of two planes. | |
template<class T > | |
vgl_point_3d< T > | vgl_intersection (vgl_plane_3d< T > const &p1, vgl_plane_3d< T > const &p2, vgl_plane_3d< T > const &p3) |
Return the intersection point of three planes. | |
template<class T > | |
bool | vgl_intersection (vgl_plane_3d< T > const &plane0, vgl_plane_3d< T > const &plane1, vgl_infinite_line_3d< T > &line) |
Return the intersection line of two planes. Returns false if planes. | |
template<class T > | |
vcl_ostream & | operator<< (vcl_ostream &s, const vgl_plane_3d< T > &p) |
Write to stream. | |
template<class T > | |
vcl_istream & | operator>> (vcl_istream &is, vgl_plane_3d< T > &p) |
Read in four plane parameters from stream. |
Represents a Euclidean 3D plane.
The equation of the plane is
Definition at line 32 of file vgl_plane_3d.h.
vgl_plane_3d< T >::vgl_plane_3d | ( | ) | [inline] |
Definition at line 45 of file vgl_plane_3d.h.
vgl_plane_3d< T >::vgl_plane_3d | ( | T | ta, |
T | tb, | ||
T | tc, | ||
T | td | ||
) | [inline] |
Construct a vgl_plane_3d from its equation $ax+by+cz+d=0$.
At least one of a, b or c should be nonzero.
Definition at line 60 of file vgl_plane_3d.h.
vgl_plane_3d< T >::vgl_plane_3d | ( | const T | v[4] | ) | [inline] |
Construct a vgl_plane_3d from its equation $v[0]x+v[1]y+v[2]z+v[3]=0$.
At least one of v[0], v[1] or v[2] should be nonzero.
Definition at line 65 of file vgl_plane_3d.h.
vgl_plane_3d< T >::vgl_plane_3d | ( | vgl_homg_plane_3d< T > const & | p | ) |
Construct from a homogeneous plane.
Construct from homogeneous plane.
Definition at line 20 of file vgl_plane_3d.txx.
vgl_plane_3d< T >::vgl_plane_3d | ( | vgl_vector_3d< T > const & | normal, |
vgl_point_3d< T > const & | p | ||
) |
Construct from Normal and a point.
Construct from normal and a point.
The plane goes through the point p and will be orthogonal to normal.
Definition at line 46 of file vgl_plane_3d.txx.
vgl_plane_3d< T >::vgl_plane_3d | ( | vgl_point_3d< T > const & | p1, |
vgl_point_3d< T > const & | p2, | ||
vgl_point_3d< T > const & | p3 | ||
) |
Construct from three non-collinear points.
Construct from three points.
The plane will contain all three points p1, p2 and p3.
Definition at line 25 of file vgl_plane_3d.txx.
T vgl_plane_3d< T >::a | ( | ) | const [inline] |
Return x coefficient.
Definition at line 85 of file vgl_plane_3d.h.
T vgl_plane_3d< T >::b | ( | ) | const [inline] |
Return y coefficient.
Definition at line 88 of file vgl_plane_3d.h.
T vgl_plane_3d< T >::c | ( | ) | const [inline] |
Return z coefficient.
Definition at line 91 of file vgl_plane_3d.h.
bool vgl_plane_3d< T >::contains | ( | vgl_point_3d< T > const & | p, |
T | tol = (T)0 |
||
) | const |
Return true if p is on the plane.
Definition at line 55 of file vgl_plane_3d.txx.
T vgl_plane_3d< T >::d | ( | ) | const [inline] |
Return constant coefficient.
Definition at line 94 of file vgl_plane_3d.h.
bool vgl_plane_3d< T >::ideal | ( | T | = (T)0 | ) | const [inline] |
Return true iff the plane is the plane at infinity.
Always returns false
Definition at line 106 of file vgl_plane_3d.h.
vgl_vector_3d<T> vgl_plane_3d< T >::normal | ( | ) | const [inline] |
Return the normal direction, i.e., a unit vector orthogonal to this plane.
Definition at line 109 of file vgl_plane_3d.h.
T vgl_plane_3d< T >::nx | ( | ) | const [inline] |
Definition at line 86 of file vgl_plane_3d.h.
T vgl_plane_3d< T >::ny | ( | ) | const [inline] |
Definition at line 89 of file vgl_plane_3d.h.
T vgl_plane_3d< T >::nz | ( | ) | const [inline] |
Definition at line 92 of file vgl_plane_3d.h.
bool vgl_plane_3d< T >::operator!= | ( | vgl_plane_3d< T >const & | p | ) | const [inline] |
Definition at line 102 of file vgl_plane_3d.h.
bool vgl_plane_3d< T >::operator== | ( | vgl_plane_3d< T > const & | p | ) | const |
the comparison operator.
The equations need not be identical, but just equivalent.
Definition at line 64 of file vgl_plane_3d.txx.
void vgl_plane_3d< T >::plane_coord_vectors | ( | vgl_vector_3d< T > & | uvec, |
vgl_vector_3d< T > & | vvec | ||
) | const |
plane coordinate unit vectors.
Definition at line 139 of file vgl_plane_3d.txx.
bool vgl_plane_3d< T >::plane_coords | ( | vgl_point_3d< T > const & | p3d, |
vgl_point_2d< T > & | p2d, | ||
T | tol = (T)0 |
||
) | const |
Given a 3-d point, return a 2-d point in the coord. system of the plane.
If the point is not on the plane then false is returned
Definition at line 158 of file vgl_plane_3d.txx.
void vgl_plane_3d< T >::set | ( | T | ta, |
T | tb, | ||
T | tc, | ||
T | td | ||
) | [inline] |
Set this vgl_plane_3d to have the equation $ax+by+cz+d=0$.
Definition at line 97 of file vgl_plane_3d.h.
vgl_point_3d< T > vgl_plane_3d< T >::world_coords | ( | vgl_point_2d< T > const & | p2d | ) | const |
inverse map from plane coordinates to world coordinates.
Definition at line 180 of file vgl_plane_3d.txx.
vcl_ostream & operator<< | ( | vcl_ostream & | s, |
const vgl_plane_3d< T > & | p | ||
) | [related] |
Write to stream.
vcl_istream & operator>> | ( | vcl_istream & | is, |
vgl_plane_3d< T > & | p | ||
) | [related] |
Read in four plane parameters from stream.
Either just reads four blank-separated numbers, or reads four comma-separated numbers, or reads four numbers in parenthesized form "(123, 321, -456, 777)" or reads a formatted line equation "123x+321y-456z+777=0"
vgl_point_3d< T > vgl_closest_point | ( | vgl_plane_3d< T > const & | pl, |
vgl_point_3d< T > const & | p | ||
) | [related] |
Return the point on the given plane closest to the given point.
double vgl_distance | ( | vgl_plane_3d< T > const & | l, |
vgl_point_3d< T > const & | p | ||
) | [related] |
return the perpendicular distance from a point to a plane in 3D.
double vgl_distance_origin | ( | vgl_plane_3d< T > const & | pl | ) | [related] |
find the shortest distance of the plane to the origin.
vgl_point_3d< T > vgl_intersection | ( | const vcl_vector< vgl_plane_3d< T > > & | p | ) | [related] |
Return the intersection point of vector of planes.
vgl_point_3d< T > vgl_intersection | ( | vgl_line_3d_2_points< T > const & | line, |
vgl_plane_3d< T > const & | plane | ||
) | [related] |
Return the intersection point of a line and a plane.
Definition at line 544 of file vgl_intersection.txx.
bool vgl_intersection | ( | vgl_line_segment_3d< T > const & | line, |
vgl_plane_3d< T > const & | plane, | ||
vgl_point_3d< T > & | i_pt | ||
) | [related] |
Return the intersection point of a line and a plane.
Definition at line 584 of file vgl_intersection.txx.
bool vgl_intersection | ( | vgl_infinite_line_3d< T > const & | line, |
vgl_plane_3d< T > const & | plane, | ||
vgl_point_3d< T > & | i_pt | ||
) | [related] |
Return the intersection point of a line and a plane.
bool vgl_intersection | ( | vgl_ray_3d< T > const & | ray, |
vgl_plane_3d< T > const & | plane, | ||
vgl_point_3d< T > & | i_pt | ||
) | [related] |
Return the intersection point of a ray and a plane.
bool vgl_intersection | ( | vgl_plane_3d< T > const & | plane0, |
vgl_plane_3d< T > const & | plane1, | ||
vgl_line_segment_3d< T > & | line | ||
) | [related] |
Return the intersection line of two planes.
Returns false if planes are effectively parallel
Definition at line 150 of file vgl_intersection.h.
vgl_point_3d< T > vgl_intersection | ( | vgl_plane_3d< T > const & | p1, |
vgl_plane_3d< T > const & | p2, | ||
vgl_plane_3d< T > const & | p3 | ||
) | [related] |
Return the intersection point of three planes.
Definition at line 804 of file vgl_intersection.txx.
bool vgl_intersection | ( | vgl_plane_3d< T > const & | plane0, |
vgl_plane_3d< T > const & | plane1, | ||
vgl_infinite_line_3d< T > & | line | ||
) | [related] |
Return the intersection line of two planes. Returns false if planes.
are effectively parallel
Definition at line 726 of file vgl_intersection.txx.
T vgl_plane_3d< T >::a_ [private] |
Definition at line 35 of file vgl_plane_3d.h.
T vgl_plane_3d< T >::b_ [private] |
Definition at line 36 of file vgl_plane_3d.h.
T vgl_plane_3d< T >::c_ [private] |
Definition at line 37 of file vgl_plane_3d.h.
T vgl_plane_3d< T >::d_ [private] |
Definition at line 38 of file vgl_plane_3d.h.