Ipelib
ipe::Arc Class Reference

`#include <ipegeo.h>`

## Public Member Functions

Arc ()

Arc (const Matrix &m, Angle alpha, Angle beta)

Arc (const Matrix &m)

Arc (const Matrix &m0, const Vector &begp, const Vector &endp)

bool isEllipse () const

double distance (const Vector &v, double bound) const

double distance (const Vector &v, double bound, Vector &pos, Angle &angle) const

Rect bbox () const

Vector beginp () const

Vector endp () const

void intersect (const Line &l, std::vector< Vector > &result) const

void intersect (const Segment &s, std::vector< Vector > &result) const

void intersect (const Arc &a, std::vector< Vector > &result) const

void intersect (const Bezier &b, std::vector< Vector > &result) const

Matrix iM

Angle iAlpha

Angle iBeta

## Detailed Description

An arc of an ellipse.

The ellipse is represented using the matrix that transforms the unit circle x^2 + y^2 = 1 to the desired ellipse. The arc coordinate system is the coordinate system of this unit circle.

A full ellipse is described by iAlpha = 0, iBeta = IpeTwoPi.

An elliptic arc is the image of the circular arc from iAlpha to iBeta (in increasing angle in arc coordinate system).

## ◆ Arc() [1/4]

 ipe::Arc::Arc ( )
inline

Construct unit circle.

Referenced by ipe::Matrix::operator*().

## ◆ Arc() [2/4]

 ipe::Arc::Arc ( const Matrix & m, Angle alpha, Angle beta )
inline

Construct with given parameters.

## ◆ Arc() [3/4]

 ipe::Arc::Arc ( const Matrix & m )
inline

Construct an ellipse.

## ◆ Arc() [4/4]

 Arc::Arc ( const Matrix & m, const Vector & begp, const Vector & endp )

Construct arc for ellipse defined by m, from begp to endp.

This assumes that m has been correctly computed such that begb and endp already lie on the ellipse.

References ipe::Matrix::inverse().

## ◆ isEllipse()

 bool ipe::Arc::isEllipse ( ) const
inline

Is this an entire ellipse?

References iAlpha, and iBeta.

Referenced by ipe::CairoPainter::doDrawArc(), and ipe::Painter::doDrawArc().

## ◆ distance() [1/2]

 double Arc::distance ( const Vector & v, double bound ) const

This doesn't really compute the distance, but a reasonable approximation.

## ◆ distance() [2/2]

 double Arc::distance ( const Vector & v, double bound, Vector & pos, Angle & angle ) const

Like distance(), but sets pos to point on arc and angle to its angle in arc coordinates. angle and pos are not modified if result is larger than bound.

## ◆ bbox()

 Rect Arc::bbox ( ) const

Return a tight bounding box.

Referenced by intersect().

## ◆ beginp()

 Vector ipe::Arc::beginp ( ) const
inline

Return begin point of arc.

References iAlpha, and iM.

Referenced by ipe::Path::drawArrow(), and intersect().

## ◆ endp()

 Vector ipe::Arc::endp ( ) const
inline

Return end point of arc.

References iBeta, and iM.

Referenced by ipe::Path::drawArrow(), and intersect().

## ◆ intersect() [1/4]

 void Arc::intersect ( const Line & l, std::vector< Vector > & result ) const

Compute intersection points of Arc with Line.

Referenced by intersect().

## ◆ intersect() [2/4]

 void Arc::intersect ( const Segment & s, std::vector< Vector > & result ) const

Compute intersection points of Arc with Segment.

References ipe::Segment::iP, ipe::Segment::iQ, ipe::Segment::line(), and ipe::size().

## ◆ intersect() [3/4]

 void Arc::intersect ( const Arc & a, std::vector< Vector > & result ) const

Compute intersection points of Arc with Arc.

References bbox(), beginp(), endp(), and intersect().

## ◆ intersect() [4/4]

 void Arc::intersect ( const Bezier & b, std::vector< Vector > & result ) const

Compute intersection points of Arc with Bezier.

## ◆ iM

 Matrix ipe::Arc::iM

## ◆ iAlpha

 Angle ipe::Arc::iAlpha

## ◆ iBeta

 Angle ipe::Arc::iBeta

The documentation for this class was generated from the following files:
• ipegeo.h
• ipegeo.cpp