计算机图形学直线线型实验报告,计算机图形学实验报告 直线的画法(DDA Bresenham算法)...

直线的DDA、Bresenham算法画直线的实验报告

一、实验目的

学会用DDA法,中点法,Bresenham法这三种思想画直线,同时,对画直线的操作有一定的了解。

二、实验原理及内容

1. DDA法的基本思想如下:

已知过端点P0(x0,y0) , P1(x1,y1)的直线段L:y=kx+b ,直线斜率为k=(y1-y0)/x1-x0 ,

从x的左端点x0开始,向x右端点步进。步长=1(个象素),计算相应的y坐标y=kx+b; 取象素点(x, round(y))作为当前点的坐标。

3. Bresenham法的基本思想如下:

过各行各列象素中心构造一组虚拟网格线。按直线从起点到终点的顺序计算直线与 各垂直网格线的交点,然后根据误差项的符号确定该列象素中与此交点最近的象素。 设直线方程为: y 1 yi k(xi 1 xi) yi k i

其中k=dy/dx。 因为直线的起始点在象素中心,所以误差项d的初值d0=0。

X下标每增加1,d的值相应递增直线的斜率值k,即d=d+k。一旦d≥1,

就把它减去1,这样保证d在0、1之间。

1当d≥0.5时,最接近于当前象素的右上方象素( x i 1 , y i )

而当d<0.5时,更接近于右方象素(x i 1, y i )。

为方便计算,令e=d-0.5,e的初值为-0.5,增量为k。

x i 1 , y i 1)当e≥0时,取当前象素(xi,yi)的右上方象素(;

而当e<0时,更接近于右方象素(x , y )。 i 1i可以改用整数以避免除法。

4.两方法的程序编写及运行结果截图如下:

void CHTView::OnDda()

2-163-jpg_6_0_______-243-0-222-243.jpg

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值