### Ellipse Type (Ellipse)

### Definition

An object of the class Ellipse is an ellipse in two-dimensional Euclidean plane 2. Its boundary splits the plane into a bounded and an unbounded side. By definition, an empty Ellipse has no boundary and no bounded side, i.e. its unbounded side equals the whole plane 2.

### Types

Ellipse::Point
| Point type.

### Creation

void | ellipse.set () | sets ellipse to the empty ellipse.
void | ellipse.set ( Point p)
|  | sets ellipse to the ellipse containing exactly {p}.
void | ellipse.set ( Point p, Point q)
|  | sets ellipse to the ellipse containing exactly the segment connecting p and q. The algorithm guarantees that set is never called with two equal points.
void | ellipse.set ( Point p, Point q, Point r)
|  | sets ellipse to the smallest ellipse through p,q,r. The algorithm guarantees that set is never called with three collinear points.
void | ellipse.set ( Point p, Point q, Point r, Point s)
|  | sets ellipse to the smallest ellipse through p,q,r,s. The algorithm guarantees that this ellipse exists.

void

ellipse.set ( | Point p, Point q, Point r, Point s, Point t)

|  | sets ellipse to the unique conic through p,q,r,s,t. The algorithm guarantees that this conic is an ellipse.

### Predicates

bool | ellipse.has_on_unbounded_side ( Point p)
|  | returns true, iff p lies properly outside of ellipse.

Each of the following predicates is only needed, if the corresponding predicate of Min_ellipse_2 is used.

CGAL::Bounded_side | ellipse.bounded_side ( Point p)
|  | returns CGAL::ON_BOUNDED_SIDE, CGAL::ON_BOUNDARY, or CGAL::ON_UNBOUNDED_SIDE iff p lies properly inside, on the boundary, or properly outside of ellipse, resp.
bool | ellipse.has_on_bounded_side ( Point p)
|  | returns true, iff p lies properly inside ellipse.
bool | ellipse.has_on_boundary ( Point p)
|  | returns true, iff p lies on the boundary of ellipse.
bool | ellipse.is_empty ()
|  | returns true, iff ellipse is empty (this implies degeneracy).
bool | ellipse.is_degenerate ()
|  | returns true, iff ellipse is degenerate, i.e. if ellipse is empty or equal to a single point.

### I/O

The following I/O operators are only needed, if the corresponding I/O operators of Min_ellipse_2 are used.

ostream& | ostream& os << ellipse
|  | writes ellipse to output stream os.
Window_stream& | Window_stream& ws << ellipse
|  | writes ellipse to window stream ws.