• 大小: 6.9MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-09-26
  • 语言: 其他
  • 标签: 几何变换  

资源简介

支持二维和三维图形的几何变换代码,变换包括平移、旋转、对称、投影、错切等

资源截图

代码片段和文件信息

#include “二维几何变换.h“
#include “三维几何变换.h“
#include 
#include 
using namespace std;
struct point //建立点结构体
{
float x;
float y;
};
struct tpoint //建立三维点结构体
{
float x; 
float y;
float z;
};
int edge = 0;  //用于记录多边形的边数
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 < edge; 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 < edge; 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);
//窗口的背景颜色设置为白色
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 << “请指定多边形的边数:“;
edge = 0;
cin >> edge;
points = new point[edge];
_points = new point[edge];
cout << “注:以下输入坐标均以空格间隔,绘制窗口大小为800*600“ << endl;
for (int i = 0; i < edge; i++)
{
cout << “请输入第“ << i + 1 << “个顶点的xy:“;
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 < edge; i++)
{
_points[i] = points[i];
}
int choice;
cout << “0、不变换“ << endl << “1、平移“ << endl << “2、旋转“ << endl << “3、缩放“ << endl << “4、对称“ << endl << “5、错切“ << endl;
cout << “请选择变换类型:“;
cin >> choice;
string type;
switch (choice)
{
default:
cout << “输入有误!“ << endl;
return;
break;
case 0: break;
case 1:
float xi yi;
cout << “请输入x方向平移量:“;
cin >> xi;
cout << “请输入y方向平移量:“;
cin >> yi;
for (int i = 0; i < edge; i++)
Translation(_points[i].x _points[i].y xi yi);
break;
case 2:
float a;
cout << “请输入旋转角度(逆时针为正):“;
cin >> a;
for (int i = 0; i < edge; 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\link.command.1.tlog

     文件       5566  2017-11-29 16:55  变换\变换\Debug\变换.tlog\link.read.1.tlog

     文件        874  2017-11-29 16:55  变换\变换\Debug\变换.tlog\link.write.1.tlog

     文件        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个文件信息

评论

共有 条评论