计算机图形学全代码,计算机图形学常用算法及代码大全-20210409064442.pdf-原创力文档...

.

2.1.1 生成直线的 DDA算法

数值微分法即 DDA法 (Digital Differential Analyzer) ,是一种基于直线的微分方程来生

成直线的方法。

一、直线 DDA算法描述:

设 (x 1 ,y 1) 和 (x 2 ,y2 ) 分别为所求直线的起点和终点坐标,由直线的微分方程得

= m = 直线的斜率 (2 - 1)

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

x i+1 =x i + x (2 -2)

i+1 i △ i △ ·

y =y + y=y + x m (2 -3)

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

y i+1 =y i + y (2 -4)

i+1 i △ i △

x =x + x=x + y/m (2 -5)

式 (2 -2) 至(2 -5) 是递推的。

二、直线 DDA算法思想:

选定 x2 -x 1 和 y 2 -y 1 中较大者作为步进方向 ( 假设 x 2 -x 1 较大 ) ,取该方向上的增量为一个象

△ △ △ ·

素单位 ( x=1) ,然后利用式 (2 - 1) 计算另一个方向的增量 ( y= x m=m)。通过递推公式 (2 -2) 至

(2 - 5) ,把每次计算出的 (x i+1 ,yi+1 ) 经取整后送到显示器输出,则得到扫描转换后的直线。

之所以取 x 2 -x 1 和 y 2 -y 1 中较大者作为步进方向,是考虑沿着线段分布的象素应均匀,这在

下图中可看出。

Δ Δ

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

三、直线 DDA算法实现:

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

2 、已知画线的颜色: color

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

dy=y2 -y1

4 、求出两个方向最大变化量的绝对值:

steps=max(|dx| ,|dy|)

5 、计算两个方向的增量 ( 考虑了生成方向 ) :

xin=dx/steps

Word 资料

.

yin=dy/steps

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

7

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值