实验四01 二维图形的几何变换.doc

计算机图形学实验指导书陈华光、陈多、刘长松编专业班级 计算机0902 _ 姓 名 田鹏 _ 学 号 200903010225 _湖南工程学院二一二年六月计算机图形学实验报告四实验名称 绘制简单的三维图形 评分 实验日期 2012 年 6 月 12 日 指导教师 李长松姓名 专业班级 计算机0902 学号 200903010211 一、实验目的1、复习用二维图来表示三维立体图形,三视图的表示及的三视图的变换矩阵2、掌握用C语言编程实现三维简单立体的正等测投影的绘制3、掌握用C语言编程实现三维简单立体的三视图的绘制4、掌握用C语言编程实现三维简单立体的透视图的绘制5、用C语言编写的图形变换函数二、实验要求1、在屏幕上绘制出一个长方体或简单几何体的正等测投影的几何图形,要求在图形下方标出是正等侧、还是正二侧投影图形。2、在屏幕上绘制出一个长方体或简单几何体的三视图投影图形,要求在图形下方标出是什么投影图形。3、在屏幕上绘制出一个长方体或简单几何体的透视投影图形。三、关键算法及实现原理1、 二维屏幕表示三维立体图的关键屏幕是一个二维的平面空间,要在它上做出三维的图形,就必须把三维的空间图形通过一个投影变换变为二维的图形,即投影变换把三维坐标点(x,y,z)变为x,0,z。2、 投影变换的类型3、 按下述步骤编写绘制三维图形的函数 在草稿纸上给出草图,并确定各顶点的序号和相应的顶点坐标值,建立顶点表和连边表。 在程序中定义三个数组,用于存放顶点的x,y,z的坐标值。 实施对立方体进行相应的投影变换,即对顶点矩阵与变换矩阵相乘,得到一个新的顶点矩阵。 用新顶点表的坐标值,注意些时只有x坐标和z坐标,y坐标已在投影中消掉,按边表的连线规则,用line函数在顶点之间两两连线。3、将每一个几何变换编写成一个函数,在主程序中进行坐标变换时,直接调用相应的函数即可;变换后调用绘图函数用不同颜色在屏幕上绘出变换后的图形。四、程序调试中的问题用matlab绘制二维与三维曲线和三维曲面的过程中,不能灵活使用一些常用的绘图函数如mesh,surf等。五、程序运行结果或数据x-50.15;y-40.14;x,ymeshgridx,y;z0.5*x.3y.2;subplot2,2,1;meshx,y,z;title三维网格曲面subplot2,2,2;surfx,y,z;title三维曲面subplot2,2,3;meshcx,y,z;title三维网格曲面带有等值线subplot2,2,4;surfcx,y,z;title三维曲面带有等值线六、实验收获及体会通过这次实验使我对二维和三维图形的绘制,使我更加了解了图形的绘制过程,提高了动手能力,使我能够在以后解决其它问题时使用matlab作图更加熟练。参考源程序可附页includegraphics.hincludeconio.hincludedos.hincludemath.hdouble xmax639.0, ymax399.0;double f44,xx,yy,zz,dd;int scxdouble xj int x; xint-xjxmax/2; returnx;int scydouble yj int y; yymax-intyjymax/2; returny;void tv f001.0;f010.0;f020.0;f030.0; f100.0;f110.0;f120.0;f130.0; f200.0;f210.0; f221.0;f230.0; f300.0;f310.0; f321.0;f331.0;void th int n f001.0;f010.0;f020.0;f030.0; f100.0;f110.0;f12-1.0;f130.0; f200.0;f210.0; f220.0;f230.0; f300.0;f310.0; f32-n;f331.0;void tw int d f000.0;f010.0;f020.0;f030.0; f10-1.0;f110.0;f120.0;f130.0; f200.0;f210.0; f221.0;f230.0; f30-d;f310.0; f320.0;f331.0;void teq f000.707;f010.0;f02-0.408;f030.0; f10-0.707;f110.0;f12-0.408;f130.0; f200.0;f210.0; f220.816;f230.0; f300.0;f310.0; f320.0;f331.0;void tt1yqdouble l,double n,double m,double q f001.0;f010.0;f020.0;f030.0; f100.0;f110.0;f120.0;f13q; f200.0;f210.0; f221.0;f230.0; f30l;f310.0; f32n;f33m*q1;void axis linescx0.0,scyymax/2,scx0,scy0.0; linescx0,scy0,scxxmax/2,scy-ymax/2-19; linescx0,scy0,scx-xmax/2,scy-ymax/2-19; outtextxyscx0,ymax/210,O; outtextxyscx-xmax/210,scy-ymax/2-10,Y; outtextxyscxxmax/2,scy-ymax/2-10,X; outtextxyscx03,scyymax/26,Z;double affine3xdouble x,double y,double z,double d xxx*f00y*f10z*f20d*f30; returnxx;double affine3ydouble x,double y,double z,double d yyx*f01y*f11z*f21d*f31; returnyy;double affine3zdouble x,double y,double z,double d zzx*f02y*f12z*f22d*f32; returnzz;double affine3ddouble x,double y,double z,double d ddx*f03y*f13z*f23d*f33; returndd;void drawx1,z1double x18,z18; linescxx10,scyz10,scxx11,scyz11; linescxx10,scyz10,scxx13,scyz13; linescxx11,scyz11,scxx12,scyz12; linescxx12,scyz12,scxx13,scyz13; linescxx12,scyz12,scxx11,scyz11; linescxx13,scyz13,scxx14,scyz14; linescxx12,scyz12,scxx17,scyz17; linescxx11,scyz11,scxx16,scyz16; linescxx14,scyz14,scxx17,scyz17; linescxx14,scyz14,scxx15,scyz15; linescxx16,scyz16,scxx17,scyz17; linescxx16,scyz16,scxx15,scyz15; linescxx15,scyz15,scxx10,scyz10;void mainint driveDETECT,mode; static double x060.0,0.0,0.0,175.0,175.0,60.0,0.0,0.0; static double y075.0,75.0,75.0,75.0,0.0,0.0,0.0,0.0; static double z0125.0,125.0,0.0,0.0,0.0,125.0,125.0,0.0; static double x18,y18,z18,dd8; static double x28,y28,z28; static double x38,y38,z38; int i; double x,xx,yy,zz,zt; initgraphdrive,mode,ctc3bgi; axis; teq; fori0;i7;i x1iaffine3xx0i,y0i,z0i,1.0; y1iaffine3yx0i,y0i,z0i,1.0; z1iaffine3zx0i,y0i,z0i,1.0; setcolorRED; drawx1,z1; ztscyz1010; outtextxyscxx10,zt,tequ ; getch; tw20; fori0;i7;i x1iaffine3xx0i,y0i,z0i,1.0; y1iaffine3yx0i,y0i,z0i,1.0; z1iaffine3zx0i,y0i,z0i,1.0; setcolorBLUE; drawx1,z1; ztscyz1010; outtextxyscxx10,zt,tw ; getch; th20; fori0;i7;i x1iaffine3xx0i,y0i,z0i,1.0; y1iaffine3yx0i,y0i,z0i,1.0; z1iaffine3zx0i,y0i,z0i,1.0; setcolorBLUE; drawx1,z1; ztscyz1010; outtextxyscxx10,zt,th ; getch; tv; fori0;i7;i x1iaffine3xx0i,y0i,z0i,1.0; y1iaffine3yx0i,y0i,z0i,1.0; z1iaffine3zx0i,y0i,z0i,1.0; setcolorBLUE; drawx1,z1; ztscyz1010; outtextxyscxx10,zt,tv ; getch;tt1yq10.0,-20.0,-30.0,-0.005; fori0;i7;i x1iaffine3xx0i,y0i,z0i,1.0; y1iaffine3yx0i,y0i,z0i,1.0; z1iaffine3zx0i,y0i,z0i,1.0; ddiaffine3dx0i,y0i,z0i,1.0; x1ix1i/ddi-250; y1iy1i/ddi; z1iz1i/ddi; setcolorGREEN; drawx1,z1; getch; closegraph;

