Upload
bitrichard
View
15
Download
2
Embed Size (px)
Citation preview
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;
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();
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();
}
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;
}
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();
}