- Datatypes to represent rigid transforms (transforms including translation and rotation without scaling):
- 2D and 3D with different floating point precision
- special datatypes that model the covariance of transforms
- Conversion of one transforms to another with different type
- Extendable concept of filters on transforms:
- simple interface that allows implementation of new filters (e.g. filters to compute the mean of transforms, etc)
- provides special interpolation filters (e.g. linear interpolator, nearest neighbor interpolator)
- Mechanism to represent chains of transform in a tree-like structure:
- each transform is represented by a transform node, where the transform specifies the relative position to the parent node
- it must be possible to store a history of transforms within the nodes
- therefore the default node class must have its own buffer that stores the transform history
- the node class must be extendable and exchangable (to allow using nodes that have another mechanism of obtaining the transform history)
- compute relative transforms between arbitrary transform nodes (if there's a connection between them in the tree)
- while computing the transforms the framework has to take the history, i.e. data at different time stamps into account
- additionally it must be possible to specify filters (i.e. linear interpolation) when querying a transform