📄 matrix3d.cpp
字号:
// Matrix3D.cpp: implementation of the CMatrix3D class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "OpenGLtest.h"
#include "Matrix3D.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
/*
CMatrix3D::CMatrix3D()
{
}*/
CMatrix3D::~CMatrix3D()
{
}
CMatrix3D CMatrix3D::operator+(double R)
{
CMatrix3D TempObj;
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
{
TempObj.m[i][j]=this->m[i][j]+R;
}
return TempObj;
}
CMatrix3D CMatrix3D::operator-(double R)
{
CMatrix3D TempObj;
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
{
TempObj.m[i][j]=this->m[i][j]-R;
}
return TempObj;
}
CMatrix3D CMatrix3D::operator*(double R)
{
CMatrix3D TempObj;
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
{
TempObj.m[i][j]=this->m[i][j]*R;
}
return TempObj;
}
CMatrix3D CMatrix3D::operator/(double R)
{
CMatrix3D TempObj;
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
{
TempObj.m[i][j]=this->m[i][j]/R;
}
return TempObj;
}
CMatrix3D CMatrix3D::operator+(CMatrix3D R)
{
CMatrix3D TempObj;
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
{
TempObj.m[i][j]=this->m[i][j]+R.m[i][j];
}
return TempObj;
}
CMatrix3D CMatrix3D::operator-(CMatrix3D R)
{
CMatrix3D TempObj;
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
{
TempObj.m[i][j]=this->m[i][j]-R.m[i][j];
}
return TempObj;
}
CMatrix3D CMatrix3D::operator*(CMatrix3D R)
{
CMatrix3D TempObj;
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
{
//for(int s=0;s<3;s++)
TempObj.m[i][j]=this->m[i][0]*R.m[0][j]+this->m[i][1]*R.m[1][j]+this->m[i][2]*R.m[2][j];
}
return TempObj;
}
CMatrix3D CMatrix3D::operator-()
{
CMatrix3D TempObj;
/*
Matrix3D I;
I.m[0][0]=1;
I.m[0][1]=0;
I.m[0][2]=0;
I.m[1][0]=0;
I.m[1][1]=1;
I.m[1][2]=0;
I.m[2][0]=0;
I.m[2][1]=0;
I.m[2][2]=1;
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
if(i==0)
{
I.m[i][j]=I.m[i][j]/this->m[i][i];
cout<<"I["<<i<<"]["<<j<<"]="<<I.m[i][j]<<endl;
TempObj.m[i][j]=this->m[i][j]/this->m[i][i];
I.m[i+1][j]=I.m[i+1][j]-I.m[i+1][i]*TempObj.m[i][j];
cout<<"I["<<i+1<<"]["<<j<<"]="<<I.m[i+1][j]<<endl;;
TempObj.m[i+1][j]=this->m[i+1][j]-this->m[i+1][i]*TempObj.m[i][j];
I.m[i+2][j]=I.m[i+2][j]-I.m[i+2][i]*TempObj.m[i][j];
cout<<"I["<<i+2<<"]["<<j<<"]="<<I.m[i+2][j]<<endl;;
TempObj.m[i+2][j]=this->m[i+2][j]-this->m[i+2][i]*TempObj.m[i][j];
I.Display();
TempObj.Display();
}
else if(i==1)
{
I.m[i][j]=I.m[i][j]/TempObj.m[i][i];
cout<<"I["<<i<<"]["<<j<<"]="<<I.m[i][j]<<endl;
TempObj.m[i][j]=TempObj.m[i][j]/TempObj.m[i][i];
cout<<TempObj.m[1][2]/TempObj.m[1][1];
cout<<"TempObj["<<i<<"]["<<j<<"]="<<TempObj.m[i][j]<<endl;
I.m[i+1][j]=I.m[i+1][j]-TempObj.m[i+1][i]*I.m[i][j];
cout<<"I["<<i+1<<"]["<<j<<"]="<<I.m[i+1][j]<<endl;;
TempObj.m[i+1][j]=TempObj.m[i+1][j]-TempObj.m[i+1][i]*TempObj.m[i][j];
I.m[0][j]=I.m[0][j]-TempObj.m[0][i]*I.m[i][j];
cout<<"I["<<0<<"]["<<j<<"]="<<I.m[0][j]<<endl;;
TempObj.m[0][j]=TempObj.m[0][j]-TempObj.m[0][i]*TempObj.m[i][j];
I.Display();
TempObj.Display();
}
else
{
I.m[i][j]=I.m[i][j]/TempObj.m[i][i];
cout<<"I["<<i<<"]["<<j<<"]="<<I.m[i][j]<<endl;
TempObj.m[i][j]=TempObj.m[i][j]/TempObj.m[i][i];
cout<<"TempObj["<<i<<"]["<<j<<"]="<<TempObj.m[i][j]<<endl;
I.m[0][j]=I.m[0][j]-TempObj.m[0][i]*I.m[i][j];
cout<<"I["<<0<<"]["<<j<<"]="<<I.m[0][j]<<endl;;
TempObj.m[0][j]=TempObj.m[0][j]-TempObj.m[0][i]*TempObj.m[i][j];
I.m[1][j]=I.m[1][j]-TempObj.m[1][i]*I.m[i][j];
cout<<"I["<<1<<"]["<<j<<"]="<<I.m[1][j]<<endl;;
TempObj.m[1][j]=TempObj.m[1][j]-TempObj.m[1][i]*TempObj.m[i][j];
I.Display();
TempObj.Display();
}
}
}
//TempObj.Display();
I.Display();
*/
det=m[0][0]*m[1][1]*m[2][2]+m[0][1]*m[1][2]*m[2][0]+m[0][2]*m[1][0]*m[2][1]
-m[0][2]*m[1][1]*m[2][0]-m[0][1]*m[1][0]*m[2][2]-m[0][0]*m[1][2]*m[2][1];
if(det!=0)
{
TempObj.m[0][0]=(m[1][1]*m[2][2]-m[1][2]*m[2][1])/det;
TempObj.m[0][1]=(-1)*(m[0][1]*m[2][2]-m[0][2]*m[2][1])/det;
TempObj.m[0][2]=(m[0][1]*m[1][2]-m[0][2]*m[1][1])/det;
TempObj.m[1][0]=-1*(m[1][0]*m[2][2]-m[1][2]*m[2][0])/det;
TempObj.m[1][1]=(m[0][0]*m[2][2]-m[0][2]*m[2][0])/det;
TempObj.m[1][2]=-1*(m[0][0]*m[1][2]-m[0][2]*m[1][0])/det;
TempObj.m[2][0]=(m[1][0]*m[2][1]-m[1][1]*m[2][0])/det;
TempObj.m[2][1]=-1*(m[0][0]*m[2][1]-m[0][1]*m[2][0])/det;
TempObj.m[2][2]=(m[0][0]*m[1][1]-m[0][1]*m[1][0])/det;
}
if(det==0)
{
}
return TempObj;
}
CVector CMatrix3D::operator*(CVector R)
{
CVector A;
for(int i=0;i<3;i++)
{
A.v[0][i]=this->m[i][0]*R.v[0][0]+this->m[i][1]*R.v[0][1]+this->m[i][2]*R.v[0][2];
}
return A;
}
void CMatrix3D::Display()
{
cout << "| "<<m[0][0]<< " , " <<m[0][1]<<" , "<<m[0][2]<<" |"<<endl;
cout << "| "<<m[1][0]<< " , " <<m[1][1]<<" , "<<m[1][2]<<" |"<<endl;
cout << "| "<<m[2][0]<< " , " <<m[2][1]<<" , "<<m[2][2]<<" |\n"<<endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -