`Ellipse`

has a constructor similar to those for
`Reg_Polygon`

and `Rectangle`

. The first argument is the
center of the `Ellipse`

, and the following two specify the lengths
of the horizontal and vertical axes respectively. The `Ellipse`

is
first created in the x-z plane, centered about the origin. The
horizontal axis lies along the x-axis and the vertical axis lies along
the z-axis. The three subsequent arguments specify the amounts of
rotation about the x, y, and z-axes respectively and default to 0.
Finally,
`Ellipse`

is shifted such that its center comes to lie at the
`Point`

specified in the first argument.

Point pt(-1, 1, 1); Ellipse e(pt, 3, 6, 90); e.draw();

Fig. 33.

As you may expect, this constructor has a corresponding setting function:

Ellipse e; real h_save = 1.5; real v_save = 2; real h = h_save; real v = v_save; Point p(-1); for (int i = 0; i < 5; ++i) { e.set(p, h, v, 90); e.draw(); h_save += .25; v_save += .25; h *= sqrt(h_save); v *= sqrt(v_save); p.shift(0, 0, 2); }

Fig. 34.