资源简介
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\li
文件 7076 2019-11-25 13:00 Test5\Debug\Test5.tlog\li
文件 1036 2019-11-25 13:00 Test5\Debug\Test5.tlog\li
文件 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个文件信息
- 上一篇:与opencv有关的图像检索的
- 下一篇:c++飞机大战 源代码+程序
相关资源
- MFC+OpenGL三维绘图
- MFC Windows程序设计(第二版)(中文版
- FaceMFC.part3
- mfc 仿YY登陆界面,源码。仅供学习。
- duilib相关(duilib库及源码、duilib的M
- MFC仿QQ局域网聊天软件
- MFC两张图片拼接
- VS2013写的简单小游戏俄罗斯方块
- SerialAPP 开始研究MFC
- MFC学生选课系统263525
- VS2010+MFC 使用WinAPI实现串口通信
- opencv 车牌识别 vs2010 mfc
- 用MFC编写的对mysql数据库的操作
- 计算机图形学opengl作业
- 利用MFC的Picture控件显示图像和视频
- MFC五子棋源码以及exe文件
- 通过MFC的MCI实现的音乐播放器VC可视化
- mfc socket编程实现聊天与文件传输vs2
- MFC socket编程 简易聊天工具及文件
- MFC图像处理
- MFC十大经典游戏代码
- VS2010 C++ MFC 登陆界面设计
- 数字图像处理mfc
- mfc实现滑动窗口的简单模拟
- OBJ 模型文件读取显示 基于OpenGL MFC界
- 基于vs 2010 mfc实现对excel数据的读取,
- MFC动态加载和静态加载bmp类型图片
- 扫雷小游戏 完整源码
- 指针式仪表识别(MFC)
- 高斯投影正反算MFC
评论
共有 条评论