# ipe::Vector Class Reference
Ipe Geometry

Two-dimensional vector. More...

`#include <ipegeo.h>`

List of all members.

## Public Member Functions

- Vector ()
- Vector (Angle alpha)
- Vector (double x0, double y0)
- double sqLen () const
- double len () const
- Angle angle () const
- Vector normalized () const
- Vector orthogonal () const
- double factorize (Vector &unit) const
- bool snap (const Vector &mouse, Vector &pos, double &bound) const
- bool operator== (const Vector &rhs) const
- bool operator!= (const Vector &rhs) const
- void operator+= (const Vector &rhs)
- void operator-= (const Vector &rhs)
- void operator*= (double rhs)
- Vector operator+ (const Vector &rhs) const
- Vector operator- (const Vector &rhs) const
- Vector operator* (double rhs) const
- Vector operator- () const

## Public Attributes

- double x
- double y

## Static Public Attributes

- static Vector ZERO = Vector(0.0, 0.0)

## Related Functions

(Note that these are not member functions.)

- Stream & operator<< (Stream &stream, const Vector &rhs)
- Vector operator* (double lhs, const Vector &rhs)
- double dot (const Vector &lhs, const Vector &rhs)

## Detailed Description

Two-dimensional vector.

Unlike some other libraries, I don't make a difference between points and vectors.

## Constructor & Destructor Documentation

ipe::Vector::Vector | ( |  | ) | `[inline]`

Uninitialized vector.

Vector::Vector | ( | Angle | alpha | ) | `[explicit]`

Construct a unit vector with this direction.

ipe::Vector::Vector | ( | double | x0,
|  | double | y0
| ) |  | `[inline, explicit]`

Construct a vector.

## Member Function Documentation

double ipe::Vector::sqLen | ( |  | ) | const`[inline]`

Return square of Euclidean length.

Return square of vector's length.

double Vector::len | ( |  | ) | const

Angle Vector::angle | ( |  | ) | const

Return angle of the vector (with positive x-direction).

The returned angle lies between -pi and +pi. Returns zero for the zero vector.

Vector Vector::normalized | ( |  | ) | const

Return this vector normalized (with length one).

Normalizing the zero vector returns the vector (1,0).

Vector Vector::orthogonal | ( |  | ) | const

Return this vector turned 90 degrees to the left.

double Vector::factorize | ( | Vector & | unit | ) | const

Normalizes this vector into unit and returns length. If this is the zero vector, unit is set to (1,0).

bool Vector::snap | ( | const Vector & | mouse,
|  | Vector & | pos,
|  | double & | bound
| ) |  | const

Snap to nearby vertex.

If distance between mouse and this vector is less than bound, set pos to this vector and bound to the distance, and return `true`.

bool ipe::Vector::operator== | ( | const Vector & | rhs | ) | const`[inline]`

Equality.

bool ipe::Vector::operator!= | ( | const Vector & | rhs | ) | const`[inline]`

Inequality.

void ipe::Vector::operator+= | ( | const Vector & | rhs | ) | `[inline]`

Vector-addition.

void ipe::Vector::operator-= | ( | const Vector & | rhs | ) | `[inline]`

Vector-subtraction.

void ipe::Vector::operator*= | ( | double | rhs | ) | `[inline]`

Multiply vector by scalar.

Vector ipe::Vector::operator+ | ( | const Vector & | rhs | ) | const`[inline]`

Vector-addition.

Vector ipe::Vector::operator- | ( | const Vector & | rhs | ) | const`[inline]`

Vector-subtraction.

Vector ipe::Vector::operator* | ( | double | rhs | ) | const`[inline]`

Vector * scalar.

Vector ipe::Vector::operator- | ( |  | ) | const`[inline]`

Unary minus for Vector.

## Friends And Related Function Documentation

Stream & operator<< | ( | Stream & | stream,
|  | const Vector & | rhs
| ) |  | `[related]`

Vector operator* | ( | double | lhs,
|  | const Vector & | rhs
| ) |  | `[related]`

Scalar * vector.

double dot | ( | const Vector & | lhs,
|  | const Vector & | rhs
| ) |  | `[related]`

Dotproduct of two vectors.

## Member Data Documentation

Vector Vector::ZERO = Vector(0.0, 0.0)`[static]`

The origin (zero vector).

double ipe::Vector::x

Coordinates are public.

double ipe::Vector::y

Coordinates are public.

The documentation for this class was generated from the following files:

- ipegeo.h
- ipegeo.cpp