[go: up one dir, main page]

0% found this document useful (0 votes)
9 views6 pages

Cs602... Assignment

Upload

Uploaded by

Xtylish Mughal
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views6 pages

Cs602... Assignment

Upload

Uploaded by

Xtylish Mughal
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 6

CS602 -Computer Graphics

Assignment No.2 Solution

Code:

#include <GL/glut.h>

#include <cmath>

#include <ctime

#include <string>

/Window dimensions

const int WINDOW WIDTH = 600;

const int WINDOW HEIGHT=600;

/ User ID

const char* userlD= "Bc180404611":

/ Function to convert degrees to radians

float degToRad(float degrees) {

return degrees * M PI/ 180.0f;

/ Function to draw a string (used for displaying the ID)

void drawString(float x, float y, const char* str) {

glRasterPos2f(x, y);

for (const char* c = str; *c !="\0; Llc) {

glutBitmapCharacter(GLUT BITMAP HELVETICA 18, *c):


}
}

void drawClockFace()

/ Draw the circle

glColor3f(1.0, 1.0, 1.0);


glBegin(GL LINE L0OP);

for (int i =0; i< 360; ++i){

float theta- degToRad(i);


glVertex2f(cos(theta), sin(theta);

glEnd);

H Draw thc hour and minutc ticks

for (int i=0; i<60; ++i) {

float theta - degToRad(i * 6); // 360 /60

float xl= cos(theta):

float yl = sin(theta):

float x2 = (i %5 -0) ? x1 *0.9f: x1 * 0.95f; // Longer ticks for hours


float y2 - (i %5 ==0) ?yl *0.9f: yl * 0.95f;
glBegin(GL_ LINES):

glVertex2fix , yl); glVertex2f(x2, y2); junaid Qazi

glEnd();

/ Function to draw the clock hands

void drawClockHands(int hour, int minute, int second)

/ Draw the second hand

glColor3f(1.0, 0.0, 0.0);


float secondAngle - degToRad(90 - second * 6);
glBegin(GL LINES):
glVertex2f(0.0, 0.0);

glVcrtex2f(0.9f* cos(sccondAnglc), 0.9f* sin(sccondAnglc));


glEnd);

/ Draw the minute hand

glColor3f(0.0, 1.0, 0.0);

float minuteAngle = degToRad(90 - (minute *6 I second * 0.1)):

glBegin(GL LINES);

glVertex2f(0.0, 0.0); e azi


glVertex2f0.8f* cos(minuteAngle), 0.3f* sin(minuteAngle);

glEnd);

Draw the hour hand

glColor3 f(0.0, 0.0, 1.0);

float hourAngle degToRad(90 - (hour * 30 + minute * 0.5);


glBegin(GL_ LINES);
glVertex2f(0.0, 0.0);

glVertex2f(0.6f* cos(hourAngle), 0.6f * sin(hourAngle)):


glEnd);

/ Function to display the clock and the user ID

void display() {

giClear(GL_ COLOR BUFFER BIT);

glLoadldentity0;

glScalef(0.8f, 0.8f, 1.0f); // Center the clock

drawClockFace);

/ Get the current time

time t now - fime(0):

tm* utcTime gmtime(&now),

utcTime->m hournveit fo PakinsodORGde

Standard Time (U

mktime(utcTime); // Normalize the time structure

int hour = utcTime->tm hour % 12; / Convert to 12-hour format


int minute =utcTime->tm min;

int second = utcTime->tm sec;

drawClockHands(hour, minute, second);

I/ Display the user ID


glLoadldentity0;
glColor3f(1.0, 1.0, 1.0);
drawString(-0,98f, 0.9f, uscrlD);

glutSwapBuffers();

/ Timer function to update the display every second

void timer(int value) {

glutPostRedisplay():
/ Function to initialize OpenGL settings

void initOpenGL) {

glClearColor(0.0, 0,0, 0,0, 0,0):

glMatrixMode(GL PROJECTION);

glLoadldentity0;

gluOrtho2D(-1.0, 1.0, -1.0, 1.0);

glMatrixMode(GL_ MODELVIEW):

Main function

int main(int argc, char** argv)

glutinit(&argc, argv);

glutlnitDisplayMode(GLUT _DOUBLE | GLUT_ RGB);

glutlnitWindowSize(WINDOW WIDTH, WINDOW HEIGHT):

glutCreateWindow("Analog Clock");

initOpenGLO:
unwtsey naid Oazi

glutTimerFunc(0, timer, 0);

glutMainlLoop0;

return 0;

Prat Cle beug

include cGL/glut

id Oa:

-Erronr

You might also like