Public Member Functions | Private Attributes | Related Functions
vgl_plane_3d< T > Class Template Reference

Represents a Euclidean 3D plane. More...

#include <vgl_plane_3d.h>

List of all members.

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.
a () const
 Return x coefficient.
nx () const
b () const
 Return y coefficient.
ny () const
c () const
 Return z coefficient.
nz () const
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

a_
b_
c_
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.

Detailed Description

template<class T>
class vgl_plane_3d< T >

Represents a Euclidean 3D plane.

The equation of the plane is $ a x + b y + c z + d = 0 $

Definition at line 32 of file vgl_plane_3d.h.


Constructor & Destructor Documentation

template<class T>
vgl_plane_3d< T >::vgl_plane_3d ( ) [inline]

Definition at line 45 of file vgl_plane_3d.h.

template<class T>
vgl_plane_3d< T >::vgl_plane_3d ( ta,
tb,
tc,
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.

template<class T>
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.

template<class T >
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.

template<class T >
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.

template<class T >
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.


Member Function Documentation

template<class T>
T vgl_plane_3d< T >::a ( ) const [inline]

Return x coefficient.

Definition at line 85 of file vgl_plane_3d.h.

template<class T>
T vgl_plane_3d< T >::b ( ) const [inline]

Return y coefficient.

Definition at line 88 of file vgl_plane_3d.h.

template<class T>
T vgl_plane_3d< T >::c ( ) const [inline]

Return z coefficient.

Definition at line 91 of file vgl_plane_3d.h.

template<class T >
bool vgl_plane_3d< T >::contains ( vgl_point_3d< T > const &  p,
tol = (T)0 
) const

Return true if p is on the plane.

Definition at line 55 of file vgl_plane_3d.txx.

template<class T>
T vgl_plane_3d< T >::d ( ) const [inline]

Return constant coefficient.

Definition at line 94 of file vgl_plane_3d.h.

template<class T>
bool vgl_plane_3d< T >::ideal ( = (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.

template<class T>
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.

template<class T>
T vgl_plane_3d< T >::nx ( ) const [inline]

Definition at line 86 of file vgl_plane_3d.h.

template<class T>
T vgl_plane_3d< T >::ny ( ) const [inline]

Definition at line 89 of file vgl_plane_3d.h.

template<class T>
T vgl_plane_3d< T >::nz ( ) const [inline]

Definition at line 92 of file vgl_plane_3d.h.

template<class T>
bool vgl_plane_3d< T >::operator!= ( vgl_plane_3d< T >const &  p) const [inline]

Definition at line 102 of file vgl_plane_3d.h.

template<class T >
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.

template<class T >
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.

template<class T >
bool vgl_plane_3d< T >::plane_coords ( vgl_point_3d< T > const &  p3d,
vgl_point_2d< T > &  p2d,
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.

template<class T>
void vgl_plane_3d< T >::set ( ta,
tb,
tc,
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.

template<class T >
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.


Friends And Related Function Documentation

template<class T >
vcl_ostream & operator<< ( vcl_ostream &  s,
const vgl_plane_3d< T > &  p 
) [related]

Write to stream.

template<class T >
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"

template<class T >
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.

template<class T >
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.

template<class T >
double vgl_distance_origin ( vgl_plane_3d< T > const &  pl) [related]

find the shortest distance of the plane to the origin.

template<class T >
vgl_point_3d< T > vgl_intersection ( const vcl_vector< vgl_plane_3d< T > > &  p) [related]

Return the intersection point of vector of planes.

template<class T >
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.

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 
) [related]

Return the intersection point of a line and a plane.

Definition at line 584 of file vgl_intersection.txx.

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 
) [related]

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 
) [related]

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 
) [related]

Return the intersection line of two planes.

Returns false if planes are effectively parallel

Definition at line 150 of file vgl_intersection.h.

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 
) [related]

Return the intersection point of three planes.

Definition at line 804 of file vgl_intersection.txx.

template<class T >
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.


Member Data Documentation

template<class T>
T vgl_plane_3d< T >::a_ [private]

Definition at line 35 of file vgl_plane_3d.h.

template<class T>
T vgl_plane_3d< T >::b_ [private]

Definition at line 36 of file vgl_plane_3d.h.

template<class T>
T vgl_plane_3d< T >::c_ [private]

Definition at line 37 of file vgl_plane_3d.h.

template<class T>
T vgl_plane_3d< T >::d_ [private]

Definition at line 38 of file vgl_plane_3d.h.


The documentation for this class was generated from the following files: