加入收藏 | 设为首页 | 会员中心 | 我要投稿 衡阳站长网 (https://www.0734zz.cn/)- 数据集成、设备管理、备份、数据加密、智能搜索!
当前位置: 首页 > 服务器 > 系统 > 正文

直线DDA,直线和圆的Bresenham算法

发布时间:2021-01-10 16:08:14 所属栏目:系统 来源:网络整理
导读:? ? ? ? ? ? ? ? ? // DDA.cpp : 定义控制台应用程序的入口点。 // #include " stdafx.h " #include Windows.h #include graphics.h #include conio.h #include math.h void dda_line( int xa, int ya, int xb, int yb, int c); int main( int argc,_TCHAR*

直线DDA,直线和圆的Bresenham算法

?

?

直线DDA,直线和圆的Bresenham算法

?

直线DDA,直线和圆的Bresenham算法

?

?

?

直线DDA,直线和圆的Bresenham算法

?

?

?

// DDA.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include<Windows.h>
#include<graphics.h>
#include<conio.h>
#include<math.h>
void dda_line(int xa,int ya,int xb,int yb,int c);
int main(int argc,_TCHAR* argv[])
{
    int gd=DETECT,gm; /*图形屏幕初始化*/
    initgraph(&gd,&gm,"");
    dda_line(100,100,200,255);
    getch();
    closegraph();
    return 0;
}


void dda_line(int xa,int c)
{
float delta_x,delta_y,x,y;
int dx,dy,steps,k;
dx=xb-xa;
dy=yb-ya;
if(abs(dx)>abs(dy))steps=abs(dx);
else steps=abs(dy);
delta_x=(float)dx/(float)steps;
delta_y=(float)dy/(float)steps;
x=xa;
y=ya;
putpixel(x,y,c);
for(k=1;k<=steps;k++)
{
x+=delta_x;
y+=delta_y;
putpixel(x,c);
}
}

直线DDA,直线和圆的Bresenham算法

?

?

?

直线DDA,直线和圆的Bresenham算法

?

?

?

直线DDA,直线和圆的Bresenham算法

?

?

?

#include "stdafx.h"
#include<Windows.h>
#include<graphics.h>
#include<conio.h>
#include<math.h>
void lineBres(int x0,int y0,int xEnd,int yEnd,"");
    lineBres(0,0,255);
    getch();
    closegraph();
    return 0;
}


void lineBres(int x0,int c)
{
        int dx = (int)fabs(double((xEnd-x0)));
        int dy = (int)fabs(double(yEnd-y0));
        int p =2* dy-dx;
        int twoDy = 2*dy,twoDyMinusDx = 2* (dy - dx);
        int x,y;

        if (x0>xEnd)
        {
                x=xEnd;
                y=yEnd;
                xEnd=x0;
        }
        else{
                x=x0;
                y=y0;
        }
        putpixel (x,c);

        while (x<xEnd)
        {
                x++;
                if(p<0)
                        p+=twoDy;
                else{
                        y++;
                        p+=twoDyMinusDx;
                }
               putpixel (x,c);
       }
}

?

直线DDA,直线和圆的Bresenham算法

?

?

?

?

直线DDA,直线和圆的Bresenham算法

?

?

?

直线DDA,直线和圆的Bresenham算法

直线DDA,直线和圆的Bresenham算法

直线DDA,直线和圆的Bresenham算法

?

?

直线DDA,直线和圆的Bresenham算法

?

(编辑:衡阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读