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.