二维图形编辑系统c语言实现,实验四01二维图形的几何变换.doc-资源下载在线文库www.lddoc.cn...相关推荐

  1. c语言答案-贾宗璞 许合利,C语言习题答案贾宗璞许合利较全-.doc-资源下载在线文库www.lddoc.cn...

    C语言习题答案 贾宗璞 许合利 较全-.doc 1参考答案习题一1. 选择题CBACD2. 填空题1) main2) main3) 有穷性.确定性.有效性.0 个到多个输入.1 个到多个输出4) 顺序 ...

  2. c语言程序阅读题库,C语言程序设计-阅读程序题库及答案.doc-资源下载在线文库www.lddoc.cn...

    C语言程序设计-------阅读程序题库及答案.doc 阅读程序题 2 1 以下程序的输出结果是 main D float a a 1 100000000 printf g a A 0 00000e ...

  3. 菱形数阵c语言,二年级奥数数阵习题及参考答案.doc-资源下载在线文库www.lddoc.cn...

    二年级 奥数 数阵习题及参考答案.doc 2016春季数学集训二队每周习题3参考答案星期一1.将自然数1,2,3,按下表的规律排列.问55应该出现在哪个字母所在的一列如果1.2.3.4所在的那行称作第 ...

  4. 用函数求C15的值C语言,南开19春学期(1503、1509、1603、1609、1703)C语言程序设计在线作业-1辅导资料.docx-资源下载在线文库www.lddoc.cn...

    南开19春学期(1503.1509.1603.1609.1703)<C语言程序设计>在线作业-1辅导资料.docx 南开19春学期(1503.1509.1603.1609.1703)C语言 ...

  5. 天大18年c语言离线作业,天大18秋C语言程序设计在线作业一辅导资料.docx-资源下载在线文库www.lddoc.cn...

    天大18秋<C语言程序设计>在线作业一辅导资料.docx 天大 18 秋C 语言程序设计 在线作业一1.C 2.D 3.D 4.D 5.D 一.单选题共 40 题,100 分1.设有int ...

  6. c语言成颖pdf,程序设计语言开篇导学.ppt-资源下载在线文库www.lddoc.cn

    <程序设计语言>开篇导学.ppt 程序设计语言开篇导学,成颖 教授 博士生导师 南京大学信息管理学院,1.引言,C语言程序设计是计算机相关学科中的一门基础课,也是培养结构化程序设计思想以及 ...

  7. 2020华师c语言程序客观题作业和答案,18秋华师C语言程序设计B在线作业-3辅导资料.docx-资源下载在线文库www.lddoc.cn...

    18秋华师<C语言程序设计B>在线作业-3辅导资料.docx 18秋华师C语言程序设计B在线作业-31.C 2.D 3.D 4.D 5.A 一.单选题共50题,100分1.以下关于运算符优 ...

  8. 计算机基础c语言试题,计算机应用基础C语言测试题.doc-资源下载在线文库www.lddoc.cn...

    <计算机应用基础C语言>测试题.doc 计算机应用基础C语言测试题一选择题(每空2分,共70分).从下列每题提供的A.B.C.D供选择的答案中,选出一个正确的答案,填在对应的( )内.1在 ...

  9. 在c语言中用来创建主菜单的对象是,百一测评C语言试题.docx-资源下载在线文库www.lddoc.cn...

    百一测评--C语言试题.docx 职业技能题库在线云笔试平台httpwww.101test.Com试卷名称 C语言试题试卷描述在线考试.招聘笔试.微信考试试卷链接 单项选择题每题分值4分 是否题目乱序 ...

  10. A13在c语言中是合法变量吗,C语言中局部变量和全局变量等在内存中的存放位置.doc-资源下载在线文库www.lddoc.cn...

    C语言中局部变量和全局变量_等在内存中的存放位置.doc C 语言中局部变量和全局变量 变量的存储类别static,extern,auto,register 8.8 局部变量和全局变量在讨论函数的形参 ...

