Monday, April 22, 2013

Analog clock using graphics in c


#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<dos.h>
#include<math.h>
#define arg_sec M_PI/30
#define arg_hour M_PI/6
#define arg_min M_PI/360
void main()
{
  int a,b,i;
  int gd=DETECT,gm,sec=0,hour,min,x1=0,y1=0,x2=0,y2=0,x3=0,y3=0;
  char *k[12]={"1","2","3","4","5","6","7","8","9","10","11","12"};
  struct time t;
  initgraph(&gd,&gm,"c:\\tc\\bgi");
  setcolor(YELLOW);
  circle(300,200,200);
  circle(300,200,180);
  setfillstyle(1,RED);
  floodfill(300,390,YELLOW);
  settextstyle(DEFAULT_FONT,0,2);

  for(i=1;i<13;i++)
    {
a=160*cos(arg_hour*i-M_PI_2);
b=160*sin(arg_hour*i-M_PI_2);
outtextxy(a+300,b+200,k[i-1]);
    }

  while(!kbhit())
   {
      settextstyle(7,0,1);
      outtextxy(278,280,"Quartz");
      setcolor(BLACK);
      line(300,200,x1+300,y1+200);
      line(300,200,x2+300,y2+200);
      line(300,200,x3+300,y3+200);
      gettime(&t);
      if(sec!=t.ti_sec)
{
  sound(5000);
  delay(1);
  nosound();
}
      hour=t.ti_hour;
      sec=t.ti_sec;
      min=t.ti_min;

      x1=150*cos(arg_sec*sec-M_PI_2)*0.98;
      y1=150*sin(arg_sec*sec-M_PI_2)*0.98;
      x2=150*cos(arg_sec*min-M_PI_2)*0.9;
      y2=150*sin(arg_sec*min-M_PI_2)*0.9;
      if(hour>12) hour-=12;
      x3=150*cos(arg_hour*hour-M_PI_2+arg_min*min)*0.6;
      y3=150*sin(arg_hour*hour-M_PI_2+arg_min*min)*0.6;
      setcolor(YELLOW);
      line(300,200,x1+300,y1+200);
      setcolor(CYAN);
      line(300,200,x2+300,y2+200);
      setcolor(WHITE);
      line(300,200,x3+300,y3+200);
      setcolor(YELLOW);
      delay(50);
   }

  getch();
  closegraph();
}

Digital clock using graphics in c


//digital_clock

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

