//===========================================================================// // File: normal.cc // // Project: MUNGA Brick: Math Library // // Contents: Implementation details for the normal class // //---------------------------------------------------------------------------// // Date Who Modification // // -------- --- ---------------------------------------------------------- // // 11/19/94 JMA Initial coding. // //---------------------------------------------------------------------------// // Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // // All Rights reserved worldwide // // This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // //===========================================================================// #include #pragma hdrstop #if !defined(NORMAL_HPP) #include #endif #if !defined(AFFNMTRX_HPP) #include #endif // //############################################################################# //############################################################################# // Normal& Normal::Multiply_Inverse( const Normal &Source, const AffineMatrix &M ) { Check(this); Check(&Source); Check(&M); x = Source.x*M(0,0) + Source.y*M(0,1) + Source.z*M(0,2); y = Source.x*M(1,0) + Source.y*M(1,1) + Source.z*M(1,2); z = Source.x*M(2,0) + Source.y*M(2,1) + Source.z*M(2,2); return *this; } // //############################################################################# //############################################################################# // Normal& Normal::Multiply( const Normal &Source, const AffineMatrix &M ) { Check(this); Check(&Source); Check(&M); AffineMatrix m; m.Invert(M); return Multiply_Inverse(Source,m); } #if defined(TEST_CLASS) # include "normal.tcp" #endif