//===========================================================================// // File: mtrxstk.hh // // Project: MUNGA Brick: Math Library // // Contents: Interface specification for the matrix class // //---------------------------------------------------------------------------// // Date Who Modification // // -------- --- ---------------------------------------------------------- // // 11/21/94 JMA Initial coding. // // 12/01/94 JMA Changed Matrix to Matrix4D, based both matrix classes on // // Matrix44Base // //---------------------------------------------------------------------------// // Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // // All Rights reserved worldwide // // This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // //===========================================================================// #pragma once #include "Stuff.hpp" #include "MemoryBlock.hpp" #include "Matrix.hpp" #include "LinearMatrix.hpp" namespace Stuff { //~~~~~~~~~~~~~~~~~~~~~~~ AffinerMatrix4DStack ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ class AffinerMatrix4DStack: public MemoryStackOf { public: AffinerMatrix4DStack( size_t start, size_t delta, const char* name ): MemoryStackOf(start, delta, name) {} AffinerMatrix4DStack& Concatenate(const AffineMatrix4D& matrix); AffineMatrix4D& Push(const AffineMatrix4D& matrix); operator AffineMatrix4D&() {Check_Object(this); return *Peek();} }; //~~~~~~~~~~~~~~~~~~~~~~~ LinearMatrix4DStack ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ class LinearMatrix4DStack: public MemoryStackOf { public: LinearMatrix4DStack( size_t start, size_t delta, const char* name ): MemoryStackOf(start, delta, name) {} LinearMatrix4DStack& Concatenate(const LinearMatrix4D& matrix); LinearMatrix4D& Push(const LinearMatrix4D& matrix); operator LinearMatrix4D&() {Check_Object(this); return *Peek();} }; //~~~~~~~~~~~~~~~~~~~~~~~~~~ Matrix4DStack ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ class Matrix4DStack: public MemoryStackOf { public: Matrix4DStack( size_t start, size_t delta, const char* name ): MemoryStackOf(start, delta, name) {} Matrix4DStack& Concatenate(const Matrix4D& matrix); Matrix4DStack& Concatenate(const AffineMatrix4D& matrix); Matrix4D& Push(const Matrix4D& matrix); Matrix4D& Push(const AffineMatrix4D& matrix); operator Matrix4D&() {Check_Object(this); return *Peek();} }; }