Navigation: Up, Table of Contents, Bibliography, Index, Title Page

CGAL::Vector_2<R>

Definition

An object of the class Vector_2<R> is a vector in the two-dimensional vector space 2. Geometrically spoken, a vector is the difference of two points p2, p1 and denotes the direction and the distance from p1 to p2.

CGAL defines a symbolic constant NULL_VECTOR. We will explicitly state where you can pass this constant as an argument instead of a vector initialized with zeros.

Creation

Vector_2<R> v ( Point_2<R> a, Point_2<R> b);
introduces the vector b-a.


Vector_2<R> v ( Null_vector NULL_VECTOR);
introduces a null vector v.


Vector_2<R> v ( R::RT hx, R::RT hy, R::RT hw = R::RT(1));
introduces a vector v initialized to (hx/hw,hy/hw). If the third argument is not explicitly given, it defaults to R::RT(1).
Precondition: hw not equal to 0

Operations

bool v.operator== ( w)
Test for equality: two vectors are equal, iff their x and y coordinates are equal. You can compare a vector with the NULL_VECTOR.

bool v.operator!= ( w)
Test for inequality. You can compare a vector with the NULL_VECTOR.

There are two sets of coordinate access functions, namely to the homogeneous and to the Cartesian coordinates. They can be used independently from the chosen representation type R.

R::RT v.hx () returns the homogeneous x coordinate.
R::RT v.hy () returns the homogeneous y coordinate.
R::RT v.hw () returns the homogenizing coordinate.

Here come the Cartesian access functions. Note that you do not loose information with the homogeneous representation, because then the field type is a quotient.

R::FT v.x () returns the x-coordinate of v, that is hx/hw.
R::FT v.y () returns the y-coordinate of v, that is hy/hw.

The following operations are for convenience and for making the class Vector_2<R> compatible with code for higher dimensional vectors. Again they come in a Cartesian and homogeneous flavor.

R::RT v.homogeneous ( int i)
returns the i'th homogeneous coordinate of v, starting with 0.
Precondition: 0 i 2.
R::FT v.cartesian ( int i)
returns the i'th Cartesian coordinate of v, starting at 0.
Precondition: 0 i 1.
R::FT v.operator[] ( int i)
returns cartesian(i).
Precondition: 0 i 1.

int v.dimension () returns the dimension (the constant 2).

Direction_2<R> v.direction () returns the direction which passes through v.

Vector_2<R> v.transform ( Aff_transformation_2<R> t)
returns the vector obtained by applying t on v.

Vector_2<R> v.perpendicular ( Orientation o)
returns the vector perpendicular to v in clockwise or counterclockwise orientation.

Operators

The following operations can be applied on vectors:

Vector_2<R> v.operator+ ( w) Addition.

Vector_2<R> v.operator- ( w) Subtraction.

Vector_2<R> v.operator- () returns the opposite vector.

R::FT v.operator* ( w) returns the scalar product (= inner product) of the two vectors.

Vector_2<R> v.operator* ( R::RT s)
Multiplication with a scalar from the right. Although it would be more natural, CGAL does not offer a multiplication with a scalar from the left. (This is due to problems of some compilers.)

Vector_2<R> v.operator* ( Quotient<RT> s)
Multiplication with a scalar from the right.

Vector_2<R> v.operator/ ( R::RT s)
Division by a scalar.

See Also

Kernel::Vector_2


Next: Bbox_3
Navigation: Up, Table of Contents, Bibliography, Index, Title Page
www.cgal.org. Aug 13, 2001.