/* matrix.h -*-C++-*- * by Will Wagner * last updated 11 Aug 1997, 17:33:08 wwagner * * This file contains the class declaration for the matrix and * transformation classes for POVRay. * * Changes * 04 Aug 1997 * - Added this comment block. * * Things to do * */ #ifndef __INC_MATRICES_H__ #define __INC_MATRICES_H__ #include "vector.h" #include "frame.h" class Matrix { private: vector *column; public: Matrix(void); Matrix(const Matrix&); ~Matrix(); void Zero(void); void Identity(void); pov_vector& operator[](int) const; Matrix& operator=(const Matrix&); Matrix operator*(Matrix&) const; Matrix& operator*=(Matrix&); friend Matrix Transpose(const Matrix&); friend Matrix Invert(const Matrix&); }; class Transformation { private: Matrix ma, in; public: Transformation(void); Transformation(const Transformation&); ~Transformation(); pov_vector TransformPoint(pov_vector&); pov_vector InverseTransformPoint(pov_vector&); pov_vector TransformDirection(pov_vector&); pov_vector InverseTransformDirection(pov_vector&); pov_vector TransformNormal(pov_vector&); pov_vector InverseTransformNormal(pov_vector&); void MatrixTransform(Matrix&); void ScalingTransform(pov_vector&); void TranslationTransform(pov_vector&); void RotationTransform(const pov_vector&); void Compose(Transformation&); void AxisRotationTransform(const pov_vector&, DBL); void CoordinateTransform(pov_vector&, pov_vector&, DBL, DBL); }; #endif /* __INC_MATRICES_H__ */