Hello,
Gilles and I have been working on polishing the API for commons-geometry and
wrapping up a couple of last issues before the 1.0-beta1 release. We've been
discussing the API design for some of the core classes in GEOMETRY-92 and
GEOMETRY-94 and I'd like to get some feedback from the community on what we
have. The goal is to create a mathematically correct and at the same time
intuitive set of classes.
Below are 3 options for the names of some of the classes from the core
(space-agnostic) module and the Euclidean module. I'm intentionally not
explaining the meaning of any of the names since I'm interested in finding out
how self-documenting they are. Please let me know if there is an option you
prefer and if you have any suggestions for improvement. Any feedback whatsoever
is greatly appreciated:-)
Note: The "::" characters below indicate some sort of inheritance, either by
interface or class.
Option 1: Based on "Hyperplane/SubHyperplane" naming
- Core Module
- Hyperplane
- SubHyperplane
- ConvexSubHyperplane :: SubHyperplane
- Euclidean 2D
- Line :: Hyperplane
- SubLine :: SubHyperplane
- ConvexSubLine :: SubLine, ConvexSubHyperplane
- Line.Span :: ConvexSubLine
- Segment :: ConvexSubLine
- Ray :: ConvexSubLine
- ReverseRay :: ConvexSubLine
- Euclidean 3D
- Plane :: Hyperplane
- SubPlane :: SubHyperplane
- ConvexSubPlane :: SubPlane, ConvexSubHyperplane
- FiniteConvexSubPlane :: ConvexSubPlane
- Triangle3D :: FiniteConvexSubPlane
- Line3D
- SubLine3D
- ConvexSubLine3D :: SubLine3D
- Line3D.Span :: ConvexSubLine3D
- Segment3D :: ConvexSubLine3D
- Ray3D:: ConvexSubLine3D
- ReverseRay3D :: ConvexSubLine3D
Option 2: Based on "Hyperplane/HyperplaneSubset" naming
- Core Module
- Hyperplane
- HyperplaneSubset
- HyperplaneConvexSubset :: HyperplaneSubset
- Euclidean 2D
- Line :: Hyperplane
- LineSubset :: HyperplaneSubset
- LineConvexSubset :: LineSubset, HyperplaneConvexSubset
- LineSpanningSubset :: LineConvexSubset
- Segment :: LineConvexSubset
- Ray :: LineConvexSubset
- ReverseRay :: LineConvexSubset
- Euclidean 3D
- Plane :: Hyperplane
- PlaneSubset :: HyperplaneSubset
- PlaneConvexSubset :: PlaneSubset, HyperplaneConvexSubset
- PlaneFiniteConvexSubset :: PlaneConvexSubset
- Triangle3D :: PlaneFiniteConvexSubset
- Line3D
- LineSubset3D
- LineConvexSubset3D :: LineSubset3D
- LineSpanningSubset3D :: LineConvexSubset3D
- Segment3D :: LineConvexSubset3D
- Ray3D:: LineConvexSubset3D
- ReverseRay3D :: LineConvexSubset3D
Option 3: Same as #2 but with adjectives (eg "convex") coming before the
hyperplane name
- Core Module
- Hyperplane
- HyperplaneSubset
- ConvexHyperplaneSubset :: HyperplaneSubset
- Euclidean 2D
- Line :: Hyperplane
- LineSubset :: HyperplaneSubset
- ConvexLineSubset :: LineSubset, ConvexHyperplaneSubset
- SpanningLineSubset :: ConvexLineSubset
- Segment :: ConvexLineSubset
- Ray :: ConvexLineSubset
- ReverseRay :: ConvexLineSubset
- Euclidean 3D
- Plane :: Hyperplane
- PlaneSubset :: HyperplaneSubset
- ConvexPlaneSubset :: PlaneSubset, ConvexHyperplaneSubset
- FiniteConvexPlaneSubset :: ConvexPlaneSubset
- Triangle3D :: FiniteConvexPlaneSubset
- Line3D
- LineSubset3D
- ConvexLineSubset3D :: LineSubset3D
- SpanningLineSubset3D :: ConvexLineSubset3D
- Segment3D :: ConvexLineSubset3D
- Ray3D:: ConvexLineSubset3D
- ReverseRay3D :: ConvexLineSubset3D
Regards,
Matt J