資源簡介
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++飛機大戰 源代碼+程序
評論
共有 條評論