AnimationVector
AnimationVector class that is the base class of AnimationVector1D, AnimationVector2D, AnimationVector3D and AnimationVector4D. In order to animate any arbitrary type, it is required to provide a TwoWayConverter that defines how to convert that arbitrary type T to an AnimationVector, and vice versa. Depending on how many dimensions this type T has, it may need to be converted to any of the subclasses of AnimationVector. For example, a position based object should be converted to AnimationVector2D, whereas an object that describes rectangle bounds should convert to AnimationVector4D.