資源簡介
支持二維和三維圖形的幾何變換代碼,變換包括平移、旋轉(zhuǎn)、對稱、投影、錯切等

代碼片段和文件信息
#include?“二維幾何變換.h“
#include?“三維幾何變換.h“
#include?
#include?
using?namespace?std;
struct?point?//建立點結(jié)構(gòu)體
{
float?x;
float?y;
};
struct?tpoint?//建立三維點結(jié)構(gòu)體
{
float?x;?
float?y;
float?z;
};
int?edge?=?0;??//用于記錄多邊形的邊數(shù)
point?*points;?//用于存儲點的信息
point?*_points;//用戶存儲變化后點的信息
tpoint?*tpoints;//存儲三維點的信息
tpoint?*_tpoints;//存儲變化后三維點的信息
void?Run()
{
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_LINES);
glColor3f(0.0?0.0?0.0);
glVertex2i(-800?0);
glVertex2i(800?0);
glVertex2i(0?-600);
glVertex2i(0?600);
glEnd();
glLineWidth(3);
glColor3f(0.0?1.0?0.0);
glBegin(GL_LINES);
for?(int?i?=?1;?i? {
glVertex2i(points[i?-?1].x?points[i?-?1].y);
glVertex2i(points[i].x?points[i].y);
}
glVertex2i(points[edge?-?1].x?points[edge?-?1].y);
glVertex2i(points[0].x?points[0].y);
glColor3f(1.0?0.0?0.0);
for?(int?i?=?1;?i? {
glVertex2i(_points[i?-?1].x?_points[i?-?1].y);
glVertex2i(_points[i].x?_points[i].y);
}
glVertex2i(_points[edge?-?1].x?_points[edge?-?1].y);
glVertex2i(_points[0].x?_points[0].y);
glEnd();
glFlush();
}
void?initial(void)
{
glClearColor(1.0?1.0?1.0?0.0);
//窗口的背景顏色設(shè)置為白色
glMatrixMode(GL_PROJECTION);
gluOrtho2D(-800.0?800.0?-600.0?600.0);
}
void?glut(int?argc?char*?argv)
{
glutInit(&argc?&argv);
glutInitDisplayMode(GLUT_SINGLE?|?GLUT_RGB);
glutInitWindowPosition(200?100);
glutInitWindowSize(800?600);
glutCreateWindow(“幾何變換“);
initial();
glutDisplayFunc(Run);
glutMainLoop();
}
void?main(int?argc?char*?argv)
{
cout?<“指定模式(二維,三維):“;
string?mode;
cin?>>?mode;
if?(mode?==?“二維“)
{
cout?<“請指定多邊形的邊數(shù):“;
edge?=?0;
cin?>>?edge;
points?=?new?point[edge];
_points?=?new?point[edge];
cout?<“注:以下輸入坐標(biāo)均以空格間隔,繪制窗口大小為800*600“?< for?(int?i?=?0;?i? {
cout?<“請輸入第“?< cin?>>?points[i].x;
cin?>>?points[i].y;
}
/*points[0].x?=?100;?points[0].y?=?100;
points[1].x?=?100;?points[1].y?=?200;
points[2].x?=?200;?points[2].y?=?200;*/
//glut(argc?argv);
for?(int?i?=?0;?i? {
_points[i]?=?points[i];
}
int?choice;
cout?<“0、不變換“?< cout?<“請選擇變換類型:“;
cin?>>?choice;
string?type;
switch?(choice)
{
default:
cout?<“輸入有誤!“?< return;
break;
case?0:?break;
case?1:
float?xi?yi;
cout?<“請輸入x方向平移量:“;
cin?>>?xi;
cout?<“請輸入y方向平移量:“;
cin?>>?yi;
for?(int?i?=?0;?i? Translation(_points[i].x?_points[i].y?xi?yi);
break;
case?2:
float?a;
cout?<“請輸入旋轉(zhuǎn)角度(逆時針為正):“;
cin?>>?a;
for?(int?i?=?0;?i? Rotation(_points[i].x?_points[i].y?a);
break;
case?3:
float?Sx?Sy;
cout?<“請輸入x方向縮放量:“;
cin?>>?Sx;
cout?<“請輸入y方向縮放量:“;
cin?>>?Sy;
for?(int?i?=?0
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????99328??2017-11-29?16:55??變換\Debug\變換.exe
?????文件?????527888??2017-11-29?16:55??變換\Debug\變換.ilk
?????文件?????789504??2017-11-29?16:55??變換\Debug\變換.pdb
?????文件?????363520??2017-11-29?16:55??變換\變換\Debug\vc120.idb
?????文件?????364544??2017-11-29?16:55??變換\變換\Debug\vc120.pdb
?????文件????????365??2017-03-26?21:20??變換\變換\Debug\變換.Build.CppClean.log
?????文件???????3197??2017-11-29?16:55??變換\變換\Debug\變換.log
?????文件?????246095??2017-11-29?16:55??變換\變換\Debug\變換.obj
?????文件???????1266??2017-11-29?16:55??變換\變換\Debug\變換.tlog\cl.command.1.tlog
?????文件??????11614??2017-11-29?16:55??變換\變換\Debug\變換.tlog\CL.read.1.tlog
?????文件????????910??2017-11-29?16:55??變換\變換\Debug\變換.tlog\CL.write.1.tlog
?????文件???????2258??2017-11-29?16:55??變換\變換\Debug\變換.tlog\li
?????文件???????5566??2017-11-29?16:55??變換\變換\Debug\變換.tlog\li
?????文件????????874??2017-11-29?16:55??變換\變換\Debug\變換.tlog\li
?????文件????????198??2017-11-29?16:55??變換\變換\Debug\變換.tlog\變換.lastbuildstate
?????文件???????1525??2017-03-26?21:22??變換\變換\三維幾何變換.h
?????文件???????1057??2017-03-26?21:17??變換\變換\二維幾何變換.h
?????文件???????7542??2017-11-29?16:56??變換\變換\變換.cpp
?????文件???????4216??2017-03-25?16:43??變換\變換\變換.vcxproj
?????文件???????1178??2017-03-25?16:43??變換\變換\變換.vcxproj.filters
?????文件???32505856??2017-11-29?16:56??變換\變換.sdf
?????文件????????964??2017-03-22?20:59??變換\變換.sln
????..A..H.?????25088??2017-11-29?16:56??變換\變換.v12.suo
?????目錄??????????0??2017-11-29?16:55??變換\變換\Debug\變換.tlog
?????目錄??????????0??2017-11-29?16:55??變換\變換\Debug
?????目錄??????????0??2017-03-26?21:22??變換\Debug
?????目錄??????????0??2017-11-29?16:56??變換\變換
?????目錄??????????0??2017-11-29?16:56??變換
-----------?---------??----------?-----??----
?????????????34964553????????????????????28
............此處省略1個文件信息
評論
共有 條評論