A new BaseGeometry class should be implemented to reduce the inheritance.
This BaseGeometry class contains all major functions for dealing with World to Index transformations. It is similar to the current Geometry3D class but should possibly be abstract.
Inherited classes:
- Geometry3D: direct implementation of base class
- PlaneGeometry: Combination of current Geometry2D and PlaneGeometry. Main functions: Mapping, projection, calculation of intersections etc.
- SlicedGeometry: Contains one or several PlaneGeometries. Similar to current SlicedGeometry3D. Further possibility: Separation in Regular and Variable Sliced Geometry (RegularSliced contains only slices with equal distance, orientation, ...)
- ThinPlateSplineCurvedGeometry: Current tree of AbstractTransform -> LandmarkBasedCurved -> LandmarkProjectedBasedCurved -> ThinPlate... should be combined in one class.