Node:Regular Closed Plane Curve Reference, Next:Ellipse Reference, Previous:Rectangle Reference, Up:Top
Class Reg_Cl_Plane_Curve is defined in curves.web.
It is derived from Path using public derivation.
Reg_Cl_Plane_Curve is not called
"Regular_Closed_Plane_Curve" because the longer name
causes too many "Overfull boxes"1
in the CWEAVE output of the program code.
See CWEB Documentation.
Reg_Cl_Plane_Curve is meant to be used as a base class; no
objects should be declared of type Reg_Cl_Plane_Curve.
Currently, class Ellipses is derived from
Reg_Cl_Plane_Curve and class Circle is derived from
Ellipse.
At present, I have no fixed definition of what constitutes
"regularity" as far as Reg_Cl_Plane_Curves are concerned.
Ellipses and circles are "regular" in the sense that they have axes of
symmetry. There must be an equation for a Reg_Cl_Plane_Curve,
such as
x^2 + y^2 = r^2
for a circle.
A derived class should have a solve() function that uses this
equation. Reg_Cl_Plane_Curve::intersection_points() in turn uses
solve() to find the intersection points of a line with the
Reg_Cl_Plane_Curve. This way, the derived classes don't need
their own functions for finding their intersections with a line.
However, such functions can be added, if desired.
It is assumed that classes derived from Reg_Cl_Plane_Curve are
fillable, which implies that they must be closed Paths.
Reg_Cl_Plane_Curves inherit their drawing and filling functions
from Path.
The constructors and setting functions of classes derived from
Reg_Cl_Plane_Curve must ensure that the resulting geometric
figures are planar, convex, and that the number of Points they contain is
a multiple of 4. The latter assumption is of importance in
intersection_points(), segment(), half(), and
quarter().
See Regular Closed Plane Curve Reference; Intersections, and
Regular Closed Plane Curve Reference; Segments.