void main()
{
   int gd = DETECT, gm;
   int i=0, a[5];
   struct time t;
   initgraph(&gd, &gm, "c:\\tc\\bgi"); //Initializing Graphics mode
 
   while(!kbhit()) // if key hit is not received, display the clock
   {
    setcolor(YELLOW);
    gettime(&t);
    if(t.ti_hour>12)
    {
     t.ti_hour = t.ti_hour-12;
     settextstyle(DEFAULT_FONT,0,4);
     outtextxy(550,150,"PM");
    }
    else
    {
     outtextxy(550,150,"AM");
    }
    a[0]=t.ti_hour/10;
    a[1]=t.ti_hour%10;
    a[2]=t.ti_min/10;
    a[3]=t.ti_min%10;
    a[4]=t.ti_sec/10;
    a[5]=t.ti_sec%10;
    circle(240,150,2);
    circle(240,160,2);
    circle(390,150,2);
    circle(390,160,2);
    for(i=0;i<6;i++)
    {
     switch(a[i]) //Out the particular digit according to the input//
     {
      case 0:
    {
line(105+i*75,100,145+i*75,100);
line(100+i*75,105,100+i*75,145);
line(100+i*75,155,100+i*75,195);
line(105+i*75,200,145+i*75,200);
line(150+i*75,155,150+i*75,195);
line(150+i*75,105,150+i*75,145);
break;
    }
      case 1:
      {
       line(150+i*75,155,150+i*75,195);
       line(150+i*75,105,150+i*75,145);
       break;
      }
      case 2:
      {
       line(105+i*75,100,145+i*75,100);
       line(100+i*75,155,100+i*75,195);
       line(105+i*75,200,145+i*75,200);
       line(150+i*75,105,150+i*75,145);
       line(105+i*75,150,145+i*75,150);
       break;
      }
      case 3:
      {
       line(105+i*75,100,145+i*75,100);
       line(105+i*75,200,145+i*75,200);
       line(150+i*75,155,150+i*75,195);
       line(150+i*75,105,150+i*75,145);
       line(105+i*75,150,145+i*75,150);
       break;
      }
      case 4:
      {
       line(100+i*75,105,100+i*75,145);
       line(150+i*75,155,150+i*75,195);
       line(150+i*75,105,150+i*75,145);
       line(105+i*75,150,145+i*75,150);
       break;
      }
    case 5:
    {
    line(105+i*75,100,145+i*75,100);
    line(100+i*75,105,100+i*75,145);
    line(105+i*75,200,145+i*75,200);
    line(150+i*75,155,150+i*75,195);
    line(105+i*75,150,145+i*75,150);
    break;
    }
    case 6:
    {
    line(105+i*75,100,145+i*75,100);
    line(100+i*75,105,100+i*75,145);
    line(100+i*75,155,100+i*75,195);
    line(105+i*75,200,145+i*75,200);
    line(150+i*75,155,150+i*75,195);
    line(105+i*75,150,145+i*75,150);
    break;
    }
    case 7:
    {
    line(105+i*75,100,145+i*75,100);
    line(150+i*75,155,150+i*75,195);
    line(150+i*75,105,150+i*75,145);
    break;
    }
    case 8:
    {
    line(105+i*75,100,145+i*75,100);
    line(100+i*75,105,100+i*75,145);
    line(100+i*75,155,100+i*75,195);
    line(105+i*75,200,145+i*75,200);
    line(150+i*75,155,150+i*75,195);
    line(150+i*75,105,150+i*75,145);
    line(105+i*75,150,145+i*75,150);
    break;
    }
    case 9:
    {
    line(105+i*75,100,145+i*75,100);
    line(100+i*75,105,100+i*75,145);
    line(105+i*75,200,145+i*75,200);
    line(150+i*75,155,150+i*75,195);
    line(150+i*75,105,150+i*75,145);
    line(105+i*75,150,145+i*75,150);
    break;
    }
    }
    }
   delay(700);
   cleardevice();
   }
   closegraph();
}




Friday, April 5, 2013

Man opening umbrella program using Graphics in C


#include<stdio.h>
#include<conio.h>
#include<dos.h>
#include<math.h>
#include<graphics.h>
#include<stdlib.h>
void raindrops();
void far *man1,*man2;
unsigned size1,size2;
int cx=15,cy=360,r=22;
int x=0,y,p,i;
void drawgrass()
   {
    setfillstyle(3,GREEN);
    bar(0,385,getmaxx(),getmaxy());
   }
void drawmanbody()
 {
  fillellipse(15,350,7,7);
  moveto(15,350);
  lineto(15,370);
  lineto(25,360);
  lineto(25,369);
  lineto(15,370);
  lineto(15,390);
  lineto(15,390);
  lineto(15,390);
 }

 void drawman1()
  {
   drawmanbody();
   rectangle(23,369,28,400);
   setfillstyle(SOLID_FILL,RED);
   floodfill(24,370,WHITE);
   size1=imagesize(0,299,30,416);
   man1=malloc(size1);
   getimage(0,299,30,416,man1);
   setfillstyle(SOLID_FILL,WHITE);
   cleardevice();
  }

void drawman2()
 {
  drawmanbody();
  moveto(25,369);
  lineto(25,340);
  line(5,340,41,340);
  arc(23,340,0,180,18);
  setfillstyle(SOLID_FILL,RED);
  floodfill(24,339,WHITE);
  size2=imagesize(0,249,42,416);
  man2=malloc(size2);
  getimage(0,299,42,410,man2);
  cleardevice();
 }

 void raindrops()
   {
    int x,x1,y1;
    setcolor(15);
    x=getmaxx();
    x1=random(x);
    y1=random(480);
    line(x1,y1,x1+5,y1+5);
   }
