Ipelib
Public Member Functions | Public Attributes | Static Public Attributes | Related Functions | List of all members
ipe::Vector Class Reference

#include <ipegeo.h>

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.)

Streamoperator<< (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

◆ Vector() [1/3]

ipe::Vector::Vector ( )
inline

Uninitialized vector.

Referenced by factorize(), normalized(), and orthogonal().

◆ Vector() [2/3]

Vector::Vector ( Angle  alpha)
explicit

Construct a unit vector with this direction.

References x, and y.

◆ Vector() [3/3]

ipe::Vector::Vector ( double  x0,
double  y0 
)
inlineexplicit

Construct a vector.

Member Function Documentation

◆ sqLen()

double ipe::Vector::sqLen ( ) const
inline

Return square of Euclidean length.

Return square of vector's length.

References x, and y.

Referenced by ipe::TransformTool::compute(), factorize(), len(), ipe::Line::Line(), normalized(), and ipe::Snap::snap().

◆ len()

double Vector::len ( ) const

◆ angle()

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.

References x, and y.

Referenced by ipe::TransformTool::compute(), ipe::Arc::distance(), ipe::Snap::getLine(), ipe::Arc::intersect(), and ipe::Snap::setEdge().

◆ normalized()

Vector Vector::normalized ( ) const

Return this vector normalized (with length one).

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

References len(), sqLen(), and Vector().

Referenced by ipe::Arc::distance().

◆ orthogonal()

Vector Vector::orthogonal ( ) const

Return this vector turned 90 degrees to the left.

References Vector(), x, and y.

◆ factorize()

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).

References len(), sqLen(), and Vector().

Referenced by ipe::Segment::distance(), and ipe::Segment::project().

◆ snap()

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.

References len().

Referenced by ipe::Segment::snap(), ipe::Bezier::snap(), and ipe::CanvasBase::snapToPaperAndFrame().

◆ operator==()

bool ipe::Vector::operator== ( const Vector rhs) const
inline

Equality.

References x, and y.

◆ operator!=()

bool ipe::Vector::operator!= ( const Vector rhs) const
inline

Inequality.

References x, and y.

◆ operator+=()

void ipe::Vector::operator+= ( const Vector rhs)
inline

Vector-addition.

References x, and y.

◆ operator-=()

void ipe::Vector::operator-= ( const Vector rhs)
inline

Vector-subtraction.

References x, and y.

◆ operator*=()

void ipe::Vector::operator*= ( double  rhs)
inline

Multiply vector by scalar.

References x, and y.

◆ operator+()

Vector ipe::Vector::operator+ ( const Vector rhs) const
inline

Vector-addition.

◆ operator-() [1/2]

Vector ipe::Vector::operator- ( const Vector rhs) const
inline

Vector-subtraction.

◆ operator*()

Vector ipe::Vector::operator* ( double  rhs) const
inline

Vector * scalar.

◆ operator-() [2/2]

Vector ipe::Vector::operator- ( ) const
inline

Unary minus for Vector.

Friends And Related Function Documentation

◆ operator<<()

Stream & operator<< ( Stream stream,
const Vector rhs 
)
related

◆ operator*()

Vector operator* ( double  lhs,
const Vector rhs 
)
related

Scalar * vector.

References x, and y.

◆ dot()

double dot ( const Vector lhs,
const Vector rhs 
)
related

Dotproduct of two vectors.

References x, and y.

Member Data Documentation

◆ ZERO

Vector Vector::ZERO = Vector(0.0, 0.0)
static

◆ x

double ipe::Vector::x

Coordinates are public.

Referenced by ipe::Rect::addPoint(), ipe::Rect::addRect(), ipe::Text::align(), angle(), ipe::Rect::bottomRight(), ipe::Rect::certainClearance(), ipe::Rect::clear(), ipe::Rect::clipTo(), ipe::TransformTool::compute(), ipe::CanvasBase::computeFifi(), ipe::Rect::contains(), ipe::CanvasBase::devToUser(), ipe::PdfViewBase::devToUser(), ipe::CairoPainter::doCurveTo(), ipe::CairoPainter::doDrawPath(), ipe::CairoPainter::doDrawText(), ipe::CairoPainter::doLineTo(), ipe::CairoPainter::doMoveTo(), dot(), ipe::SelectTool::draw(), ipe::Image::draw(), ipe::CanvasBase::drawAxes(), ipe::CanvasBase::drawFrame(), ipe::CanvasBase::drawGrid(), ipe::CanvasBase::drawObjects(), ipe::CanvasBase::drawPaper(), ipe::Rect::intersects(), ipe::Rect::isEmpty(), ipe::Layout::isNull(), ipe::Layout::Layout(), ipe::Rect::left(), ipe::Matrix::Matrix(), ipe::SelectTool::mouseButton(), ipe::Line::normal(), operator!=(), ipe::Linear::operator*(), ipe::Matrix::operator*(), operator*(), operator*=(), operator+=(), operator-=(), operator==(), orthogonal(), ipe::ImlParser::parseStyle(), ipe::QPt(), ipe::Reference::Reference(), ipe::CanvasBase::refreshSurface(), ipe::PdfViewBase::refreshSurface(), ipe::Thumbnail::render(), ipe::Rect::right(), ipe::Text::saveAsXml(), ipe::Thumbnail::saveRender(), ipe::Shape::Shape(), ipe::Snap::simpleSnap(), ipe::Bezier::spiroSpline(), sqLen(), ipe::Text::Text(), ipe::Rect::topLeft(), ipe::TransformTool::TransformTool(), ipe::Painter::translate(), ipe::CanvasBase::userToDev(), ipe::PdfViewBase::userToDev(), Vector(), and ipe::Rect::width().

◆ y

double ipe::Vector::y

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