Node: Geometry, Next: , Previous: Future Plans, Up: Future Plans

### Geometry

3DLDF currently provides a set of basic plane and solid geometrical figures. However, some important ones are still missing. There are many useful geometrical data types and functions whose implementation would require no more than elementary geometry.

• Add constructors with a normal vector argument rather than angles of rotation about the main axes.
• I have started defining `class Triangle`, which can be used for calculating triangle solutions.
• Add a class `Conic_Section` and derive `Ellipse` from it. This will be the first case of multiple inheritance1 in 3DLDF, since `Ellipse` is already derived from `Path`. See Ellipse Reference. Add the classes `Parabola` and `Hyperbola`.
• Add more functions for finding the intersections of objects of various types, starting with the plane figures. In particular, I believe I've found an algebraic solution for the intersection of an `Ellipse` and a `Circle` in a plane, but I haven't had a chance to try implementing it yet.

If this works, I think it will make it possible to find the intersection of two coplanar ellipses algebraically, because it will be possible to transform them both such that one of them becomes circular.

• Class `Octahedron` will complete the set of regular Platonic polyhedra.
• Add classes for the Kepler-Poinsot polyhedra, the semi-regular Archimedean polyhedra, the dual solids, the stellated Archimedean polyhedra, and the regular compounds.2
• Add class `Ellipsoid` and a derived class `Sphere`.
• Improve the specification of `Solid` and `Solid_Faced`. In particular, it would help to store the vertices of `Polyhedra` as individual `Points`, rather than using `Reg_Polygons`. I'd also like to find a better way of generating `Solids`, without using rotations, if possible.

#### Footnotes

1. Stroustrup, The C++ Programming Language, &sect;15.2 ``Multiple Inheritance'', pp. 390--92.

2. Cundy and Rollet, Mathematical Models, Chapter 3, ``Polyhedra'', pp. 76--160.