The following example creates a pentagon in the x-z plane, centered about the origin, whose enclosing circle has a radius equal to 3cm.
default_focus.set(2, 3, -10, 2, 3, 10, 10); Reg_Polygon p(origin, 5, 3); p.draw();
Fig. 20.
Three additional arguments cause the pentagon to be rotated about the x, y, and z axes by the amount indicated. In this example, it's rotated 90 degrees
about the x-axis, so that it comes to lie in the x-y plane:
Reg_Polygon p(origin, 5, 3, 90); p.draw();
Fig. 21.
In this example, it's rotated 36 degrees
about the y-axis, so that it appears to point in the opposite direction from the first example:
Reg_Polygon p(origin, 5, 3, 0, 36); p.draw();
Fig. 22.
In this example, it's rotated 90 degrees
about the z-axis, so that it lies in the z-y plane:
Reg_Polygon p(origin, 5, 3, 0, 0, 90); p.draw();
Fig. 23.
In this example, it's rotated 45 degrees
about the x, y, and z-axes in that order:
Reg_Polygon p(origin, 5, 3, 45, 45, 45); p.draw();
Fig. 24.
Reg_Polygons
need not be centered about the origin
. If
another Point
pt is used as the first argument, the Reg_Polygon
is first created with its center at the origin, then the specified
rotations, if any, are performed. Finally, the Reg_Polygon
is
shifted such that its center comes to lie on pt:
Point P(-2, 1, 1); Reg_Polygon hex(P, 6, 4, 60, 30, 30); hex.draw();
Fig. 25.
In the following example, the Reg_Polygon
polygon
is first
declared using the default constructor, which creates an empty
Reg_Polygon
. Then, the polygon
is repeatedly changed using
the setting function corresponding to the constructor used in the
previous examples. [next figure]
demonstrates that a given
Reg_Polygon
need not always have the same number of sides.
Point p(0, -3); Reg_Polygon polygon; for (int i = 3; i < 9; ++i) { polygon.set(p, i, 3); polygon.draw(); p.shift(0, 1); }
Fig. 26.