Before continuing, one should pause to check the objectives and principles to be adopted in developing this library.
The library should be easy to use, and ideally more attractive to use than the option of writing one’s own library from scratch (for most users).
It should be unsurprising and predictable, with as few ‘gotchas’ as possible.
It should be useful, and cover the essential areas in terms of functionality.
It should focus on 3D, i.e. not cater for 2D or more than 3 dimensions.
It should not sacrifice usability/convenience in pursuit of flexibility or efficiency.