- 1、本文档共27页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机图形学实教程
计算机图形学实验教程
信息科学与工程系
实验名称
实验一 直线生成算法
实验二 圆的生成算法
实验三 椭圆的生成算法
实验四 多边形填充算法
实验五 二维图形的几何变换
实验六 常用曲面和曲线的生成算法
实验七 常用消隐算法
实验八 曲线和曲面算法的应用
实验九 真实感图形生成
实验一、直线生成算法
数值微分法 (DDA画线算法)
(DDA-Digital Differential Analyzer
(设直线两端点为:P1(x1,y1)及 P0(x0,y0),
(则直线斜率为
则直线方程为
当 k1 , x每增加1,y 最多增加1(或增加小于1)。
当 k1 ,y每增加1,x 最多增加1 (或增加小于1) 。
DDA算法:
复杂度:加法+取整
优点:避免了y=kx+b 方程中的浮点乘法,比直接用点斜式画线快
缺点:需浮点数加法及取整运算,不利于硬件实现.
上机实验一
题目:编写用DDA画线算法画线算法的程序。
要求:
1。写出DDA画线算法的基本思想和公式。并叙述其优缺点。
2。编写用DDA画线算法的程序。并比较其结果。
3。写出上机报告
中点画线法
(设0k1
中点M在直线下方,下一点取p1点
中点M在直线上方取p2点
中点算法: 用整数加法及比较代替了DDA中的浮点数加法及取整运算,效率大大提高.
直线方程: F(x,y)=ax+by+c=0
直线将二维空间划分为三个区域:
如F(x,y)=0, 则(x,y) 在直线上
如F(x,y)0, 则(x,y)在直线下方
如F(x,y)0, 则(x,y)在直线上方
条件: a= -(y1-y0)
b=(x1-x0)
c= -B(x1-x0)
设(x0,y0)和(x1,y1)分别为直线的两端点
Dy=y1-y0, Dx=x1-x0
由 y=kx+B 及k=Dy/Dx, k∈[0,1]
得:
y=(Dy/ Dx).x+B
Dy.x-Dxy+Dx.B=0
则直线一般方程为:
F(x,y)=Dy.x- Dx.y+B. Dx=0
a= Dy, b= -Dx,c= B.Dx
设 (x,y) 为直线上一点,将点P=(x,y+?m)代入直线 方程:
F(x,y+m)= Dy.x-Dx.(y+m)+B.Dx= (Dy.x-Dx.y+B. Dx)-Dx.m =F(x,y)-Dx.m
= -Dx.m
因为Dx0
if m 0(即P点在直线上方) then F(x,y+yb)0;
if m0 (即P点在直线下方) then F(x,y+yb)0;
定义决策变量:
d= F(xi+1,yi+0.5)=a(xi+1)+b(yi+0.5)+c
如果 d0,则M在理想直线上方,选正右方E点
如果 d0,则M在理想直线下方,选右上方NE点
如果 d=0,则M在理想直线上,选E/NE点
由于d是xi和yi的线性函数k?[0,1],可采用增量计算数提高运算效率.
1.如由pi点确定在是正右方E点(d0).,则新的中点M仅在x方向加1,新的d值为:
dnew=F(xi+2,yi+0.5)=a(xi+2)+b(yi+0.5)+c
而 dold=F(xi+1,yi+0.5)=a(xi+1)+b(yi+0.5)+c
dnew=dold+a= dold-dy
2.如由pi点确定是右上方NE点(d0),则新的中点M在x和y方向都增加1,新的d值为
dnew=F(xi+2,yi+1.5)=a(xi+2)+b(yi+1.5)+c
而 dold=F(xi+1,yi+0.5)=a(xi+1)+b(yi+0.5)+c
dnew=dold+a+b= dold-dy+dx
在每一步中,根据前一次第二迭中计算出的d值 的符号,在正右方和右上方的两个点中进行选择.
d的初始值:
d0=F(x0+1,y0+0.5)=F(x0,y0)+a+b/2=a+b/2=-dy+dx/2
F(x0,y0)=0 (x0,y0) 在直线上
为了消除d的分数,重新定义 F(x,y)=2(ax+by+c)
则每一步需要计算的dnew 是简单的整数加法
dy=y1-y0 dx=x1-x0
d0=-2dy+dx
dnew=dold-2*dy 当 dold=0
dnew=dold-2(dy-dx) 当dold0
Bresenham画线算法
与DDA算法相似, Bresenham画线算法也要在每列象素中找到与
您可能关注的文档
最近下载
- GB_T 42588-2023系统与软件工程 功能规模测量NESMA方法.docx VIP
- 祝由十三科 收藏珍本.pdf
- 高级英语第三课Ships-in-the-Desert名师优质课获奖市赛课一等奖课件.ppt VIP
- (新教材)人教版高中物理必修1第三章第5节《共点力的平衡》优质说课稿.doc
- 新冀教版数学一年级上册全册课件(2024年秋新教材).pptx
- 《化妆品配方与制备技术》课件——第10章 唇部美容化妆品.pptx VIP
- JBT 10491-2022 额定电压 450750V 及以下交联聚烯烃绝缘电线和电缆.docx
- 《化妆品配方与制备技术》课件——第1章 护肤化妆品.pptx VIP
- 山东服装职业学院综合类招聘考试真题.pdf
- 合伙经营分公司协议书(7篇).docx
文档评论(0)