Represents a cartesian 3D point. More...
#include <vgl_point_3d.h>
Public Member Functions | |
vgl_point_3d () | |
Default constructor. | |
vgl_point_3d (Type px, Type py, Type pz) | |
Construct from three Types. | |
vgl_point_3d (const Type v[3]) | |
Construct from 3-array. | |
vgl_point_3d (vgl_homg_point_3d< Type > const &p) | |
Construct from homogeneous point. | |
vgl_point_3d (vgl_plane_3d< Type > const &pl1, vgl_plane_3d< Type > const &pl2, vgl_plane_3d< Type > const &pl3) | |
Construct from 3 planes (intersection). | |
bool | operator== (const vgl_point_3d< Type > &p) const |
Test for equality. | |
bool | operator!= (vgl_point_3d< Type >const &p) const |
Type & | x () |
Type & | y () |
Type & | z () |
Type | x () const |
Type | y () const |
Type | z () const |
void | set (Type px, Type py, Type pz) |
Set x, y and z. | |
void | set (Type const p[3]) |
Set x, y and z. | |
bool | ideal (Type=(Type) 0) const |
Return true iff the point is at infinity (an ideal point). | |
Private Attributes | |
Type | x_ |
Type | y_ |
Type | z_ |
Related Functions | |
(Note that these are not member functions.) | |
vcl_istream & | read (vcl_istream &is) |
Read from stream, possibly with formatting. | |
template<class T > | |
vgl_point_3d< T > | vgl_closest_point_origin (vgl_plane_3d< T > const &pl) |
Return the point on the given plane closest to the origin. | |
template<class T > | |
vgl_point_3d< T > | vgl_closest_point_origin (vgl_line_3d_2_points< T > const &l) |
Return the point on the given line closest to the origin. | |
template<class T > | |
vgl_point_3d< T > | vgl_closest_point (vgl_line_3d_2_points< T > const &l, vgl_point_3d< T > const &p) |
Return the point on the given line which is closest to the given point. | |
template<class T > | |
double | vgl_closest_point_t (vgl_line_3d_2_points< T > const &l, vgl_point_3d< T > const &p) |
Return the point on the given line which is closest to the given point. | |
template<class T > | |
double | vgl_distance (vgl_point_3d< T >const &p1, vgl_point_3d< T >const &p2) |
return the distance between two points. | |
template<class Type > | |
bool | collinear (l const &l1, vgl_point_3d< Type > const &p) |
Does a line pass through a point, i.e., are the point and the line collinear?. | |
template<class Type > | |
bool | coplanar (l const &l1, vgl_point_3d< Type > const &p1, vgl_point_3d< Type > const &p2) |
Are two points coplanar with a line?. | |
template<class Type > | |
vcl_ostream & | operator<< (vcl_ostream &s, vgl_point_3d< Type > const &p) |
Write "<vgl_point_3d x,y,z> " to stream. | |
template<class Type > | |
vcl_istream & | operator>> (vcl_istream &s, vgl_point_3d< Type > &p) |
Read from stream, possibly with formatting. | |
template<class Type > | |
vgl_vector_3d< Type > | operator- (vgl_point_3d< Type > const &p1, vgl_point_3d< Type > const &p2) |
The difference of two points is the vector from second to first point. | |
template<class Type > | |
vgl_point_3d< Type > | operator+ (vgl_point_3d< Type > const &p, vgl_vector_3d< Type > const &v) |
Adding a vector to a point gives a new point at the end of that vector. | |
template<class Type > | |
vgl_point_3d< Type > & | operator+= (vgl_point_3d< Type > &p, vgl_vector_3d< Type > const &v) |
Adding a vector to a point gives the point at the end of that vector. | |
template<class Type > | |
vgl_point_3d< Type > | operator- (vgl_point_3d< Type > const &p, vgl_vector_3d< Type > const &v) |
Subtracting a vector from a point is the same as adding the inverse vector. | |
template<class Type > | |
vgl_point_3d< Type > & | operator-= (vgl_point_3d< Type > &p, vgl_vector_3d< Type > const &v) |
Subtracting a vector from a point is the same as adding the inverse vector. | |
template<class T > | |
double | cross_ratio (vgl_point_3d< T >const &p1, vgl_point_3d< T >const &p2, vgl_point_3d< T >const &p3, vgl_point_3d< T >const &p4) |
cross ratio of four collinear points. | |
template<class Type > | |
bool | collinear (vgl_point_3d< Type > const &p1, vgl_point_3d< Type > const &p2, vgl_point_3d< Type > const &p3) |
Are three points collinear, i.e., do they lie on a common line?. | |
template<class Type > | |
double | ratio (vgl_point_3d< Type > const &p1, vgl_point_3d< Type > const &p2, vgl_point_3d< Type > const &p3) |
Return the relative distance to p1 wrt p1-p2 of p3. | |
template<class Type > | |
vgl_point_3d< Type > | midpoint (vgl_point_3d< Type > const &p1, vgl_point_3d< Type > const &p2, Type f=(Type) 0.5) |
Return the point at a given ratio wrt two other points. | |
template<class Type > | |
vgl_point_3d< Type > | centre (vgl_point_3d< Type > const &p1, vgl_point_3d< Type > const &p2) |
Return the point at the centre of gravity of two given points. | |
template<class Type > | |
vgl_point_3d< Type > | centre (vgl_point_3d< Type > const &p1, vgl_point_3d< Type > const &p2, vgl_point_3d< Type > const &p3) |
Return the point at the centre of gravity of three given points. | |
template<class Type > | |
vgl_point_3d< Type > | centre (vgl_point_3d< Type > const &p1, vgl_point_3d< Type > const &p2, vgl_point_3d< Type > const &p3, vgl_point_3d< Type > const &p4) |
Return the point at the centre of gravity of four given points. | |
template<class Type > | |
vgl_point_3d< Type > | centre (vcl_vector< vgl_point_3d< Type > > const &v) |
Return the point at the centre of gravity of a set of given points. | |
template<class Type > | |
double | stddev (vcl_vector< vgl_point_3d< Type > > const &v) |
Return the "average deviation" of a set of given points from its centre of gravity. | |
template<class Type > | |
bool | coplanar (vgl_point_3d< Type > const &p1, vgl_point_3d< Type > const &p2, vgl_point_3d< Type > const &p3, vgl_point_3d< Type > const &p4) |
Return true iff the 4 points are coplanar, i.e., they belong to a common plane. |
Represents a cartesian 3D point.
Definition at line 27 of file vgl_point_3d.h.
vgl_point_3d< Type >::vgl_point_3d | ( | ) | [inline] |
Default constructor.
Definition at line 39 of file vgl_point_3d.h.
vgl_point_3d< Type >::vgl_point_3d | ( | Type | px, |
Type | py, | ||
Type | pz | ||
) | [inline] |
Construct from three Types.
Definition at line 42 of file vgl_point_3d.h.
vgl_point_3d< Type >::vgl_point_3d | ( | const Type | v[3] | ) | [inline] |
Construct from 3-array.
Definition at line 45 of file vgl_point_3d.h.
vgl_point_3d< Type >::vgl_point_3d | ( | vgl_homg_point_3d< Type > const & | p | ) |
Construct from homogeneous point.
Definition at line 19 of file vgl_point_3d.txx.
vgl_point_3d< Type >::vgl_point_3d | ( | vgl_plane_3d< Type > const & | pl1, |
vgl_plane_3d< Type > const & | pl2, | ||
vgl_plane_3d< Type > const & | pl3 | ||
) |
Construct from 3 planes (intersection).
Definition at line 26 of file vgl_point_3d.txx.
bool vgl_point_3d< Type >::ideal | ( | Type | = (Type)0 | ) | const [inline] |
Return true iff the point is at infinity (an ideal point).
Always returns false.
Definition at line 89 of file vgl_point_3d.h.
bool vgl_point_3d< Type >::operator!= | ( | vgl_point_3d< Type >const & | p | ) | const [inline] |
Definition at line 67 of file vgl_point_3d.h.
bool vgl_point_3d< Type >::operator== | ( | const vgl_point_3d< Type > & | p | ) | const |
Test for equality.
Definition at line 38 of file vgl_point_3d.txx.
void vgl_point_3d< Type >::set | ( | Type | px, |
Type | py, | ||
Type | pz | ||
) | [inline] |
Set x, y and z.
Note that x, y, and z can also be set individually
Definition at line 81 of file vgl_point_3d.h.
void vgl_point_3d< Type >::set | ( | Type const | p[3] | ) | [inline] |
Set x, y and z.
Note that x, y, and z can also be set individually
Definition at line 85 of file vgl_point_3d.h.
Type& vgl_point_3d< Type >::x | ( | ) | [inline] |
Definition at line 71 of file vgl_point_3d.h.
Type vgl_point_3d< Type >::x | ( | ) | const [inline] |
Definition at line 75 of file vgl_point_3d.h.
Type& vgl_point_3d< Type >::y | ( | ) | [inline] |
Definition at line 72 of file vgl_point_3d.h.
Type vgl_point_3d< Type >::y | ( | ) | const [inline] |
Definition at line 76 of file vgl_point_3d.h.
Type& vgl_point_3d< Type >::z | ( | ) | [inline] |
Definition at line 73 of file vgl_point_3d.h.
Type vgl_point_3d< Type >::z | ( | ) | const [inline] |
Definition at line 77 of file vgl_point_3d.h.
vgl_point_3d< Type > centre | ( | vgl_point_3d< Type > const & | p1, |
vgl_point_3d< Type > const & | p2 | ||
) | [related] |
Return the point at the centre of gravity of two given points.
Identical to midpoint(p1,p2).
Definition at line 224 of file vgl_point_3d.h.
vgl_point_3d< Type > centre | ( | vgl_point_3d< Type > const & | p1, |
vgl_point_3d< Type > const & | p2, | ||
vgl_point_3d< Type > const & | p3 | ||
) | [related] |
Return the point at the centre of gravity of three given points.
Definition at line 235 of file vgl_point_3d.h.
vgl_point_3d< Type > centre | ( | vgl_point_3d< Type > const & | p1, |
vgl_point_3d< Type > const & | p2, | ||
vgl_point_3d< Type > const & | p3, | ||
vgl_point_3d< Type > const & | p4 | ||
) | [related] |
Return the point at the centre of gravity of four given points.
Definition at line 247 of file vgl_point_3d.h.
vgl_point_3d< Type > centre | ( | vcl_vector< vgl_point_3d< Type > > const & | v | ) | [related] |
Return the point at the centre of gravity of a set of given points.
Beware of possible rounding errors when Type is e.g. int.
Definition at line 261 of file vgl_point_3d.h.
bool collinear | ( | l const & | l1, |
vgl_point_3d< Type > const & | p | ||
) | [related] |
Does a line pass through a point, i.e., are the point and the line collinear?.
Definition at line 92 of file vgl_line_3d_2_points.h.
bool collinear | ( | vgl_point_3d< Type > const & | p1, |
vgl_point_3d< Type > const & | p2, | ||
vgl_point_3d< Type > const & | p3 | ||
) | [related] |
Are three points collinear, i.e., do they lie on a common line?.
Definition at line 184 of file vgl_point_3d.h.
bool coplanar | ( | l const & | l1, |
vgl_point_3d< Type > const & | p1, | ||
vgl_point_3d< Type > const & | p2 | ||
) | [related] |
Are two points coplanar with a line?.
Definition at line 115 of file vgl_line_3d_2_points.h.
bool coplanar | ( | vgl_point_3d< Type > const & | p1, |
vgl_point_3d< Type > const & | p2, | ||
vgl_point_3d< Type > const & | p3, | ||
vgl_point_3d< Type > const & | p4 | ||
) | [related] |
Return true iff the 4 points are coplanar, i.e., they belong to a common plane.
double cross_ratio | ( | vgl_point_3d< T >const & | p1, |
vgl_point_3d< T >const & | p2, | ||
vgl_point_3d< T >const & | p3, | ||
vgl_point_3d< T >const & | p4 | ||
) | [related] |
cross ratio of four collinear points.
This number is projectively invariant, and it is the coordinate of p4 in the reference frame where p2 is the origin (coordinate 0), p3 is the unity (coordinate 1) and p1 is the point at infinity. This cross ratio is often denoted as ((p1, p2; p3, p4)) (which also equals ((p3, p4; p1, p2)) or ((p2, p1; p4, p3)) or ((p4, p3; p2, p1)) ) and is calculated as
p1 - p3 p2 - p3 (p1-p3)(p2-p4) ------- : -------- = -------------- p1 - p4 p2 - p4 (p1-p4)(p2-p3)
If three of the given points coincide, the cross ratio is not defined.
In this implementation, a least-squares result is calculated when the points are not exactly collinear.
vgl_point_3d< Type > midpoint | ( | vgl_point_3d< Type > const & | p1, |
vgl_point_3d< Type > const & | p2, | ||
Type | f = (Type)0.5 |
||
) | [related] |
Return the point at a given ratio wrt two other points.
By default, the mid point (ratio=0.5) is returned. Note that the third argument is Type, not double, so the midpoint of e.g. two vgl_point_3d<int> is not a valid concept. But the reflection point of p2 wrt p1 is: in that case f=-1.
Definition at line 210 of file vgl_point_3d.h.
vgl_point_3d< Type > operator+ | ( | vgl_point_3d< Type > const & | p, |
vgl_vector_3d< Type > const & | v | ||
) | [related] |
Adding a vector to a point gives a new point at the end of that vector.
Note that vector + point is not defined! It's always point + vector.
Definition at line 132 of file vgl_point_3d.h.
vgl_point_3d< Type > & operator+= | ( | vgl_point_3d< Type > & | p, |
vgl_vector_3d< Type > const & | v | ||
) | [related] |
Adding a vector to a point gives the point at the end of that vector.
Definition at line 139 of file vgl_point_3d.h.
vgl_vector_3d< Type > operator- | ( | vgl_point_3d< Type > const & | p1, |
vgl_point_3d< Type > const & | p2 | ||
) | [related] |
The difference of two points is the vector from second to first point.
Definition at line 124 of file vgl_point_3d.h.
vgl_point_3d< Type > operator- | ( | vgl_point_3d< Type > const & | p, |
vgl_vector_3d< Type > const & | v | ||
) | [related] |
Subtracting a vector from a point is the same as adding the inverse vector.
Definition at line 146 of file vgl_point_3d.h.
vgl_point_3d< Type > & operator-= | ( | vgl_point_3d< Type > & | p, |
vgl_vector_3d< Type > const & | v | ||
) | [related] |
Subtracting a vector from a point is the same as adding the inverse vector.
Definition at line 153 of file vgl_point_3d.h.
vcl_ostream & operator<< | ( | vcl_ostream & | s, |
vgl_point_3d< Type > const & | p | ||
) | [related] |
Write "<vgl_point_3d x,y,z> " to stream.
vcl_istream & operator>> | ( | vcl_istream & | is, |
vgl_point_3d< Type > & | p | ||
) | [related] |
Read from stream, possibly with formatting.
Either just reads three blank-separated numbers, or reads three comma-separated numbers, or reads three numbers in parenthesized form "(123, 321, 567)"
Definition at line 124 of file vgl_point_3d.txx.
double ratio | ( | vgl_point_3d< Type > const & | p1, |
vgl_point_3d< Type > const & | p2, | ||
vgl_point_3d< Type > const & | p3 | ||
) | [related] |
Return the relative distance to p1 wrt p1-p2 of p3.
The three points should be collinear and p2 should not equal p1. This is the coordinate of p3 in the affine 1D reference frame (p1,p2). If p3=p1, the ratio is 0; if p1=p3, the ratio is 1. The mid point of p1 and p2 has ratio 0.5. Note that the return type is double, not Type, since the ratio of e.g. two vgl_vector_3d<int> need not be an int.
Definition at line 198 of file vgl_point_3d.h.
vcl_istream & read | ( | vcl_istream & | is | ) | [related] |
Read from stream, possibly with formatting.
Either just reads three blank-separated numbers, or reads three comma-separated numbers, or reads three numbers in parenthesized form "(123, 321, 567)"
Definition at line 94 of file vgl_point_3d.txx.
double stddev | ( | vcl_vector< vgl_point_3d< Type > > const & | v | ) | [related] |
Return the "average deviation" of a set of given points from its centre of gravity.
"Average" in the sense of the standard deviation (2-norm, i.e., square root of sum of squares) of the distances from that centre of gravity.
Definition at line 134 of file vgl_point_3d.txx.
vgl_point_3d< T > vgl_closest_point | ( | vgl_line_3d_2_points< T > const & | l, |
vgl_point_3d< T > const & | p | ||
) | [related] |
Return the point on the given line which is closest to the given point.
vgl_point_3d< T > vgl_closest_point_origin | ( | vgl_plane_3d< T > const & | pl | ) | [related] |
Return the point on the given plane closest to the origin.
vgl_point_3d< T > vgl_closest_point_origin | ( | vgl_line_3d_2_points< T > const & | l | ) | [related] |
Return the point on the given line closest to the origin.
double vgl_closest_point_t | ( | vgl_line_3d_2_points< T > const & | l, |
vgl_point_3d< T > const & | p | ||
) | [related] |
Return the point on the given line which is closest to the given point.
The closest point is expressed in parametric form.
double vgl_distance | ( | vgl_point_3d< T >const & | p1, |
vgl_point_3d< T >const & | p2 | ||
) | [related] |
return the distance between two points.
Definition at line 110 of file vgl_distance.h.
Type vgl_point_3d< Type >::x_ [private] |
Definition at line 30 of file vgl_point_3d.h.
Type vgl_point_3d< Type >::y_ [private] |
Definition at line 31 of file vgl_point_3d.h.
Type vgl_point_3d< Type >::z_ [private] |
Definition at line 32 of file vgl_point_3d.h.