【Computer Graphics】1.直线生成算法(DDA 算法)

本文介绍了计算机图形学中的直线扫描转换,重点讲解了数值微分法(DDA)算法,包括算法原理、步骤以及其实战效果。DDA算法通过计算两点坐标确定直线,适用于|k|≤1的情况,对于|k|>1的情况则需要调整增量。文章还提到DDA算法在硬件实现上的不足,即需要浮点运算和频繁的四舍五入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

本人是计算机图形学的初学者,虽然说大学上了计算机图形学的课,但是只是半斤八两的程度,有的地方没懂也就算了,不会去思考,现在重新学一遍,有写的不好的地方,希望各路大神指教,本人一定改正。。

好了,让我们先来了解一些概念

1.图形的扫描转换

图形的扫描转换:确定一个像素集合,用于显示一个图形的过程

(ps:个人理解是图形变成一个个的像素点)

2.图形显示前需要做的工作:扫描转换 +裁剪
裁剪也就是将不在显示范围的部分删除
目前有两种方法:

①先裁剪,再扫描转换:最常用的方法,节约计算时间
②先扫描转换,再裁剪:这样比较耗时间,毕竟把不是范围内的也进行了扫描转换计算。。但是算法简单

3.直线的扫描转换:确定最佳逼近于该直线的一组像素,并且按扫描线顺序,对这些像素进行写操作

常用的直线扫描转换有:
① 数值微分法(DDA)
② 中点画线算法
③ Bresenham算法

本篇着重讲 数值微分法(DDA)

众所周知,两点确定一条直线,我们假设这两点的坐标都为整数P0(x0,y0) P1(x1,y1)

那么过这两点的直线的表达式可以为: y =kx+b
斜率 k = (y1 - y0)/(x1 - x0)
令 x = x0; x → x1变化
x =x+stepx;
通过y = kx+b计算y的值;
∴ 逼近直线的点为(x,round(y)) round在这的作用是四舍五入

我们设当前已经确定的点的坐标为(Xi,Yi),下一个点的坐标为(Xi+1,Yi+1) ,i和i+1为下标
那么由 y = kx+b得 Yi+1 = kXi+1 +b;

我们当前的点(Xi,Yi)已经在直线上了,所以Yi = kXi+b,所以我们可以转化:
Yi&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值