G. S. Mandal's Mit Polytechnic, Rotegaon, Vaijapur: Project Report On
G. S. Mandal's Mit Polytechnic, Rotegaon, Vaijapur: Project Report On
G. S. Mandal's Mit Polytechnic, Rotegaon, Vaijapur: Project Report On
Mandal`s
MIT POLYTECHNIC, ROTEGAON, VAIJAPUR
Project report
On
“Analog Clock Using Graphics”
This is to certify that the micro project entitled “Analog Clock Using
Graphics”study work carried out by,
• BATHIYA GAURAV MAHAVIR
• RAUT PRATIK DEEPAK
• KHAN MUSHAHID SADIQUE
• SAYYED AKTAR NISAR
in partial fulfilment of Micro-project of Subject Computer Graphics (CO3I) in
MIT Polytechnic, Rotegaon during year 2019-20.
_________________ _________________
Signature Signature
Prof. M. R. Vaidya
MIT Polytechnic,
Rotegaon.
Seal
of
Institute
Last But not the least there were so many people my friends,
Teaching and non-teaching faculty who shared valuable information that helped
in the successful completion of this micro-project.
A clock or watch is called "analog" when it has moving hands and (usually) hours
marked from 1 to 12 to show you the time. Some have Roman Numerals (I, II, III, etc) instead, or no
numbers at all! In other words: not a digital clock. See: Digital Clock or Watch. Clocks - Digital and
Analog.
About Program:
clockLayout():
I’ve used this function to print the clock layout i.e. clock dial and the markings on the clock. If we observe
clearly, the clock has hours marking each separated by 30 degrees and each hour is divided into 5
markings each making an angle of 6 degrees. So, iterating the markings for every 30 degrees gives hours
and iterating markings with 6 degrees give minutes markings on the clock. The clock would look like this
after executing this function.
secHand():
It is clear from the name that this gonna do something with the seconds hand. This function is going to
get the present second from the system clock and incline the line according to a particular angle. Eg: if
the present seconds is 5 then the angle of the seconds hand with respect to the vertical must be 30
degrees, i.e. 5*6=30.
minHand():
This function fulfills the task of moving the minutes hand based on the system clock. The minutes
hand must be inclined 6 degrees for every minute passing. Eg: if the elapsed minutes are 30 then the
minutes hand angle must be making 180 degrees with the vertical.
hrHand():
This function is going to print an inclined hours line. The function is designed to get the present hour
and also the no. of elapsed minutes from the system clock and incline the line according to a particular
angle. For every hour elapsed the hour hand moves 30 degrees and every 12 minutes it moves 6
degrees.
main():
The first lines in main are graphic initialization, you must change the path “c:\turboc3\bgi\” to your
compiler’s BGI file path otherwise program will not work. Coming to the while loop, the while loop
getch():
It is a function from stdio.h header file. This function is used to input a single character. The
inter key is press which is followed by the charcter i.e.typed.
Syntax: ch=getchar();
#include<stdio.h>
#include<graphics.h>
#include<stdlib.h>
#include<math.h>
#include<dos.h>
#include<time.h>
#define PI 3.147
void clockLayout();
void secHand();
void hrHand();
void minHand();
int maxx,maxy;
void main()
{
int gdriver=DETECT,gmode,error;
initgraph(&gdriver,&gmode,"c:\\turboc3\\bgi");
error=graphresult();
if(error!=grOk)
{
printf("Error in graphics, code= %d",grapherrormsg(error));
exit(0);
}
while(1)
{
clockLayout();
secHand();
minHand();
hrHand();
sleep(1); /* pausing the outputscreen for 1 sec */
cleardevice(); /* clearing the previous picture of clock */
}
}
void clockLayout()
{
int i,x,y,r;
5|Page MIT POLYTECHNIC ROTEGAON
float j;
maxx=getmaxx();
maxy=getmaxy();
for(i=1;i<5;i++)
{ /* printing a round ring with outer radius of 5 pixel */
setcolor(YELLOW);
circle(maxx/2,maxy/2,120-i);
}
for(j=PI/6;j<=(2*PI);j+=(PI/6))
{ /* marking the hours for every 30 degrees */
pieslice(x,y,0,360,4);
x=(maxx/2)+r*cos(j);
y=(maxy/2)+r*sin(j);
}
x=maxx/2+100;y=maxy/2;
r=100;
setcolor(RED);
for(j=PI/30;j<=(2*PI);j+=(PI/30))
{ /* marking the minutes for every 6 degrees */
pieslice(x,y,0,360,2);
x=(maxx/2)+r*cos(j);
y=(maxy/2)+r*sin(j);
}
}
void secHand()
{
struct time t;
int r=80,x=maxx/2,y=maxy/2,sec;
float O;
maxx=getmaxx();maxy=getmaxy();
gettime(&t); /*getting the seconds in system clock */
sec=t.ti_sec;
O=sec*(PI/30)-(PI/2); /* determining the angle of the line with respect to vertical */
setcolor(YELLOW);
line(maxx/2,maxy/2,x+r*cos(O),y+r*sin(O));
}
void hrHand()
{
int r=50,hr,min;
int x,y;
struct time t;
maxx=getmaxx();
maxy=getmaxy();
x=maxx/2,y=maxy/2;
gettime(&t); /*getting the seconds in system clock */
hr=t.ti_hour;
min=t.ti_min;
void minHand()
{
int r=60,min;
int x,y;
float O;
struct time t;
maxx=getmaxx();
maxy=getmaxy();
x=maxx/2;
y=maxy/2;
gettime(&t); /*getting the seconds in system clock */
min=t.ti_min;
O=(min*(PI/30)-(PI/2)); /* determining the angle of the line with respect to vertical */
setcolor(RED);
line(maxx/2,maxy/2,x+r*cos(O),y+r*sin(O));
getch();
}
OUTPUT:
Make a basic design of the clock in the shapes that you want like
rectangular or circle or square. In this clock, there will be numbers and 3
needles to show the time. So the needles in the clock should move
accordingly to the time as we observe in the wall clocks in our daily lives.
1. https://www.geeksforgeeks.org
2.https://www.tutorialspoint.com
4. https://www.codeblocker.com