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