直线软光栅算法之DDA(Digital Differential Analyzer)直线微分法

1.关于光栅化

光栅化是指将图形或图像转换为由像素或点阵组成的二维网格的过程。在计算机图形学中,光栅化是将矢量图形或几何图形(如直线、多边形等)转换为屏幕上的像素表示的过程。

在图形渲染过程中,光栅化是一个重要的步骤。当计算机系统接收到要显示的图形或图像时,需要将其转换为屏幕上的像素来进行显示。这个过程涉及到将图形对象的几何信息转换为像素的位置和颜色值,以便最终在屏幕上呈现出来。

2.关于DDA算法(只讨论直线斜率 k>=0并且直线两端点x不相等的情况)

一种根据直线微分算法生成光栅化离散点的过程
给定直线两端坐标P0(x0, y0), P1(x1, y1),可以得到直线微分方程
dy / dx = (y1 - y0) / (x1 - x0) = k
在知道直线起点坐标的情况下,就可以得到构成直线一系列点坐标
假定当前点坐标Pi(0, 0), 那么下一个点的像素坐标就是Pi1(1, 0 + k),
每画一个点x累加1,y累加k,但是k是小数,还需要对y进行取整
用伪代码写出来就是

float y = pos1_.y();
int x = pos1_.x();
do {
	draw_point(QPoint(x, (int)roundf(y)));
	x += 1;
	y += k;
} while (x <= pos2_.x());

如果给定两点P0(0, 0),P1(8, 5)就可以绘制出如下图形

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值