matlab dda算法,dda直线算法生成.pdf

dda直线算法生成

数学与计算科学学院

实 验 报 告

实验项目名称 线的生产

所属课程名称 计算机图形学

实 验 类 型 验证型

实 验 日 期 2015—4—13

班 级 信计 12-2

学 号 201253100212

姓 名 黄全林

成 绩

一、实验概述:

【实验目的】

1、理解直线生成的基本算法。如:直线 DDA 算法、直线 Breseham 等;

2、掌握直线生成的基本程序实现。

【实验原理】

直线生的 DDA 算法基本原理

1. 直线 DDA 的描述

设(x1,y1)和(x2,y2)分别为所求直线的起点和终点坐标,由直线的微分方程

dyy2? y 1 ? y

? ? ?m ? 直线斜率 (1)

dx x2? x 1 ? x

可通过计算由 x 方向的增量△x 引起 y 的改变来生成直线:

?xi?1 ? x i ? ? x

? (2)

?yi?1 ? y i ? ? x ? y i ? ? xm

也可以通过向 y 方向实现

?yi?1 ? y i ? ? y

? (3)

?xi?1 ? x i ? ? x ? x i ? ? ym

通过(2)式递推就能实现直线的绘制。

?yi?1 ? y i ? ? y

?

?xi?1 ? x i ? ? x ? x i ? ? ym

2. 直线 DDA 算法思想

x x y y x x

选定 2? 1 和 2? 1 中较大者作为步进方向(假设 2? 1 较大),取该方向上的

增量为一个象素单位(△x=1),然后利用(1)式计算另一个方向的增量(△y=△x·m=m)。

第 1 页 共 9 页

(x , y )

通过递推公式(2),把每次计算出的 i?1 i ? 1 经取整后送到显示器输出,则得到扫

描转换后的直线。

之所以取 x2? x 1 和 y2? y 1 中较大者作为步进方向,是考虑沿着线段分布的象素

应均匀,这在下图中可看出。

另外,算法实现中还应注意直线???生成方向,以决定Δx 及Δy 是取正值还是负

值。

3. 直线 DDA 算法实现

1、已知直线的两端点坐标:(x1,y1),(x2,y2);

2、已知画线的颜色:color;

3、计算两个方向的变化量:dx=x2-x1

dy=y2-y1

4、求出两个方向最大变化量的绝对值:steps=max(|dx|,|dy|);

5、计算两个方向的增量(考虑了生成方向):xin=dx/steps

yin=dy/steps;

6、设置初始象素坐标:x=x1,y=y1;

7、用循环实现直线的绘制:for(i=1;i<=steps;i++) ;

{ putpixel(x,y,color);/*在(x,y)处,以 color 色画点*/

第 2 页 共

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值