云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 计算机图形学实验报告2

计算机图形学实验报告2

  • 62 次阅读
  • 3 次下载
  • 2025/6/14 11:34:18

计算机图形学实验报告

实验名称 直线、圆弧及曲线的生成算法 评分 实验日期 2012 年 5 月 15 日 指导教师 刘长松 姓名 专业班级 学号

一、实验目的

1、几种直线生成算法的比较,特别掌握用Bresenham直线生成算法。 2、几种圆弧生成算法的比较,掌握Bresenham圆弧生成算法。 3、掌握用像素点法直接生成其它曲线的方法。

二、实验要求

1、用不同的生成算法在屏幕上绘制出直线的图形,对不同的算法可设置不同的线形或颜色表示区别。

2、用Bresenham生成算法在屏幕上绘制出圆弧的图形,用动画的方式表演图形的生成。

三、关键算法及实现原理

1、有关直线生成算法有:DDA(数值微分)直线算法、逐点比较法、直线Bresenham生成算法。

直线Bresenham生成算法思想如下(第一象限,且斜率k<1的情况 图2-1 a

中的1a):

1) 画点(x1,y1),dx=x2-x1,dy=y2-y1,计算误差初值P1=2dy-dx,i=1; 2) 求直线下一点位置 xi+1=xi+1 如果Pi>0,则yi+1=yi+1,否则 yi+1=yi; 3) 画点(xi+1,yi+1);

4) 求下一个误差Pi+1点,如果Pi>0,则Pi+1=Pi+2dy-2dx,否则 Pi+1=Pi+2dy;

5) i=i+1,如果i

3)只做整数加减运算和乘2运算,而乘2运算可以用移位操作实现。 Bresenham算法的速度很快,并适于用硬件实现。 对于图2-1 a中的2a,只需将xi+1=xi+1改为xi+1=xi-1。

对于图2-1 a中的1b,斜率k>1的情况,可交换变量x和y,y每次长1个单位。对Pi进行判断,xi+1=xi或xi+1=xi+1。

2、有关圆弧生成算法有:逐点比较法、DDA(数值微分)直线算法、圆的Bresenham生成算法。

圆的生成算法一般将圆划分为8等份,只需计算(900,450)的八分之一圆弧,其它用对称法求得(参见图2-1 b)。

Bresenham生成算法思想如下(第一象限,且斜率k<1的情况): 1) 2)

计算误差初值P1=3-2r,i=1,画点(0,r);

求下一个光栅点位置 xi+1=xi+1 如果Pi<0,则yi+1=yi,否则 yi+1=yi-1;

3)

画点(xi+1,yi+1);

4) 求下一个误差Pi+1点,如果Pi<0,则Pi+1=Pi+2xi+6,否则 Pi+1=Pi+4(xi-yi)+10; 5) i=i+1,如果x=y则结束操作,否则转步骤2。

(-y,x)2b2a3ao3b4b1b(x ,y )11(x ,y )22(y,x)1b1a1a4a(-x,y)2a(-x,-y)3a2b(x,y)o3b4b4a(x,-y)(-y,-x)图2-1 a 直线方向的8个象限(y,-x)图2-1 b 圆心在(0,0)点圆周生成时的对称变换 圆Bresenham算法的算式简单,只需做加减法和乘4运算 3.对屏幕布局的考虑

适当选取坐标,将屏幕分成几个区域性,在每个区域内实现一种算法,生成

一个图形。也可用delay实现延时实现动画。

四、程序运行结果或数据

//输入信息:

//运行结果:

五、实验收获及体会

通过这个实验,掌握用Bresenham直线生成算法跟Bresenham圆弧生成算法,

还掌握用像素点法直接生成其它曲线的方法。这个实验代码不是很繁琐,主要是通过算法来实现图像,在实验过程中由于对Bresenham直线生成算法和Bresenham圆弧生成算法掌握得不是很透彻所以遇到过一些麻烦,不过也都在老师的帮助下解决了一些麻烦,顺利完成了实验。

六、参考源程序(可附页)

//源代码: #include #include #include

int main(void)

{ }

int x1,y1,x2,y2,xi,yi; int dp,dy,dx;

int gdriver,gmode;

initgraph(&gdriver,&gmode,\ while(true) { }

closegraph(); return 0;

//输入直线的两个点

printf(\第一象限内):\\n\scanf(\if(x1 < 0 || y1 < 0 || x2 < 0 || y2 < 0) break; if(x2 < x1) {

int temp = x2; x2 = x1; x1 = temp; temp = y2; y2 = y1; y1 = temp;

}

dy = y2 - y1; dx = x2 - x1;

dp = dx - 2 * dy;

for(yi=y1,xi=x1; xi <= x2; ++xi) { putpixel(xi,yi,RGB(255,0,0)); }

if(dp < 0) { } else

dp = dp - 2 * dy; dp = dp + 2* dx - 2 * dy; ++yi;

搜索更多关于: 计算机图形学实验报告2 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

计算机图形学实验报告 实验名称 直线、圆弧及曲线的生成算法 评分 实验日期 2012 年 5 月 15 日 指导教师 刘长松 姓名 专业班级 学号 一、实验目的 1、几种直线生成算法的比较,特别掌握用Bresenham直线生成算法。 2、几种圆弧生成算法的比较,掌握Bresenham圆弧生成算法。 3、掌握用像素点法直接生成其它曲线的方法。 二、实验要求 1、用不同的生成算法在屏幕上绘制

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com