I think it would be great to give the current vtol an overhaul and
refactor the code. I'm glad you are proposing to do so.
From your message, I gather that your work is focused mostly on
adding the 3D support. It would be great if you had time to overhaul
the current 2D stuff too. For example:
- vtol_topology_object should probably not derive from
vsol_spatial_object_2d. If necessary, vtol_vertex_2d and relatives
could derive from it. Or perhaps simply contain pointers to the
spatial objects. Or perhaps the inheritance should be the other
way. After all, is a 2D point a vertex, or is a vertex a 2D point?
- Are the n-chains necessary? Yes, in a theoretical sense. But are
they necessary in practice? Already there are functions to by-pass
the chains and go directly from, say, faces to edges.
- Are timestamps used with spatial objects?
I agree with you and Peter that inheriting a vtol_topology_object
from both a 2d and 3d spatial object is not correct.
I hope that when you are done with the changes, you can document the
design decisions, and provide examples on how things should be used.