     Next: Double-Valued Matrices ( matrix Up: Number Types and Linear Previous: A Floating Point Filter   Contents   Index

# Double-Valued Vectors ( vector )

Definition

An instance of data type vector is a vector of variables of type double.

#include < LEDA/numbers/vector.h >

Creation

 vector v creates an instance v of type vector; v is initialized to the zero-dimensional vector. vector v(int d) creates an instance v of type vector; v is initialized to the zero vector of dimension d. vector v(double a, double b) creates an instance v of type vector; v is initialized to the two-dimensional vector (a, b). vector v(double a, double b, double c) creates an instance v of type vector; v is initialized to the three-dimensional vector (a, b, c). vector v(const vector& w, int prec) creates an instance v of type vector; v is initialized to a copy of w. The second argument is for compatibility with rat_vector.

Operations

 int v.dim() returns the dimension of v. double& v[int i] returns i-th component of v. Precondition 0 < = i < = v.dim()-1. double v.hcoord(int i) for compatibility with rat_vector. double v.coord(int i) for compatibility with rat_vector. double v.sqr_length() returns the square of the Euclidean length of v. double v.length() returns the Euclidean length of v. vector v.norm() returns v normalized. double v.angle(const vector& w) returns the angle between v and w. vector v.rotate90(int i=1) returns v by an angle of i x 90 degrees. If i > 0 the rotation is counter-clockwise otherwise it is clockwise. Precondition v.dim() = 2 vector v.rotate(double a) returns the v rotated counter-clockwise by an angle of a (in radian). Precondition v.dim() = 2 vector& v += const vector& v1 Addition and assign. Precondition v.dim() = v1.dim(). vector& v -= const vector& v1 Subtraction and assign. Precondition v.dim() = v1.dim(). vector v + const vector& v1 Addition. Precondition v.dim() = v1.dim(). vector v - const vector& v1 Subtraction. Precondition v.dim() = v1.dim(). double v * const vector& v1 Scalar multiplication. Precondition v.dim() = v1.dim(). vector v * double r Componentwise multiplication with double r. vector& v *= double r multiplies all coordinates by r. vector v / double r Componentwise division which double r. bool v == const vector& w Test for equality. bool v != const vector& w Test for inequality. void v.print(ostream& O) prints v componentwise to ostream O. void v.print() prints v to cout. void v.read(istream& I) reads d = v.dim() numbers from input stream I and writes them into v...v[d - 1]. void v.read() reads v from cin. ostream& ostream& O « const vector& v writes v componentwise to the output stream O. istream& istream& I » vector& v reads v componentwise from the input stream I.

Additional Operations for vectors in two and three-dimensional space

 double v.xcoord() returns the zero-th cartesian coordinate of v. double v.ycoord() returns the first cartesian coordinate of v. double v.zcoord() returns the second cartesian coordinate of v. int compare_by_angle(const vector& v1, const vector& v2) For a non-zero vector v let (v) be the angle by which the positive x-axis has to be turned counter-clockwise until it aligns with v. The function compares the angles defined by v1 and v2, respectively. The zero-vector precedes all non-zero vectors in the angle-order. vector cross_product(const vector& v1, const vector& v2) returns the cross product of the three-dimensional vectors v1 and v2.

Implementation

Vectors are implemented by arrays of real numbers. All operations on a vector v take time O(v.dim()), except for dim and [ ] which take constant time. The space requirement is O(v.dim()).

Be aware that the operations on vectors and matrices incur rounding errors and hence are not completely reliable. For example, if M is a matrix, b is a vector, and x is computed by x = M.solve(b) it is not necessarily true that the test b == M * x evaluates to true. The types integer_vector and integer_matrix provide exact linear algebra.     Next: Double-Valued Matrices ( matrix Up: Number Types and Linear Previous: A Floating Point Filter   Contents   Index