An *
ellipse *
is an area that is the outline and interior of an ellipse. Circles are special cases of ellipses.

An*
elliptical arc*
is a path consisting of all or a portion of the outline of an ellipse. *
Circular arcs*
are special cases of elliptical arcs.

An ellipse is specified in a manner that is easy to transform, and treats all ellipses on an equal basis. An ellipse is specified by its center point and two vectors that describe a bounding parallelogram of the ellipse. The bounding parallelogram is made by adding and subtracting the vectors from the center point in the following manner:

The special case of an ellipse with its axes aligned with the coordinate axes can be obtained by setting *
dx*
*
2*
and *
dy*
*
1*
to 0, or setting *
dx*
*
1 *
and *
dy*
*
2*
to 0.

Note that several different parallelograms specify the same ellipse, as shown here:

One parallelogram is bound to be a rectangle--the vectors will be perpendicular and correspond to the semi-axes of the ellipse.

The following classes and functions are used to represent and operate on ellipses and elliptical arcs.

ellipse [Protocol Class]

Summary: The protocol class that corresponds to a mathematical ellipse. This is a subclass of area . If you want to create a new class that behaves like an ellipse, it should be a subclass of ellipse . Subclasses of ellipse must obey the ellipse protocol.

ellipsep [Function]

Summary: Returns
t
if *
object*
is an ellipse; otherwise, it returns
nil
.

Summary: An instantiable class that implements an ellipse. This is a subclass of ellipse . This is the class that make-ellipse and make-ellipse* instantiate. Members of this class are immutable.

elliptical-arc [Protocol Class]

Summary: The protocol class that corresponds to a mathematical elliptical arc. This is a subclass of path . If you want to create a new class that behaves like an elliptical arc, it should be a subclass of elliptical-arc . Subclasses of elliptical-arc must obey the elliptical arc protocol.

elliptical-arc-p [Function]

Summary: Returns
t
if *
object*
is an elliptical arc; otherwise, it returns
nil
.

Summary: An instantiable class that implements an elliptical arc. This is a subclass of elliptical-arc . This is the class that make-elliptical-arc and make-elliptical-arc* instantiate. Members of this class are immutable.

Common Lisp Interface Manager 2.0 User's Guide - 27 Feb 2008