int path1(int dtn)
{
    int x1,y1;
    setcolor(15);
    if(x>=y)
    {
return 0;
    }
    cleardevice();

    if(dtn==1)
    {

putimage(++i,270,man2,COPY_PUT);
raindrops();
drawgrass();
line(cx+i,cy,cx+x+i,cy+y);
line(cx+i,cy,cx-x+i,cy+y);
    }
    else
    {
putimage(++i,270,man2,COPY_PUT);
raindrops();
drawgrass();
line(cx+i,cy,cx-x+i,cy+y);
line(cx+i,cy,cx+x+i,cy+y);
    }
    delay(50);
    if(kbhit())
exit(0);
    x++;
    if(p<0)
p+=2*x+1;
    else
    {
y--;
p+=2*(x-y)+1;
    }
    x1=x;
    y1=y;
    path1(dtn);

    cleardevice();
    if(dtn==1)
    {
putimage(++i,270,man2,COPY_PUT);
raindrops();
  drawgrass();
line(cx+i,cy,cx+x1+i,cy+y1);
line(cx+i,cy,cx-x1+i,cy+y1);
    }
    else
    {

putimage(++i,270,man2,COPY_PUT);
raindrops();
drawgrass();
line(cx+i,cy,cx-x1+i,cy+y1);
line(cx+i,cy,cx+x1+i,cy+y1);
    }
    delay(50);
    if(kbhit())
exit(0);
    return(0);
}


int path(int dtn)
{
    int x1,y1;
    setcolor(15);
    if(x>=y)
    {
return 0;
    }
 

    if(dtn==1)
    {

putimage(++i,270,man1,COPY_PUT);
  drawgrass();
line(cx+i,cy,cx+x+i,cy+y);
line(cx+i,cy,cx-x+i,cy+y);
    }
    else
    {

putimage(++i,270,man1,COPY_PUT);
  drawgrass();
line(cx+i,cy,cx-x+i,cy+y);
line(cx+i,cy,cx+x+i,cy+y);
    }
    delay(50);
    if(kbhit())
exit(0);
    x++;
    if(p<0)
p+=2*x+1;
    else
    {
y--;
p+=2*(x-y)+1;
    }
    x1=x;
    y1=y;
    path(dtn);

    cleardevice();
    if(dtn==1)
    {

putimage(++i,270,man1,COPY_PUT);
  drawgrass();
line(cx+i,cy,cx+x1+i,cy+y1);
line(cx+i,cy,cx-x1+i,cy+y1);
    }
    else
   {
putimage(++i,270,man1,COPY_PUT);
   drawgrass();
line(cx+i,cy,cx-x1+i,cy+y1);
line(cx+i,cy,cx+x1+i,cy+y1);
    }
    delay(100);
    if(kbhit())
exit(0);
    return(0);
}

 void startwalk()
  {
   double theta;
   for(i=0;i<600;)
    {

if(i<=100)
{
        x=0;
        y=r;
        p=1-r;
path(1);
        x=0;
        y=r;
p=1-r;
path(0);
}
else if(i>100 && i<600)
{
x=0;
y=r;
p=1-r;
path1(1);
x=0;
y=r;
p=1-r;
path1(0);
}
}
}
//umbrella program by Fensa Merry Saj
 void main()
 {
   int i,j;
   int gd=DETECT,gm;
   initgraph(&gd,&gm,"c:\\tc\\bgi");
   drawman1();
   drawman2();
   startwalk();
   raindrops();
   getch();
 }






Sutherland-Hodgeman Polygon Clipping Program in C


#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#define round(a) ((int)(a+0.5))
int k;
float xmin,ymin,xmax,ymax,arr[20],m;

void clipl(float x1,float y1,float x2,float y2)
{
if(x2-x1)
m=(y2-y1)/(x2-x1);
if(x1>=xmin && x2>=xmin)
{
arr[k]=x2;
arr[k+1]=y2;
k+=2;
}
if(x1<xmin && x2>=xmin)
{
arr[k]=xmin;
arr[k+1]=y1+m*(xmin-x1);
arr[k+2]=x2;
arr[k+3]=y2;
k+=4;
}
if(x1>=xmin  && x2<xmin)
{
arr[k]=xmin;
arr[k+1]=y1+m*(xmin-x1);
k+=2;
}
}

