direction vector in Euclidean 3D space More...
#include <vcl_iosfwd.h>Go to the source code of this file.
Classes | |
| class | vgl_vector_3d< T > |
| Direction vector in Euclidean 3D space, templated by type of element. More... | |
Defines | |
| #define | v vgl_vector_3d<T> |
| #define | VGL_VECTOR_3D_INSTANTIATE(T) extern "please include vgl/vgl_vector_3d.txx first" |
Functions | |
| template<class T > | |
| vcl_ostream & | operator<< (vcl_ostream &s, v const &p) |
| Write "<vgl_vector_3d x,y,z> " to stream. | |
| template<class T > | |
| vcl_istream & | operator>> (vcl_istream &s, v &p) |
| Read from stream, possibly with formatting. | |
| template<class T > | |
| double | length (v const &a) |
| Return the length of a vector. | |
| template<class T > | |
| T | sqr_length (v const &a) |
| Return the squared length of a vector. | |
| template<class T > | |
| v | operator+ (v const &a, v const &b) |
| c=a+b: add two vectors. | |
| template<class T > | |
| v | operator- (v const &a, v const &b) |
| c=a-b: subtract two vectors. | |
| template<class T > | |
| v & | operator+= (v &a, v const &b) |
| a+=b: add b to a and return a. | |
| template<class T > | |
| v & | operator-= (v &a, v const &b) |
| a-=b: subtract b from a and return a. | |
| template<class T > | |
| v | operator+ (v const &b) |
| +b: unary plus operator (no-op). | |
| template<class T > | |
| v | operator- (v const &b) |
| template<class T > | |
| v | operator* (double s, v const &b) |
| c=f*b: return a scaled version of the vector. | |
| template<class T > | |
| v | operator* (v const &a, double s) |
| c=a*f: return a scaled version of the vector. | |
| template<class T > | |
| v | operator/ (v const &a, double s) |
| c=b/f: return an inversely scaled version of the vector (scale must be nonzero). | |
| template<class T > | |
| v & | operator*= (v &a, double s) |
| a*=f: scale the vector. | |
| template<class T > | |
| v & | operator/= (v &a, double s) |
| a/=f: inversely scale the vector (scale must be nonzero). | |
| template<class T > | |
| T | dot_product (v const &a, v const &b) |
| dot product or inner product of two vectors. | |
| template<class T > | |
| T | inner_product (v const &a, v const &b) |
| dot product or inner product of two vectors. | |
| template<class T > | |
| v | cross_product (v const &a, v const &b) |
| cross product of two vectors (is orthogonal to both). | |
| template<class T > | |
| double | cos_angle (v const &a, v const &b) |
| cosine of the angle between two vectors. | |
| template<class T > | |
| double | angle (v const &a, v const &b) |
| smallest angle between two vectors (in radians, between 0 and Pi). | |
| template<class T > | |
| bool | orthogonal (v const &a, v const &b, double eps=0.0) |
| are two vectors orthogonal, i.e., is their dot product zero?. | |
| template<class T > | |
| bool | parallel (v const &a, v const &b, double eps=0.0) |
| are two vectors parallel, i.e., is one a scalar multiple of the other?. | |
| template<class T > | |
| double | operator/ (v const &a, v const &b) |
| f=a/b: return the ratio of two vectors, if they are parallel. | |
| template<class T > | |
| v & | normalize (v &a) |
| Normalise by dividing through by the length, thus returning a length 1 vector. | |
| template<class T > | |
| v | normalized (v const &a) |
| Return a normalised version of a. | |
direction vector in Euclidean 3D space
Modifications 2001-07-05 Peter Vanroose Added orthogonal(); operator* now accepts double 2009-05-21 Peter Vanroose istream operator>> re-implemented
Definition in file vgl_vector_3d.h.
| #define v vgl_vector_3d<T> |
Definition at line 94 of file vgl_vector_3d.h.
| #define VGL_VECTOR_3D_INSTANTIATE | ( | T | ) | extern "please include vgl/vgl_vector_3d.txx first" |
Definition at line 219 of file vgl_vector_3d.h.
| double angle | ( | v const & | a, |
| v const & | b | ||
| ) |
smallest angle between two vectors (in radians, between 0 and Pi).
| double cos_angle | ( | v const & | a, |
| v const & | b | ||
| ) | [inline] |
cosine of the angle between two vectors.
Definition at line 181 of file vgl_vector_3d.h.
| v cross_product | ( | v const & | a, |
| v const & | b | ||
| ) | [inline] |
cross product of two vectors (is orthogonal to both).
Definition at line 176 of file vgl_vector_3d.h.
| T dot_product | ( | v const & | a, |
| v const & | b | ||
| ) | [inline] |
dot product or inner product of two vectors.
Definition at line 168 of file vgl_vector_3d.h.
| T inner_product | ( | v const & | a, |
| v const & | b | ||
| ) | [inline] |
dot product or inner product of two vectors.
Definition at line 172 of file vgl_vector_3d.h.
| double length | ( | v const & | a | ) | [inline] |
Return the length of a vector.
Definition at line 114 of file vgl_vector_3d.h.
| v& normalize | ( | v & | a | ) | [inline] |
Normalise by dividing through by the length, thus returning a length 1 vector.
If a is zero length, return (0,0).
Definition at line 210 of file vgl_vector_3d.h.
| v normalized | ( | v const & | a | ) | [inline] |
Return a normalised version of a.
If a is zero length, return (0,0).
Definition at line 215 of file vgl_vector_3d.h.
| v operator* | ( | double | s, |
| v const & | b | ||
| ) | [inline] |
c=f*b: return a scaled version of the vector.
Definition at line 146 of file vgl_vector_3d.h.
| v operator* | ( | v const & | a, |
| double | s | ||
| ) | [inline] |
c=a*f: return a scaled version of the vector.
Definition at line 150 of file vgl_vector_3d.h.
| v& operator*= | ( | v & | a, |
| double | s | ||
| ) | [inline] |
a*=f: scale the vector.
Definition at line 160 of file vgl_vector_3d.h.
| v operator+ | ( | v const & | a, |
| v const & | b | ||
| ) | [inline] |
c=a+b: add two vectors.
Definition at line 122 of file vgl_vector_3d.h.
| v operator+ | ( | v const & | b | ) | [inline] |
+b: unary plus operator (no-op).
Definition at line 138 of file vgl_vector_3d.h.
| v& operator+= | ( | v & | a, |
| v const & | b | ||
| ) | [inline] |
a+=b: add b to a and return a.
Definition at line 130 of file vgl_vector_3d.h.
| v operator- | ( | v const & | a, |
| v const & | b | ||
| ) | [inline] |
c=a-b: subtract two vectors.
Definition at line 126 of file vgl_vector_3d.h.
| v operator- | ( | v const & | b | ) | [inline] |
-a: unary minus operator (additive inverse).
Definition at line 142 of file vgl_vector_3d.h.
| v& operator-= | ( | v & | a, |
| v const & | b | ||
| ) | [inline] |
a-=b: subtract b from a and return a.
Definition at line 134 of file vgl_vector_3d.h.
| v operator/ | ( | v const & | a, |
| double | s | ||
| ) | [inline] |
c=b/f: return an inversely scaled version of the vector (scale must be nonzero).
Note that the argument type is double, not T, to avoid rounding errors when type T has no multiplicative inverses (like T=int).
Definition at line 156 of file vgl_vector_3d.h.
| double operator/ | ( | v const & | a, |
| v const & | b | ||
| ) | [inline] |
f=a/b: return the ratio of two vectors, if they are parallel.
(If not, return a "least squares" approximation.) Note that the return type is double, not T, since the ratio of e.g. two vgl_vector_3d<int> need not be an int.
Definition at line 204 of file vgl_vector_3d.h.
| v& operator/= | ( | v & | a, |
| double | s | ||
| ) | [inline] |
a/=f: inversely scale the vector (scale must be nonzero).
Definition at line 164 of file vgl_vector_3d.h.
| vcl_ostream& operator<< | ( | vcl_ostream & | s, |
| v const & | p | ||
| ) |
Write "<vgl_vector_3d x,y,z> " to stream.
| vcl_istream& operator>> | ( | vcl_istream & | s, |
| v & | p | ||
| ) |
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)"
| bool orthogonal | ( | v const & | a, |
| v const & | b, | ||
| double | eps = 0.0 |
||
| ) |
are two vectors orthogonal, i.e., is their dot product zero?.
If the third argument is specified, it is taken as the "tolerance", i.e. in that case this function returns true if the vectors are almost orthogonal.
| bool parallel | ( | v const & | a, |
| v const & | b, | ||
| double | eps = 0.0 |
||
| ) |
are two vectors parallel, i.e., is one a scalar multiple of the other?.
If the third argument is specified, it is taken as the "tolerance", i.e. in that case this function returns true if the vectors are almost parallel.
| T sqr_length | ( | v const & | a | ) | [inline] |
Return the squared length of a vector.
Definition at line 118 of file vgl_vector_3d.h.
1.7.5.1