CG LAB

PROGRAM 1 PROGRAM 2 PROGRAM 3 PROGRAM 4 PROGRAM 5 PROGRAM 6 PROGRAM 7 PROGRAM 8 PROGRAM 9 PROGRAM 10 PROGRAM 11 PROGRAM 12 . . .

parallel line : using bresenhams

 
 

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

//parallel line
void draw(int x1,int y1,int x2,int y2);
void main() 
{
    int x1,x2,y1,y2;
    int gd=DETECT,gm;//DETECT is macro defined in graphics.h
    initgraph(&gd,&gm,"d:\\tc\\bgi");//initialize graphic mode
    printf("Enter values of x1 and y1: ");
    scanf("%d %d",&x1,&y1);
    printf("Enter values of x2 and y2 : ");
    scanf("%d %d",&x2,&y2);
    draw(x1,y1,x2,y2);//call to function that draws the line
    getch();
}
void draw(int x1,int y1,int x2,int y2)
{
    float dx,dy,p;
    int i,x,y,xend;
	int ym,xm,xmend;
    dx=x2-x1;
    dy=y2-y1;
    p=2*dy-dx;
    if(x1>x2)
    {
        x=x2;
        y=y2;
        xend=x1;
    }
    else
    {
        x=x1;
        y=y1;
        xend=x2;
    }

	ym=y;
 xm=x*2;xmend=xend/2;
    putpixel(x,y,10);

    while(x< xmend && xm< xend )
    {
        if(p< 0)
        {
            x=x+1;
			xm=xm+1;
            putpixel(x,y,10);

            putpixel(xm,ym,10);
            p=p+(2*dy);
        }
        else
        {
            x=x+1;
            y=y+1;
			xm=xm+1;
			ym=ym+1;

            putpixel(x,y,10);

            putpixel(xm,ym,10);
            p=p+(2*dy)-(2*dx);
        }
    }
}