Feb 20, 2010

Polygon Drawing

//This program is to draw polygon using C

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include<iostream.h>
#include<math.h>
void line(float x1,float y1,float x2,float y2);
void main()
{
   int gdriver = DETECT, gmode,i,no;
   float x[100],y[100];
   initgraph(&gdriver, &gmode, "..\\bgi");
   cout<<"how many sides you want";
   cin>>no;
   for(i=0;i<no;i++)
   {
   cout<<"enter x"<<i+1;
   cin>>x[i];
   cout<<"enter y"<<i+1;
   cin>>y[i];
   }
   x[no]=x[0];
   y[no]=y[0];
   for(i=0;i<no;i++)
   {
   line(x[i],y[i],x[i+1],y[i+1]);
   }
   getch();
}
   void line(float x1,float y1,float x2,float y2)
   {
   int i;
   float sign,dx,dy;
   if(abs(x2-x1)>abs(y2-y1))
   sign=abs(x2-x1);
   else
   sign=abs(y2-y1);
   dx=x2-x1;
   dy=y2-y1;
   for(i=0;i<=sign;i++)
   {
   putpixel(x1,y1,15);
   x1+=dx/sign;
   y1+=dy/sign;
   }
   }

DDA Line drawing algorithm

// This is Digital differential analyzer(DDA) line drawing algorithm using C

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include<math.h>
void jayudda(float,float,float,float);
void main()
{
   int gdriver = DETECT, gmode;
   float x1,y1,x2,y2;
   initgraph(&gdriver, &gmode, "..\\bgi");
   printf("enter starting points(x1,y1):"),scanf("%f%f",&x1,&y1);
   printf("enter ending points(x2,y2):"),scanf("%f%f",&x2,&y2);
   jayudda(x1,y1,x2,y2);
   getch();
}
void jayudda(float x1,float y1,float x2,float y2)
{
int i;
float sign;
if(abs(x2-x1)>abs(y2-y1))
   sign=abs(x2-x1);
   else
   sign=abs(y2-y1);
   for(i=0;i<=sign;i++)
   {
   putpixel(x1,y1,7);
   x1+=(x2-x1)/sign;
   y1+=(y2-y1)/sign;
   }
}