最新文章

  1. ClassLoader(二)- 加载过程
  2. python中可选参数的特征_sklearn特征选择方法及参数
  3. 分式求二阶导数_近10年高考数学“导数大题”分析,附2021备考建议
  4. linux-----强大的find
  5. 一定质量的封闭气体被压缩后_多晶硅氯氢化装置补充氢隔膜压缩机十字头铜套磨损原因分析与改善探讨...
  6. Topcoder SRM 656 (Div.1) 250 RandomPancakeStack - 概率+记忆化搜索
  7. Calendar打印日历
  8. Colab+Google使用教程
  9. 摄影曝光基础——光圈、快门、ISO
  10. Scene Graph Generation by Iterative Message Passing解读
  11. 一个简单T9输入法的实现
  12. git学习(一)初始化
  13. MOOC网课爬虫逆向(一)
  14. RTI1.3时间管理支持的两种模式
  15. 【计算机网络】数据链路层的差错控制 - 循环冗余校验(CRC)
  16. javaWeb登录验证码第一次验证失败,刷新验证码后验证成功问题
  17. React 学习笔记
  18. 数据仓库ods层是啥意思_一文读懂大数据仓库建设
  19. 酒店管理者必备的九大管理知识
  20. 关于超级计算机的英语作文,关于无人驾驶的英文作文

热门文章

  1. Flink web ui面板功能简述
  2. 10 种跨域解决方案(附终极方案)
  3. 机器学习之MATLAB代码--基于VMD与SSA优化lssvm的功率预测(多变量)(七)
  4. AngularJs checkbox绑定
  5. windows 编程的学习次序
  6. FlinkSQL字段血缘解决方案及源码
  7. Android Notes | 集成推送那点事(友盟/Mob(Flutter)/FCM)
  8. 生成带二维码图片并通过微信分享
  9. 搜索关键字拼音智能提示实现
  10. 2020-07-28 activeMq 两种模式的测试