北方工业大学计算机图形学实验几何变换分析.docVIP

北方工业大学计算机图形学实验几何变换分析.doc

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
北方工业大学计算机图形学实验几何变换分析

北方工业大学 计算机图形学课程实验报告 题 目: 实验二 几何变换 学 院: 专 业: 指导教师: 学生班级: 学生学号: 学生姓名: 教师评定: 学号: 班级: 姓名: 实验报告二 几何变换实验 一.实验目的 1.熟悉OpenGL图形库; 2.掌握几何变换算法。 二.实验环境 1.软件环境: 操作系统:Win7 应用软件:VC6.0,OpenGL 2.硬件环境 CPU: 显卡: 三.用矩阵计算实现二维几何变换 写程序实现基本矩阵运算,同时实现平移、放缩、旋转等几何变换。要求自己设计实例验证平移、放缩、旋转函数,采用键盘交互。已给出二维点坐标结构体、单位矩阵赋值函数。 已给出:二维点坐标结构体 struct Point2D { float x, y; } 已给出:宏定义3×3数组 typedef float Matrix3x3 [3][3]; Matrix3x3 matComposite; 已给出:单位矩阵赋值函数 void matrix3x3SetIdentity(Matrix3x3 matIdent3x3) { int row, col; for(row=0; row3;row++) { for(col=0; col3; col++) { matIdent3x3[row][col] = (row==col); } } } 要求给出以下函数及实例截图。 1.矩阵左乘运算函数 Void matrix3x3PreMultiply(Matrix3x3 m1, Matrix3x3 m2) { int row, col; Matrix3x3 temp; for(row=0; row3;row++) { for(col=0; col3; col++) { temp[row][col] = m1[row][0]*m2[0][col] + m1[row][1]*m2[1][col] + m1[row][2]*m2[2][col]; } } for(row=0; row3;row++) { for(col=0; col3; col++) { m2[row][col]=temp[row][col]; } } 2.平移函数 void Translate2D (float tx, float ty) { Matrix3x3 matTransl; matrix3x3SetIdentity (matTransl); matTransl[0][2]=tx; matTransl[1][2]=ty; matrix3x3PreMultiply(matTransl,matComposite); } 3.顶点矩阵左乘合成函数 void TransformVerts2D(int nVerts,Point2D * verts) { GLint k; GLfloat temp1, temp2; for (k=0;knVerts; k++) { temp1=matComposite [0][0]*verts[k].x + matComposite [0][1]*verts[k].y + matComposite [0][2]; temp2=matComposite [1][0]*verts[k].x + matComposite [1][1]*verts[k].y+matComposite [1][2]; verts[k].x=temp1; verts[k].y=temp2; } } 4.绘制三角形函数 void RenderTriangle (Point2D* verts) { int k; glBegin (GL_TRIANGLES); for (k=0;k3;k++) { glVertex2f(verts[k].x,verts[k].y); } glEnd(); } 5.旋转函数 void Rotate2D (Point2D fixedPt, float theta) { Matrix3x3 matRot; matrix3x3SetIdentity (matRot); matRot [0][0]=cos(theta); matRot [0][1]=-sin (theta); matRot [0][2]=fixedPt.x*(1-cos (theta))+fixedPt.y*sin(theta); matRot [1][0]=sin (theta); matRot [1][1]=cos (theta); matRot [31][2]=fixedPt.x*(1-cos (th

文档评论(0)

yaocen + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档