X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=include%2Ftransformmatrix.h;fp=include%2Ftransformmatrix.h;h=5274b309a80fa09c9f65b33935a5c27951c8744f;hb=711cae0ee02e046370fdb4d6c6f440596ff71980;hp=0000000000000000000000000000000000000000;hpb=c0880d4cd7e7d8da6fe67a28d27990c0279b9497;p=ctsim.git diff --git a/include/transformmatrix.h b/include/transformmatrix.h new file mode 100644 index 0000000..5274b30 --- /dev/null +++ b/include/transformmatrix.h @@ -0,0 +1,60 @@ +/***************************************************************************** +** FILE IDENTIFICATION +** +** Name: sgp.h +** Purpose: Header file for Simple Graphics Package +** Author: Kevin Rosenberg +** Date Started: 1984 +** +** This is part of the CTSim program +** Copyright (C) 1983-2000 Kevin Rosenberg +** +** $Id: transformmatrix.h,v 1.1 2000/07/28 08:28:08 kevin Exp $ +** +** This program is free software; you can redistribute it and/or modify +** it under the terms of the GNU General Public License (version 2) as +** published by the Free Software Foundation. +** +** 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 __H_TRANSFORMMATRIX +#define __H_TRANSFORMMATRIX + +class ostream; +class TransformationMatrix2D { +public: + double mtx[3][3]; + + TransformationMatrix2D () {}; + TransformationMatrix2D (double m[3][3]); + + void setIdentity(); + void setTranslate (double x, double y); + void setScale (double sx, double sy); + void setShear (double shrx, double shry); + void setRotate (double theta); + + double determinant () const; + + const TransformationMatrix2D invert () const; + + void transformPoint (double *pX, double *pY) const; + + void print (ostream& ostr) const; + + friend const TransformationMatrix2D operator* (const TransformationMatrix2D& lhs, const TransformationMatrix2D& rhs); + +}; + + +const TransformationMatrix2D operator* (const TransformationMatrix2D& lhs, const TransformationMatrix2D& rhs); + +#endif