next up previous contents index
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 counterclockwise 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[0]...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 $ \alpha$(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 up previous contents index
Next: Double-Valued Matrices ( matrix Up: Number Types and Linear Previous: A Floating Point Filter   Contents   Index
Christian Uhrig 2017-04-07