6
PRACTICAL 1 DDA Line Drawing Algorithm ( implementation in c) #include<stdio.h> #include<stdlib.h> #include<conio.h> #include<graphics.h> #include<math.h> #define ROUND(a) ((int) (a+0.5)) void myddaline(int , int, int, int); void myddaline(int x1,int y1,int x2,int y2) { int dx,dy,steps,i; float xincr, yincr,x,y; dx=x2-x1; dy=y2-y1; if(abs(dx)>abs(dy)) steps=abs(dx); else steps=abs(dy); xincr=dx/(float)steps;

DDA Line Drawing Algorithm

Embed Size (px)

Citation preview

Page 1: DDA Line Drawing Algorithm

PRACTICAL 1

DDA Line Drawing Algorithm ( implementation in c)

#include<stdio.h>

#include<stdlib.h>

#include<conio.h>

#include<graphics.h>

#include<math.h>

#define ROUND(a) ((int) (a+0.5))

void myddaline(int , int, int, int);

void myddaline(int x1,int y1,int x2,int y2)

{

int dx,dy,steps,i;

float xincr, yincr,x,y;

dx=x2-x1;

dy=y2-y1;

if(abs(dx)>abs(dy))

steps=abs(dx);

else

steps=abs(dy);

xincr=dx/(float)steps;

yincr=dy/(float)steps;

Page 2: DDA Line Drawing Algorithm

x=x1;

y=y1;

putpixel(ROUND(x),ROUND(y),15);

for(i=1;i<=steps;i++)

{

x=x+xincr;

y=y+yincr;

putpixel(ROUND(x),ROUND(y),i);

}

}

void main()

{

int xone,xtwo,yone,ytwo;

int gdriver=DETECT, gmode, errorcode;

initgraph(&gdriver,&gmode,"c:\\tc\\bgi");

errorcode=graphresult();

if(errorcode!=grOk)

{

printf("%s Error has occured", grapherrormsg(errorcode));

exit(1);

}

printf("\n MY DDA LINE PROGRAMS");

getch();

clrscr();

Page 3: DDA Line Drawing Algorithm

printf("Enter values for starting points");

printf("\nEnter for x1:");

scanf("%d",&xone);

getch();

clrscr();

printf("\nEnter for y1:");

scanf("%d",&yone);

getch();

clrscr();

getch();

printf("\nEnter values for ending points");

printf("\nEnter for x2:");

scanf("%d",&xtwo);

getch();

clrscr();

printf("\nEnter for y2:");

scanf("%d",&ytwo);

getch();

clrscr();

myddaline(xone,yone,xtwo,ytwo);

getch();

}

Page 4: DDA Line Drawing Algorithm

Bresenham's Line Drawing Algorithm (implementation in c)

#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<graphics.h>#include<math.h>

void bresenham(int , int, int, int);

void bresenham(int x1,int y1,int x2,int y2){int dx,dy,steps,i,p,x,y,end;

dx=abs(x2-x1);dy=abs(y2-y1);

p=2*dy-dx;

if(x1>x2){x1=x2;y=y2xend=x;}

else{x=x1;y=y1;xend=x2;}putpixel(x,y,15)while(x<xend){if(p<0){x++p=p+2*dy;

Page 5: DDA Line Drawing Algorithm

}

else{x++;y++;p=p+2*dy-2*dy;putpixel(x,y,5);}

void main(){int xone,xtwo,yone,ytwo;int gdriver=DETECT, gmode, errorcode;initgraph(&gdriver,&gmode,"c:\\tc\\bgi");errorcode=graphresult();if(errorcode!=grOk){printf("%s Error has occured", grapherrormsg(errorcode));exit(1);}printf("\n MY BRESENHAM LINE DRAWING");

printf("\nnEnter values for starting points");printf("\nEnter for x1:");scanf("%d",&xone);getch();clrscr();printf("\nEnter for y1:");scanf("%d",&yone);getch();clrscr();getch();printf("\nEnter values for ending points");printf("\nEnter for x2:");scanf("%d",&xtwo);getch();clrscr();printf("\nEnter for y2:");scanf("%d",&ytwo);getch();clrscr();bresenham(xone,yone,xtwo,ytwo);getch();

Page 6: DDA Line Drawing Algorithm

}