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++;
}
}
}
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