00001 /********************************************************************** 00002 *< 00003 FILE: decomp.h 00004 00005 DESCRIPTION: 00006 00007 CREATED BY: Dan Silva 00008 00009 HISTORY: 00010 00011 *> Copyright (c) 1994, All Rights Reserved. 00012 **********************************************************************/ 00013 00014 #pragma once 00015 #include "maxheap.h" 00016 #include "point3.h" 00017 #include "quat.h" 00018 00038 struct AffineParts: public MaxHeapOperators { 00040 Point3 t; /* Translation components */ 00042 Quat q; /* Essential rotation */ 00044 Quat u; /* Stretch rotation */ 00046 Point3 k; /* Stretch factors */ 00048 float f; /* Sign of determinant */ 00049 }; 00050 00062 CoreExport void SpectralDecomp(Matrix3 m, Point3 &s, Quat& q); 00063 00093 CoreExport void decomp_affine(Matrix3 A, AffineParts *parts); 00094 00103 CoreExport void invert_affine(AffineParts *parts, AffineParts *inverse); 00104