void clipt(float x1,float y1,float x2,float y2)
{
if(y2-y1)
m=(x2-x1)/(y2-y1);
if(y1<=ymax && y2<=ymax)
{
arr[k]=x2;
arr[k+1]=y2;
k+=2;
}
if(y1>ymax && y2<=ymax)
{
arr[k]=x1+m*(ymax-y1);
arr[k+1]=ymax;
arr[k+2]=x2;
arr[k+3]=y2;
k+=4;
}
if(y1<=ymax  && y2>ymax)
{
arr[k]=x1+m*(ymax-y1);
arr[k+1]=ymax;
k+=2;
}
}

void clipr(float x1,float y1,float x2,float y2)
{
if(x2-x1)
m=(y2-y1)/(x2-x1);
if(x1<=xmax && x2<=xmax)
{
arr[k]=x2;
arr[k+1]=y2;
k+=2;
}
if(x1>xmax && x2<=xmax)
{
arr[k]=xmax;
arr[k+1]=y1+m*(xmax-x1);
arr[k+2]=x2;
arr[k+3]=y2;
k+=4;
}
if(x1<=xmax  && x2>xmax)
{
arr[k]=xmax;
arr[k+1]=y1+m*(xmax-x1);
k+=2;
}
}

void clipb(float x1,float y1,float x2,float y2)
{
if(y2-y1)
m=(x2-x1)/(y2-y1);
if(y1>=ymin && y2>=ymin)
{
arr[k]=x2;
arr[k+1]=y2;
k+=2;
}
if(y1<ymin && y2>=ymin)
{
arr[k]=x1+m*(ymin-y1);
arr[k+1]=ymin;
arr[k+2]=x2;
arr[k+3]=y2;
k+=4;
}
if(y1>=ymin  && y2<ymin)
{
arr[k]=x1+m*(ymin-y1);
arr[k+1]=ymin;
k+=2;
}
}

void main()
{
int gdriver=DETECT,gmode,n,poly[20],i;
float xi,yi,xf,yf,polyy[20];
clrscr();
printf("Coordinates of rectangular clip window :\nxmin,ymin:");
scanf("%f%f",&xmin,&ymin);
printf("Coordinates of rectangular clip window :\nxmax,ymax:");
scanf("%f%f",&xmax,&ymax);
printf("\n\nPolygon to be clipped :\nNumber of sides       :");
scanf("%d",&n);
printf("Enter the coordinates :");
for (i=0;i<2*n;i++)
scanf("%f",&polyy[i]);
polyy[i]=polyy[0];
polyy[i+1]=polyy[1];
for(i=0;i<2*n+2;i++)
poly[i]=round(polyy[i]);
initgraph(&gdriver,&gmode,"C:\\TC\\BGI");
rectangle(xmin,ymax,xmax,ymin);
printf("\tUNCLIPPED POLYGON");
printf("hi");
fillpoly(n,poly);
getch();
cleardevice();
k=0;
for(i=0;i<2*n;i+=2)
clipl(polyy[i],polyy[i+1],polyy[i+2],polyy[i+3]);
n=k/2;
for(i=0;i<k;i++)
polyy[i]=arr[i];
polyy[i]=polyy[0];
polyy[i+1]=polyy[1];
k=0;
for(i=0;i<2*n;i+=2)
clipt(polyy[i],polyy[i+1],polyy[i+2],polyy[i+3]);
n=k/2;
for(i=0;i<k;i++)
polyy[i]=arr[i];
polyy[i]=polyy[0];
polyy[i+1]=polyy[1];
k=0;
for(i=0;i<2*n;i+=2)
clipr(polyy[i],polyy[i+1],polyy[i+2],polyy[i+3]);
n=k/2;
for(i=0;i<k;i++)
polyy[i]=arr[i];
polyy[i]=polyy[0];
polyy[i+1]=polyy[1];
k=0;
for(i=0;i<2*n;i+=2)
clipb(polyy[i],polyy[i+1],polyy[i+2],polyy[i+3]);
for(i=0;i<k;i++)
poly[i]=round(arr[i]);
if(k)
fillpoly(k/2,poly);
rectangle(xmin,ymax,xmax,ymin);
printf("\tCLIPPED POLYGON");
getch();
closegraph();
}