#include <vgl_vector_2d.h>
(typically float or double). A vgl_vector_2d<T> represents the difference (or connecting vector) between two vgl_point_2d<T>s.
Use this class to do arithmetic (adding and scaling) in 2d geometric space.
Definition at line 30 of file vgl_vector_2d.h.
Public Member Functions | |
| T | x () const |
| T | y () const |
| vgl_vector_2d () | |
| Creates the vector (0,0) of zero length. | |
| vgl_vector_2d (T vx, T vy) | |
| Creates the vector (x,y). | |
| void | set (T vx, T vy) |
| Assignment. | |
| bool | operator== (vgl_vector_2d< T >const &v) const |
| Comparison. | |
| bool | operator!= (vgl_vector_2d< T >const &v) const |
| double | length () const |
| Return the length of this vector. | |
| T | sqr_length () const |
| Return the squared length of this vector. | |
| vcl_istream & | read (vcl_istream &is) |
| Read from stream, possibly with formatting. | |
Public Attributes | |
| T | x_ |
| T | y_ |
Related Functions | |
| (Note that these are not member functions.) | |
| vcl_ostream & | operator<< (vcl_ostream &s, v const &p) |
| Write "<vgl_vector_2d x,y> " to stream. | |
| vcl_istream & | operator>> (vcl_istream &s, v &p) |
| Read from stream, possibly with formatting. | |
| double | length (v const &a) |
| Return the length of a vector. | |
| T | sqr_length (v const &a) |
| Return the squared length of a vector. | |
| v | operator+ (v const &a, v const &b) |
| c=a+b: add two vectors. | |
| v | operator- (v const &a, v const &b) |
| c=a-b: subtract two vectors. | |
| v & | operator+= (v &a, v const &b) |
| a+=b: add b to a and return a. | |
| v & | operator-= (v &a, v const &b) |
| a-=b: subtract b from a and return a. | |
| v | operator+ (v const &b) |
| +b: unary plus operator (no-op). | |
| v | operator- (v const &b) |
| -a: unary minus operator (additive inverse). | |
| v | operator * (double s, v const &b) |
| c=f*b: return a scaled version of the vector. | |
| v | operator * (v const &a, double s) |
| c=a*f: return a scaled version of the vector. | |
| v | operator/ (v const &a, double s) |
| c=b/f: return an inversely scaled version of the vector (scale must be nonzero). | |
| v & | operator *= (v &a, double s) |
| a*=f: scale the vector. | |
| v & | operator/= (v &a, double s) |
| a/=f: inversely scale the vector (scale must be nonzero). | |
| T | dot_product (v const &a, v const &b) |
| dot product or inner product of two vectors. | |
| T | inner_product (v const &a, v const &b) |
| dot product or inner product of two vectors. | |
| T | cross_product (v const &a, v const &b) |
| cross product of two vectors (area of enclosed parallellogram). | |
| double | cos_angle (v const &a, v const &b) |
| cosine of the angle between two vectors. | |
| double | angle (v const &a, v const &b) |
| smallest angle between two vectors (in radians, between 0 and Pi). | |
| double | signed_angle (v const &a, v const &b) |
| signed angle between two vectors (in radians, between -Pi and Pi). | |
| bool | orthogonal (v const &a, v const &b, double eps=0.0) |
| are two vectors orthogonal, i.e., is their dot product zero?. | |
| 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?. | |
| double | operator/ (v const &a, v const &b) |
| f=a/b: return the ratio of two vectors, if they are parallel. | |
| v & | normalize (v &a) |
| Normalise by dividing through by the length, thus returning a length 1 vector. | |
| v | normalized (v const &a) |
| Return a normalised version of a. | |
| v | rotated (v const &a, double angle) |
| Return a CCW rotated version of a (angle in radian). | |
| vgl_vector_2d< T >::vgl_vector_2d | ( | ) | [inline] |
| vgl_vector_2d< T >::vgl_vector_2d | ( | T | vx, | |
| T | vy | |||
| ) | [inline] |
| T vgl_vector_2d< T >::x | ( | ) | const [inline] |
Definition at line 35 of file vgl_vector_2d.h.
| T vgl_vector_2d< T >::y | ( | ) | const [inline] |
Definition at line 36 of file vgl_vector_2d.h.
| void vgl_vector_2d< T >::set | ( | T | vx, | |
| T | vy | |||
| ) | [inline] |
| bool vgl_vector_2d< T >::operator== | ( | vgl_vector_2d< T >const & | v | ) | const [inline] |
| bool vgl_vector_2d< T >::operator!= | ( | vgl_vector_2d< T >const & | v | ) | const [inline] |
Definition at line 59 of file vgl_vector_2d.h.
| double vgl_vector_2d< T >::length | ( | ) | const |
| T vgl_vector_2d< T >::sqr_length | ( | ) | const [inline] |
| vcl_istream & vgl_vector_2d< T >::read | ( | vcl_istream & | is | ) |
Read from stream, possibly with formatting.
Either just reads two blank-separated numbers, or reads two comma-separated numbers, or reads two numbers in parenthesized form "(123, 321)"
Definition at line 72 of file vgl_vector_2d.txx.
| vcl_ostream & operator<< | ( | vcl_ostream & | s, | |
| v const & | p | |||
| ) | [related] |
Write "<vgl_vector_2d x,y> " to stream.
| vcl_istream & operator>> | ( | vcl_istream & | s, | |
| v & | p | |||
| ) | [related] |
Read from stream, possibly with formatting.
Either just reads two blank-separated numbers, or reads two comma-separated numbers, or reads two numbers in parenthesized form "(123, 321)"
| double length | ( | v const & | a | ) | [related] |
| T sqr_length | ( | v const & | a | ) | [related] |
| v operator+ | ( | v const & | a, | |
| v const & | b | |||
| ) | [related] |
| v operator- | ( | v const & | a, | |
| v const & | b | |||
| ) | [related] |
| v & operator+= | ( | v & | a, | |
| v const & | b | |||
| ) | [related] |
| v & operator-= | ( | v & | a, | |
| v const & | b | |||
| ) | [related] |
| v operator+ | ( | v const & | b | ) | [related] |
| v operator- | ( | v const & | b | ) | [related] |
| v operator * | ( | double | s, | |
| v const & | b | |||
| ) | [related] |
| v operator * | ( | v const & | a, | |
| double | s | |||
| ) | [related] |
| v operator/ | ( | v const & | a, | |
| double | s | |||
| ) | [related] |
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 136 of file vgl_vector_2d.h.
| v & operator *= | ( | v & | a, | |
| double | s | |||
| ) | [related] |
| v & operator/= | ( | v & | a, | |
| double | s | |||
| ) | [related] |
a/=f: inversely scale the vector (scale must be nonzero).
Definition at line 144 of file vgl_vector_2d.h.
| T dot_product | ( | v const & | a, | |
| v const & | b | |||
| ) | [related] |
| T inner_product | ( | v const & | a, | |
| v const & | b | |||
| ) | [related] |
| v cross_product | ( | v const & | a, | |
| v const & | b | |||
| ) | [related] |
cross product of two vectors (area of enclosed parallellogram).
Definition at line 156 of file vgl_vector_2d.h.
| double cos_angle | ( | v const & | a, | |
| v const & | b | |||
| ) | [related] |
| double angle | ( | v const & | a, | |
| v const & | b | |||
| ) | [related] |
smallest angle between two vectors (in radians, between 0 and Pi).
| double signed_angle | ( | v const & | a, | |
| v const & | b | |||
| ) | [related] |
signed angle between two vectors (in radians, between -Pi and Pi).
return the rotation angle to go from `a' to `b'
| bool orthogonal | ( | v const & | a, | |
| v const & | b, | |||
| double | eps = 0.0 | |||
| ) | [related] |
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 | |||
| ) | [related] |
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.
| double operator/ | ( | v const & | a, | |
| v const & | b | |||
| ) | [related] |
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_2d<int> need not be an int.
Definition at line 188 of file vgl_vector_2d.h.
| v & normalize | ( | v & | a | ) | [related] |
Normalise by dividing through by the length, thus returning a length 1 vector.
If a is zero length, return (0,0).
Definition at line 194 of file vgl_vector_2d.h.
| v normalized | ( | v const & | a | ) | [related] |
Return a normalised version of a.
If a is zero length, return (0,0).
Definition at line 199 of file vgl_vector_2d.h.
| v rotated | ( | v const & | a, | |
| double | angle | |||
| ) | [related] |
Return a CCW rotated version of a (angle in radian).
| T vgl_vector_2d< T >::x_ |
Definition at line 33 of file vgl_vector_2d.h.
| T vgl_vector_2d< T >::y_ |
Definition at line 34 of file vgl_vector_2d.h.
1.5.1