计算机图形学图形的几何变换的实现算法_第1页
计算机图形学图形的几何变换的实现算法_第2页
计算机图形学图形的几何变换的实现算法_第3页
计算机图形学图形的几何变换的实现算法_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验二图形的几何变换的实现算法班级08信计 学号59姓名 分数一、实验目的和要求:1、掌握而为图形的基本几何变换,如平移,旋转,缩放,对称,错切变换;(2、掌握OpenGL中模型变换函数,实现简单的动画技术。3、学习使用OpenG晚成基本图形。4、巩固所学理论知识,加深对二维变换的理解,加深理解利用变换矩阵可 由简单图形得到复杂图形。加深对变换矩阵算法的理解。编制利用旋转变换绘制齿轮的程序。编程实现变换矩阵算法,绘制给出形体 的三视图。调试程序及分析运行结果。要求每位学生独立完成该实验,并上传实 验报告。二、实验原理和内容:.原理:图像的几何变换包括:图像的空间平移、比例缩放、旋转、仿射变换和

2、图像插值。图像几何变换的实质:改变像素的空间位置,估算新空间位置上的像素值。图像几何变换的一般表达式:u,v=X(x,y),Y(x,y),其中,u,v为变换后图像像素的笛卡尔坐标,x,y为原始图像中像素的笛卡尔坐标。这样就得到了原始图像与变换后图像的像素的对应关系。平移变换:若图像像素点(x,y)平移到(x + xo,y + yo) ,则变换函数为u = X(x, y) =x +xo ,V =Y(x, y) = y + y0 ,写成矩阵表达式为:其中,x0和y0分别为x和y的坐标平移量。比例缩放:若图像坐标 (x,y)缩放到(sx,sy )倍,则变换函数为:"u 'I _ S

3、x 0 I_x1 !vj='0其中,Sx,Sy分别为x和y坐标的缩放因子,其大于1表示放大,小于1表示缩小。旋转变换:将输入图像绕笛卡尔坐标系的原点逆时针旋转9角度,则变换后图像坐标为:u _ cos -sin lx v tsin f cos -i J y内容:1、对一个三角形分别实现平移,缩放旋转等变化。2 .在方向、尺寸和形状方面的变换是用改变对象坐标描述的几何变换来完成的。基本几何 变换都是相对于坐标原点和坐标轴进行的几何变换,有平移、旋转、缩放、反射、错切等。用直线命令画出一个齿(或六边形的一半)一利用旋转变换或对称变换矩阵实现对其余部分的绘制一调试运行程序一输出图形一分析结果

4、一结束。编写三维变换算法程序一检查程序的正确性一分段调试程序一输入给出的三维形体各 顶点的坐标一执行变换一对算法程序进行必要的调整一更换不同的形体数据继续变换一结 束。3 .用实验一的方法解决这个问题,某三角形的三个点点坐标为 5.0.0.25.0 , 150.0.25.0,100.0.100.0,创建一个长度分别为 600,600的窗口,窗口的左上角位于屏幕坐标 (100,100) 处。然后绘制一个由上述顶点所绘制的三角形,实现该三角形进行下列几何变换:首先使三角形沿着其中心的 x轴和y轴方向缩小50%,然后沿着出示中心旋转 90度;最后沿着y轴 平移100个单位。三、实验代码如下1实验一#

5、include <GL/glut,h>#include <stdlib.h>Void init (void) glClearVolor (0.0,0.0,0.0,0.0);glShadeModel (GL-FLAT); Void draw_triangle(void) glBegin(GL_LINE_LOOP);glVertex2f(0.0,25.0);glVertex2f(25.0,-25.0);glVertex2f(-25.0,-25.0);glEnd();Void display(void) glClear (GL_COLOR_BUEFER_BIT);glColo

6、r3f(1.0,1.0,1.0);glLoadIdentity();glColor3f(1.0,1.0,1.0);draw_triangle();glEnable (GL_LINE_STIPPLE);glLineStipple (1,0xF0F0);glLoadIdentity();glTranslatef (-20.0,0.0,0.0);draw_triangle();glLineStipple (1,0xff00);glLoadIdentity ();glScalef (1.5,0.5,1.0);draw_triangle ();glLineStipple (1,0x8888);glLoa

7、dIdentity();glRotatef(90.0,0.0,0.0,1.0);draw_triangle ();glDisable (GL_LINE_STIPPLE);glFlush();Void reshape (int w,nt h)glViewport (0,0,(GLsizei) w,(GLsizei) h);glMatrixMode (GL_PROJECTION);glLoadIdentity ();if (w<=h)gluOrtho2D(-50.0,50.0,-50.0*(GLfloat)h/(GLfloat)w,50.0*(GLfloat)h/(GLfloat)w);gl

8、MatrixMode(GL_MODELVIEW);int main (int argc,char*argv)glutInit(&argc,argv);glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);glutInitWindowSize (500,500);glutInitWindowPosition (100,100);glutCreatWindow (argv0);init ();glutDisplayFunc (display);glutReshapeFunc (reshape);glutMainLoop();return 0;实验结果如下

9、2实验二代码#include<graphics.h>#include<math.h> int a144=30,0Q1,30,40,0,1,0,40,0,1,0,40,10,1,0,30,30,1, 0,0,30,1,30,0,30,1,30,10,30,1,10,10,30,1,10,30,30,1,10,40,10,1, 10,10,10,1,30,10,10,1,30,40,10,1;float t44,p144;void a400()int i,j;for(i=0;i<4;i+)for(j=0;j<4;j+)tij=0;void a500() int

10、k,i,j;for(i=0;i<14;i+)for(j=0;j<4;j+)pij=0;for(k=0;k<4;k+)pij=pij+aik*tkj;pi0=pi0+280;pi1=-pi1+180;setcolor(9);moveto(p0,p0);for(i=0;i<14;i+)lineto(pi0,p皿1);line(p60,p61,p00,p01);line(p70,p71,p120,p121);line(p80,p81,p110,p111);line(p90,p91,p40,p41);line(p100,p101,p30,p31);line(p130,p131,p100,p101);line(p10,p11,p130,p131);getch();main()int driver,mode,i,j;driver=DETECT;initgraph(&driver,&mode,"d:tc");setbkc010r(3);a400();t00=0.7071*3;t01=-0.4082*3;t10=-0.7071*3;t11=-0.4082*3;t21=0.8165*3;t33=1;a5

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论