#include "munga.h" #pragma hdrstop #include "normal.h" #include "affnmtrx.h" // //############################################################################# //############################################################################# // 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