⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gismatrix.cpp

📁 该程序用来完成蜗杆齿面的计算
💻 CPP
字号:
// Matrix.cpp: implementation of the CMatrix class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "GISMatrix.h"
#include <math.h>

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CMatrix::CMatrix()
{

}

CMatrix::~CMatrix()
{

}

CMatrix& CMatrix::RotateVectorAboutXbyAng(double angle)
{
	mat[0][0]=1.0;
	mat[0][1]=0.0;
	mat[0][2]=0.0;
	mat[1][0]=0.0;
	mat[1][1]=cos(angle);
	mat[1][2]=-sin(angle);
	mat[2][0]=0.0;
	mat[2][1]=sin(angle);
	mat[2][2]=cos(angle);
	return *this;
}

CMatrix& CMatrix::RotateVectorAboutYbyAng(double angle)
{
	mat[0][0]=cos(angle);
	mat[0][1]=0.0;
	mat[0][2]=sin(angle);
	mat[1][0]=0.0;
	mat[1][1]=1.0;
	mat[1][2]=0.0;
	mat[2][0]=-sin(angle);
	mat[2][1]=0.0;
	mat[2][2]=cos(angle);
	return *this;
}

CMatrix& CMatrix::RotateVectorAboutZbyAng(double angle)
{
	mat[0][0]=cos(angle);
	mat[0][1]=-sin(angle);
	mat[0][2]=0.0;
	mat[1][0]=sin(angle);
	mat[1][1]=cos(angle);
	mat[1][2]=0.0;
	mat[2][0]=0.0;
	mat[2][1]=0.0;
	mat[2][2]=1.0;
	return *this;
}

CMatrix& CMatrix::RotateCoordSysAboutXbyAng(double angle)
{
	mat[0][0]=1.0;
	mat[0][1]=0.0;
	mat[0][2]=0.0;
	mat[1][0]=0.0;
	mat[1][1]=cos(angle);
	mat[1][2]=sin(angle);
	mat[2][0]=0.0;
	mat[2][1]=-sin(angle);
	mat[2][2]=cos(angle);
	return *this;
}

CMatrix& CMatrix::RotateCoordSysAboutYbyAng(double angle)
{
	mat[0][0]=cos(angle);
	mat[0][1]=0.0;
	mat[0][2]=-sin(angle);
	mat[1][0]=0.0;
	mat[1][1]=1.0;
	mat[1][2]=0.0;
	mat[2][0]=sin(angle);
	mat[2][1]=0.0;
	mat[2][2]=cos(angle);
	return *this;
}

CMatrix& CMatrix::RotateCoordSysAboutZbyAng(double angle)
{
	mat[0][0]=cos(angle);
	mat[0][1]=sin(angle);
	mat[0][2]=0.0;
	mat[1][0]=-sin(angle);
	mat[1][1]=cos(angle);
	mat[1][2]=0.0;
	mat[2][0]=0.0;
	mat[2][1]=0.0;
	mat[2][2]=1.0;
	return *this;
}

CMatrix& CMatrix::RotateVectorAboutVectorbyAng(CVector& vec, double angle)
{
	double sangle=sin(angle);
	double cangle=cos(angle);
	double vers,t1;

	vers=1.0-cangle;
	t1=vec.y*vec.z*vers;
	mat[2][1]=t1+vec.x*sangle;
	mat[1][2]=t1-vec.x*sangle;
	t1=vec.x*vec.z*vers;
	mat[2][0]=t1-vec.y*sangle;
	mat[0][2]=t1+vec.y*sangle;
	t1=vec.x*vec.y*vers;
	mat[0][1]=t1-vec.z*sangle;
	mat[1][0]=t1+vec.z*sangle;
	mat[0][0]=1.0-(vec.y*vec.y+vec.z*vec.z)*vers;
	mat[1][1]=1.0-(vec.x*vec.x+vec.z*vec.z)*vers;
	mat[2][2]=1.0-(vec.x*vec.x+vec.y*vec.y)*vers;
	return *this;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -