//===========================================================================// // File: motion.cc // // Contents: Implementation details for the position class // //---------------------------------------------------------------------------// // Copyright (C) Microsoft Corporation. All rights reserved. // //===========================================================================// #include "StuffHeaders.hpp" const Motion3D Motion3D::Identity(Vector3D(0.0f, 0.0f, 0.0f), Vector3D(0.0f, 0.0f, 0.0f)); Motion3D::Motion3D(const Motion3D& motion) { Check_Pointer(this); Check_Object(&motion); angularMotion = motion.angularMotion; linearMotion = motion.linearMotion; } // //########################################################################### //########################################################################### // Motion3D& Motion3D::operator=(const Motion3D &motion) { Check_Pointer(this); Check_Object(&motion); angularMotion = motion.angularMotion; linearMotion = motion.linearMotion; return *this; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // bool Stuff::Close_Enough( const Motion3D &a1, const Motion3D &a2, Scalar e ) { Check_Object(&a1); Check_Object(&a2); return Close_Enough(a1.linearMotion, a2.linearMotion, e) && Close_Enough(a1.angularMotion, a2.angularMotion, e); } // //########################################################################### //########################################################################### // Motion3D& Motion3D::AddScaled( const Motion3D& source, const Motion3D& delta, Scalar t ) { Check_Pointer(this); Check_Object(&source); Check_Object(&delta); Verify(t >= 0.0f); linearMotion.AddScaled(source.linearMotion, delta.linearMotion, t); angularMotion.AddScaled(source.angularMotion, delta.angularMotion, t); return *this; } // //########################################################################### //########################################################################### // #if !defined(Spew) void Spew( const char *group, const Motion3D& motion ) { Check_Object(&motion); SPEW((group, "{+")); Spew(group, motion.linearMotion); SPEW((group, ",+")); Spew(group, motion.angularMotion); SPEW((group, "}+")); } #endif // //########################################################################### //########################################################################### // void Motion3D::TestInstance() const { Check_Object(&angularMotion); }