Files
pvvmud/common/include/matrix.H
2025-03-05 08:37:43 +01:00

60 lines
1.7 KiB
C++

/*
* PVVMUD a 3D MUD
* Copyright (C) 1998-1999 Programvareverkstedet (pvv@pvv.org)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
#ifndef _MATRIX_H
#define _MATRIX_H
#include "object.H"
#include "direction.H"
#include "position.H"
#include <iostream.h>
class CVector;
class CMatrix: public CObject {
double m_matrix[16];
public:
CMatrix();
CMatrix(const CMatrix& matrix);
CMatrix(double m0, double m4, double m8, double m12,
double m1, double m5, double m9, double m13,
double m2, double m6, double m10, double m14,
double m3, double m7, double m11, double m15);
CMatrix(CVector & v0, CVector & v1, CVector & v2, CVector & v3);
double * getVector();
void multiply(const CMatrix& matrix);
void loadIdentity();
void rotate(const CDirection & direction);
void rotate(double angle, double xx, double yy, double zz);
void translate(const CPosition & position);
void transpose();
};
CMatrix operator*(const CMatrix & m1, const CMatrix & m2);
ostream& operator<<(ostream&s,const CMatrix& m);
#endif // _MATRIX_H