DDA_为微分绘制直线算法

本文介绍了DDA(数字微分分析器)算法用于绘制直线的过程。通过计算斜率增量来确定像素点的位置,实现从起点到终点的精确绘制。适用于计算机图形学中的基本绘图操作。

DDA_为微分绘制直线算法

  以步进坐标轴部长=1像素为单位,计算y=kx + b,绘制像素点(x, round(y)).

  即步进坐标增长1, 另一坐标增长K或者1/k。

  程序如下:

 

 1 //数值微分算法DDA
 2 void CCGProjectWorkView::DDA_Line(const int startPos[], const int endPos[], const float lineColor[])
 3 {
 4     glPushMatrix();
 5     //绘制直线
 6     long deltX, deltY, maxStep;
 7     deltX = endPos[0] - startPos[0];
 8     deltY = endPos[1] - startPos[1];
 9     maxStep = max(abs(deltX), abs(deltY));
10     //计算方向有向步进单位,即两个方向的斜率增长单位
11     float xStepUnion = float(deltX) / maxStep;
12     float yStepUnion = float(deltY) / maxStep;
13 
14     glColor3f(lineColor[0], lineColor[1], lineColor[2]);
15     glBegin(GL_POINTS);
16 
17     float x,y;//绘制的坐标点
18     x = (float)startPos[0];
19     y = (float)startPos[1];
20 
21     //对两个方向循环步进处理
22     for (long i=1; i<=maxStep; i++)  
23     {  
24         x = x + xStepUnion;  
25         y = y + yStepUnion; 
26         glVertex3f((int)x, (int)y, 0);
27     }  
28     glEnd();
29     glPopMatrix();
30 }

 

转载于:https://www.cnblogs.com/icmzn/p/5045283.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值