DDA算法画直线+源代码

本文介绍了DDA算法用于在图形界面中画直线的方法,详细阐述了算法原理,并分别讨论了斜率为0、小于1和大于1时的直线扫描过程。提供有相应的源代码示例,适用于MFC应用。
摘要由CSDN通过智能技术生成

DDA算法画直线+源代码

DDA算法画直线+源代码


一、DDA算法


算法原理: 已知过端点(x0,y0),(x1,y1)的直线段L:y=kx+b,直线斜率为 k=y1-y0/x1-x0 从x的左端点开始,向x右端点步进,步长=1(个象素), yi+1 = yi+k 。
即:当x每递增1,y递增k(即直线斜率) 。



二、斜率为0时的直线扫描


1.垂直直线


代码如下(示例):

DDA(CDC *pDC, CPoint p1, CPoint p2,COLORREF color){
   
	CPoint start = p1, end=p2;
	if(start.x == end.x) {
   
		if(start.y > end.y){
   
			start = p2;
			end = p1;
		}
		while(start.y <= end.y){
   
			pDC->SetPixelV(start,color);
			start.y++;
		}
	}
}

线段的两点为(100,300)和(100,600)



2.水平直线


代码如下(示例):
DDA(CDC *pDC, CPoint p1, CPoint p2,COLORREF color){
   
	CPoint start = p1, end=p2;
	if(start.y == end.y) {
   
		if(start.x > end.x){
   
			start = p2;
			end = p1;
		}
		while(start.x <= end.x){
   
			pDC->SetPixelV(start,color);
			sta
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值