• 大小: 14.79MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-08-04
  • 语言: C/C++
  • 标签: MFC  三维几何  

资源简介

2019年写的代码!很新!可用!大学计算机图形学课程作业代码,使用用斜等测图的绘制方法绘制三维几何图形,实现平移、比例、旋转、反射错切等变换。自用,代码完整。打包下载,可直接运行。c/c++语言MFC实现。支持vs。

资源截图

代码片段和文件信息

#include “stdafx.h“
#include “CTransform.h“

#define PI 3.14

CTransform::CTransform()
{
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
T[i][j] = 0.0;
}
}
POld = NULL;
}


CTransform::~CTransform()
{
}


void CTransform::SetMat(CP3 *p int n)
{
POld = p;
num = n;
}


void CTransform::Identity() //单位矩阵
{
T[0][0] = 1.0; T[0][1] = 0.0; T[0][2] = 0.0; T[0][3] = 0.0;
T[1][0] = 0.0; T[1][1] = 1.0; T[1][2] = 0.0; T[1][3] = 0.0;
T[2][0] = 0.0; T[2][1] = 0.0; T[2][2] = 1.0; T[2][3] = 0.0;
T[3][0] = 0.0; T[3][1] = 0.0; T[3][2] = 0.0; T[3][3] = 1.0;

}


void CTransform::Translate(double tx double ty double tz) //平移变换矩阵
{
Identity();
T[3][0] = tx;
T[3][1] = ty;
T[3][2] = tz;
MultiMatrix();
}


void CTransform::Scale(double sx double sy double sz) //比例变换矩阵
{
Identity();
T[0][0] = sx;
T[1][1] = sy;
T[2][2] = sz;
MultiMatrix();
}

void CTransform::Scale(double sx double sy double sz CP3 p)
{
Translate(-p.x -p.y -p.z);
Scale(sx sy sz);
Translate(p.x p.y p.z);
}

void CTransform::RotateX(double beta) //旋转变换矩阵
{
Identity();
double rad = beta * PI / 180;
T[1][1] = cos(rad); T[1][2] = sin(rad);
T[2][1] = -sin(rad); T[2][2] = cos(rad);
MultiMatrix();
}

void CTransform::RotateX(double beta CP3 p)
{
Translate(-p.x -p.y -p.z);
RotateX(beta);
Translate(p.x p.y p.z);
}

void CTransform::RotateY(double beta) //旋转变换矩阵
{
Identity();
double rad = beta * PI / 180;
T[0][0] = cos(rad); T[0][2] = -sin(rad);
T[2][0] = sin(rad); T[2][2] = cos(rad);
MultiMatrix();
}

void CTransform::RotateY(double beta CP3 p)
{
Translate(-p.x -p.y -p.z);
RotateY(beta);
Translate(p.x p.y p.z);
}

void CTransform::RotateZ(double beta) //旋转变换矩阵
{
Identity();
double rad = beta * PI / 180;
T[0][0] = cos(rad); T[0][1] = sin(rad);
T[1][0] = -sin(rad); T[1][1] = cos(rad);
MultiMatrix();
}

void CTransform::RotateZ(double beta CP3 p)
{
Translate(-p.x -p.y -p.z);
RotateZ(beta);
Translate(p.x p.y p.z);
}


void CTransform::ReflectZ()
{
Identity();
T[0][0] = -1;
T[1][1] = -1;
MultiMatrix();
}


void CTransform::ReflectX()
{
Identity();
T[1][1] = -1;
T[2][2] = -1;
MultiMatrix();
}


void CTransform::ReflectY()
{
Identity();
T[0][0] = -1;
T[2][2] = -1;
MultiMatrix();
}

void CTransform::ReflectXOY()
{
Identity();
T[2][2] = -1;
MultiMatrix();
}

void CTransform::ReflectYOZ()
{
Identity();
T[0][0] = -1;
MultiMatrix();
}

void CTransform::ReflectZOX()
{
Identity();
T[1][1] = -1;
MultiMatrix();
}

void CTransform::ShearX(double b double c) //错切变换矩阵
{
Identity();
T[1][0] = b;
T[2][0] = c;
MultiMatrix();
}

void CTransform::ShearY(double b double c) //错切变换矩阵
{
Identity();
T[0][1] = b;
T[2][1] = c;
MultiMatrix();
}

void CTransform::ShearZ(double b double c) //错切变换矩阵
{
Identity();
T[0][2] = b;
T[1][2] = c;

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       3660  2019-11-25 12:59  Test5\CTransform.cpp

     文件       1032  2019-11-25 12:59  Test5\CTransform.h

     文件      35590  2019-11-25 13:00  Test5\Debug\CTransform.obj

     文件      10060  2019-11-23 12:05  Test5\Debug\Face.obj

     文件      22971  2019-11-23 12:05  Test5\Debug\Line.obj

     文件      68891  2019-11-25 11:06  Test5\Debug\MainFrm.obj

     文件      20294  2019-11-23 12:05  Test5\Debug\P2.obj

     文件       9802  2019-11-23 12:05  Test5\Debug\P3.obj

     文件      13111  2019-11-23 12:05  Test5\Debug\RGB.obj

     文件    1007606  2019-11-23 12:05  Test5\Debug\stdafx.obj

     文件         64  2019-11-25 13:00  Test5\Debug\Test5.log

     文件      53741  2019-11-25 13:00  Test5\Debug\Test5.obj

     文件   56819712  2019-11-23 12:05  Test5\Debug\Test5.pch

     文件    1264948  2019-11-25 13:00  Test5\Debug\Test5.res

     文件       7832  2019-11-25 13:00  Test5\Debug\Test5.tlog\CL.command.1.tlog

     文件     100112  2019-11-25 13:00  Test5\Debug\Test5.tlog\CL.read.1.tlog

     文件       5214  2019-11-25 13:00  Test5\Debug\Test5.tlog\CL.write.1.tlog

     文件       2142  2019-11-25 13:00  Test5\Debug\Test5.tlog\link.command.1.tlog

     文件       7076  2019-11-25 13:00  Test5\Debug\Test5.tlog\link.read.1.tlog

     文件       1036  2019-11-25 13:00  Test5\Debug\Test5.tlog\link.write.1.tlog

     文件        310  2019-11-25 13:00  Test5\Debug\Test5.tlog\rc.command.1.tlog

     文件       5188  2019-11-25 13:00  Test5\Debug\Test5.tlog\rc.read.1.tlog

     文件        134  2019-11-25 13:00  Test5\Debug\Test5.tlog\rc.write.1.tlog

     文件        200  2019-11-25 13:00  Test5\Debug\Test5.tlog\Test5.lastbuildstate

     文件      94053  2019-11-25 11:06  Test5\Debug\Test5Doc.obj

     文件      87356  2019-11-25 13:00  Test5\Debug\Test5View.obj

     文件    1420288  2019-11-25 13:00  Test5\Debug\vc141.idb

     文件    6991872  2019-11-25 13:00  Test5\Debug\vc141.pdb

     文件        249  2019-11-12 17:08  Test5\Face.cpp

     文件        167  2019-11-12 17:08  Test5\Face.h

............此处省略36个文件信息

评论

共有 条评论