直线DDA,直线和圆的Bresenham算法
发布时间:2021-01-11 00:29:57 所属栏目:系统 来源:网络整理
导读:? ? ? ? ? ? ? ? ? // 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.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); } } ? ? ? ? ? ? ? ? ? #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); } } ? ? ? ? ? ? ? ? ? ? ? (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |