X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=blobdiff_plain;f=libctgraphics%2Ftransformmatrix.cpp;h=b9c613abaffef3ee97ac31f89aba2b388198f681;hp=9edf3aaf65623ea2fab61cfe2ba5adad85e4ef05;hb=f13a8c004b8f182b42d9e4df2bcd7c7f030bf1ad;hpb=ee0105d74fec9d6bfd236e22e9e1d315e46c568e diff --git a/libctgraphics/transformmatrix.cpp b/libctgraphics/transformmatrix.cpp index 9edf3aa..b9c613a 100644 --- a/libctgraphics/transformmatrix.cpp +++ b/libctgraphics/transformmatrix.cpp @@ -1,15 +1,13 @@ /***************************************************************************** ** FILE IDENTIFICATION ** -** Name: transformmatrix.cpp -** Function: Transform Matrix routine for graphic library -** Programmer: Kevin Rosenberg -** Date Started: 1-22-85 +** Name: transformmatrix.cpp +** Function: Transform Matrix routine for graphic library +** Programmer: Kevin Rosenberg +** Date Started: 1-22-85 ** ** This is part of the CTSim program -** Copyright (C) 1983-2000 Kevin Rosenberg -** -** $Id: transformmatrix.cpp,v 1.3 2000/12/06 01:46:43 kevin Exp $ +** Copyright (c) 1983-2009 Kevin Rosenberg ** ** 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 @@ -25,10 +23,10 @@ ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ -#include +#include #include "ctsupport.h" #include "transformmatrix.h" - + TransformationMatrix2D::TransformationMatrix2D (double m[3][3]) { @@ -37,7 +35,7 @@ TransformationMatrix2D::TransformationMatrix2D (double m[3][3]) mtx[2][0] = m[2][0]; mtx[2][1] = m[2][1]; mtx[2][2] = m[2][2]; } -void +void TransformationMatrix2D::setTranslate (double x, double y) { setIdentity(); @@ -46,7 +44,7 @@ TransformationMatrix2D::setTranslate (double x, double y) } -void +void TransformationMatrix2D::setScale (double sx, double sy) { setIdentity(); @@ -55,7 +53,7 @@ TransformationMatrix2D::setScale (double sx, double sy) } -void +void TransformationMatrix2D::setShear (double shrx, double shry) { setIdentity(); @@ -63,7 +61,7 @@ TransformationMatrix2D::setShear (double shrx, double shry) mtx[0][1] = shry; } -void +void TransformationMatrix2D::setRotate (double theta) { double s = sin (theta); @@ -76,7 +74,7 @@ TransformationMatrix2D::setRotate (double theta) } -void +void TransformationMatrix2D::setIdentity () { mtx[0][0] = 1.; mtx[0][1] = 0.; mtx[0][2] = 0.; @@ -92,19 +90,19 @@ TransformationMatrix2D::invert () const double determ = determinant (); if (fabs(determ) < 1E-6) { - sys_error (ERR_WARNING, "Determinant = %g [TransformationMatrix2D::invert]", determ); - print (std::cout); - std::cout << std::endl; + sys_error (ERR_WARNING, "Determinant = %g [TransformationMatrix2D::invert]", determ); + print (std::cout); + std::cout << std::endl; } b[0][0] = (mtx[1][1] * mtx[2][2] - mtx[2][1] * mtx[1][2]) / determ; b[1][0] = -(mtx[1][0] * mtx[2][2] - mtx[2][0] * mtx[1][2]) / determ; b[2][0] = (mtx[1][0] * mtx[2][1] - mtx[2][0] * mtx[1][1]) / determ; - + b[0][1] = -(mtx[0][1] * mtx[2][2] - mtx[2][1] * mtx[0][2]) / determ; b[1][1] = (mtx[0][0] * mtx[2][2] - mtx[2][0] * mtx[0][2]) / determ; b[2][1] = -(mtx[0][0] * mtx[2][1] - mtx[2][0] * mtx[0][1]) / determ; - + b[0][2] = (mtx[0][1] * mtx[1][2] - mtx[1][1] * mtx[0][2]) / determ; b[1][2] = -(mtx[0][0] * mtx[1][2] - mtx[1][0] * mtx[0][2]) / determ; b[2][2] = (mtx[0][0] * mtx[1][1] - mtx[1][0] * mtx[0][1]) / determ; @@ -113,7 +111,7 @@ TransformationMatrix2D::invert () const } -double +double TransformationMatrix2D::determinant () const { return @@ -123,7 +121,7 @@ TransformationMatrix2D::determinant () const } -void +void TransformationMatrix2D::transformPoint (double* pX, double *pY) const { double x = *pX * mtx[0][0] + *pY * mtx[1][0] + mtx[2][0]; @@ -136,9 +134,9 @@ TransformationMatrix2D::transformPoint (double* pX, double *pY) const void TransformationMatrix2D::print (std::ostream& ostr) const { - std::cout << mtx[0][0] << " " << mtx[0][1] << " " << mtx[0][2] << std::endl; - std::cout << mtx[1][0] << " " << mtx[1][1] << " " << mtx[1][2] << std::endl; - std::cout << mtx[2][0] << " " << mtx[2][1] << " " << mtx[2][2] << std::endl; + std::cout << mtx[0][0] << " " << mtx[0][1] << " " << mtx[0][2] << std::endl; + std::cout << mtx[1][0] << " " << mtx[1][1] << " " << mtx[1][2] << std::endl; + std::cout << mtx[2][0] << " " << mtx[2][1] << " " << mtx[2][2] << std::endl; } @@ -150,9 +148,9 @@ const TransformationMatrix2D operator* (const TransformationMatrix2D& a, const T for (int row = 0; row < 3; row++) for (int col = 0; col < 3; col++) { - c[row][col] = 0.; - for (int calc = 0; calc < 3; calc++) - c[row][col] += a.mtx[row][calc] * b.mtx[calc][col]; + c[row][col] = 0.; + for (int calc = 0; calc < 3; calc++) + c[row][col] += a.mtx[row][calc] * b.mtx[calc][col]; } return TransformationMatrix2D (c);