00001 /* Copyright (c) 2005 Arachi, Inc. and Stanford University. 00002 * 00003 * Permission is hereby granted, free of charge, to any person obtaining 00004 * a copy of this software and associated documentation files (the 00005 * "Software"), to deal in the Software without restriction, including 00006 * without limitation the rights to use, copy, modify, merge, publish, 00007 * distribute, sublicense, and/or sell copies of the Software, and to 00008 * permit persons to whom the Software is furnished to do so, subject 00009 * to the following conditions: 00010 * 00011 * The above copyright notice and this permission notice shall be included 00012 * in all copies or substantial portions of the Software. 00013 * 00014 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 00015 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 00016 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 00017 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 00018 * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 00019 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 00020 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 00021 */ 00022 00023 #ifndef _deTransform_h 00024 #define _deTransform_h 00025 00032 class deTransform 00033 { 00034 public: 00036 DE_MATH_API deMatrix3& rotation(); 00038 DE_MATH_API const deMatrix3& rotation() const; 00040 DE_MATH_API deVector3& translation(); 00042 DE_MATH_API const deVector3& translation() const ; 00044 DE_MATH_API void identity(); 00046 DE_MATH_API void operator=(const deTransform& t); 00048 DE_MATH_API void multiply(const deTransform& t1, const deTransform& t2); 00050 DE_MATH_API void inverse(const deTransform& t); 00052 DE_MATH_API void inversedMultiply(const deTransform& t1, const deTransform& t2); 00054 DE_MATH_API void multiplyInversed(const deTransform& t1, const deTransform& t2); 00056 DE_MATH_API void set(const deFrame& f); 00058 DE_MATH_API void set(const deMatrix3& m, const deVector3& v); 00060 void set(const deFloat alpha, const deFloat a, const deFloat d, const deFloat theta); 00062 void set(const deVector3& axis, const deFloat pitch, const deFloat angle); 00063 00064 private: 00065 deMatrix3 _m; 00066 deVector3 _v; 00067 }; 00068 00069 #endif // _deTransform_h 00070