Object3D::Object3D(const Object3D &f) : _orientation(f.orientation()), _position(f.position()), _scale(f.scale()) { }
void Object3D::compose(const Object3D &f) { _position=_position+_orientation*f.position(); _orientation=_orientation*f.orientation(); _scale=_scale*f.scale(); // !!!! no scale for this ! (difficult to find the orientation after scale) }
// linear interpolation this=(1-t)f1+tf2 (i.e. linear interpolation of the translation and the quaternion) void Object3D::mix(const Object3D &f1,const Object3D &f2,double t) { _position.mix(t,f1.position(),f2.position()); _orientation.mix(t,f1.orientation(),f2.orientation()); _scale.mix(t,f1.scale(),f2.scale()); }