Collection of C++ libraries that provide a variety of functionalities. Eigen3 is needed for most of the components to work since all of the vector and matrix math is done using Eigen3. CPPTest is used to perform unit testing on the components. If QD is present then it will also be used. Note that QD 2.3.13 needs to be patched to work (see patches directory). This uses CMake to build all of the tests and examples.
The interface to various classes that should be similar is not. There needs to be a re-evaluation of the interface to various categories of classes to make it more intuitive to use. A document should be created that explains the rules and customs for the interfaces. Here are some examples:
Sometimes getters return class other times have to pass class in
Sometimes it's called degree_promote sometimes it's promote
What should be the common interface between curve & piecewise_curve and surface & piecewise_surface
Some classes return error codes for a great number of their actions while other will return true/false and still others will return nothing.
Some enumerations are named and have to be handled as embedded classes while others are anonymous and can be handled as ints.
Tolerance type should not be template parameter, there should be a default tolerance that can be used throughout the library. Should it be runtime changeable? Should there be the ability to override the default tolerance in just some portions of library (compile-time and/or runtime)?
Should there be interface classes or rely on compiler template parsing to enforce interfaces?
Piecewise curve has error enumeration, make it an anonymous enumeration
Piecewise surface has error enumeration, make it an anonymous enumeration
Remove report_point_continuity from utility namespace (maybe? what about rational bezier? They might need this same code.)
report_point_continuity function needs to be rewritten to not be recursive (convoluted code and if you want to know the continuity, why pass in continuity variable?)
Should audit all code and determine how useful it is, the variables passed are, and the return value is.
The interface to various classes that should be similar is not. There needs to be a re-evaluation of the interface to various categories of classes to make it more intuitive to use. A document should be created that explains the rules and customs for the interfaces. Here are some examples: