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