计算机图形学实验

计算机图形学实验
⽂章⽬录
实验介绍
⼤⼆学期的计算机图形学课程,内容包含扫描转换算法裁剪算法,图形变换,三维图形投影和消隐,曲线和曲⾯;从完成情况来看虽算不上⼗分出⾊,但也花了很多时间和精⼒,代码必然存在⼀些冗余、不⾜和待改进之处,故公开和⼤家交流和参考
软件环境
VC++ 6.0
easyX库
实验内容
实验⼀ —— 扫描转换算法
(●’◡’●)效果展⽰
该边实验题1-1:绘制任意斜率的直线
实验题1-3:⽤中点画圆法画圆
实验题1-4:中点画圆法画椭圆
(●’◡’●)效果展⽰
实验题1-5:中点画圆法画圆弧
实验题1-7:具有宽度的直线
实验⼀中的代码并未进⾏优化,从截图可以看出,UI界⾯不够友好(毕竟刚学习这门课),操作起来⽐后⾯的实验更复杂实验⼆ —— 裁剪算法
(●’◡’●)效果展⽰
实验题2-1:Cohen-Sutherland算法实现直线段裁剪
实验题2-2:Liang-Barsky算法实现直线段裁剪
实验题2-5:综合算法实现多边形裁剪(⾃创)
多边形裁剪:该算法实现了对任意多边形的裁剪,程序中设置多边形的顶点为固定的9个。算法上的实现分为三步:
第⼀,先画裁剪框内的线段:⽤直线段裁剪算法对多边形进⾏裁剪,最后留下在裁剪框内的线段
第⼆,画裁剪框四个顶点旁的线。先判断裁剪框的四个顶点是否在多边形内,具体判断⽅法是:过该顶点⼀条射线与多边形的每条线段相交,如果交点有奇数个,则在多边形内,反之则在多边形外。如果顶点在多边形内,那么它邻接的在裁剪框边上的点与它之间⼀定有连线
第三,画裁剪框四条边上与顶点⽆交点的线段。取出在多边形外的四边形顶点,从这⼀点开始,往邻接的两条边⽅向画,得到该边和多边形线段的交点,然后画第奇数个到下⼀个点上的线段,若有奇数个点,则略去最后⼀个。例如:假设左下⾓的点在多边形外,则从该点向上和向右画,当向上画时,假如有5个交点(y1,y2,y3,y4,y5),则画线段(y1,y2),(y3,y4),y5则省略
实验三 —— 图形变换
(●’◡’●)效果展⽰
实验题3-2:实现多步复合变换,并显⽰动画效果
实验题3-3:任意直线的对称变换
不⾜之处:各种⼆维变换在数学上理论上都能得到结果,但实现在程序⾥难免有舍⼊,会导致⼀些四边形放⼤倍数时,四边形的同⼀边可能有错位
实验四 —— 三维图形投影和消隐
(●’◡’●)效果展⽰
实验题4-4和4-5:完成图形绕某⼀坐标轴旋转(包括三视图和正等轴测图)
为了完成正⼗⼆⾯体的旋转,作者查了很多资料,最终得以实现,是⼀件很有趣的事情,如下是源码中坐标对应的点,如有需要可以参考
不⾜之处:由于作者采⽤的消隐算法是外法线消隐算法,此算法只对凸多⾯体有效,这是该消隐算法的局限;且该消隐算法是按照每个⾯的边数都相等的多⾯体来具体实现的,于是对于由三⾓形和四边形等组成的混合型多⾯体⽆法在原有算法中实现,若有需要还得进⼀步修改
实验五 —— 曲线和曲⾯
(●’◡’●)效果展⽰
实验题5-2绘制Bezier曲线
实验题5-4绘制B样条曲⾯
存在问题:Bezier曲线的代码中对点采⽤递归⽅式计算,当增加⼀个点时,需要对之前已经计算过的低阶Bezier函数重新进⾏计算,使得空间消耗和时间消耗增加(当时并未进⾏优化)。所以当点越来越多时,程序运⾏速度会⼤⼤降低,甚⾄可能程序崩溃(当有10⼏个点时)
实验源码
下载⽅式⼀
本实验部分内容可通过资源下载,包含,,等
下载⽅式⼆
通过GitHub免费下载完整源码,

本文发布于:2024-09-21 18:53:33,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/377846.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:算法   裁剪   多边形   实现
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议