Archive

Archive for the ‘Cpp Graphics’ Category

C++ Graphics – 21 – Analog Clock code/program showing current time

December 21, 2009 Leave a comment

Analog Clock program by using Trigonometry (SIN & COS) functions:

Cpp 21 Clock

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

#define PI 3.14

void getTime(int *h, int *m, int *s ){
	struct time t;
	gettime(&t);

	gotoxy(36,18);
	printf("%2d:%02d:%02d.%02d\n",
		 t.ti_hour,t.ti_min,t.ti_sec,t.ti_hund);

	*h = t.ti_hour;
	*m = t.ti_min;
	*s = t.ti_sec;
	}

void main(){
	int gd=DETECT, gm;
	initgraph(&gd, &gm, "\\tc");

	int xs, ys, xm, ym, xh, yh, h, m, s;

	while(!kbhit()){
		cleardevice();

		getTime(&h, &m, &s);

		settextstyle(1,0,0);
		setcolor(WHITE);
		outtextxy(300,15,"12");
		outtextxy(315,425,"6");
		outtextxy(105,220,"9");
		outtextxy(520,220,"3");
		settextstyle(5,0,0);

		setcolor(GREEN);
		outtextxy(275,300,"CLOCK");
		settextstyle(2 ,0,0);

		setcolor(LIGHTRED);
		outtextxy(310,295,"Manoj");

		xh = cos((h*30 + m / 2) * PI / 180 - PI / 2) * 150 + 320;
		yh = sin((h*30 + m / 2) * PI / 180 - PI / 2) * 150 + 240;
		xm = cos(m * PI / 30 - PI / 2) * 180 + 320;
		ym = sin(m * PI / 30 - PI / 2) * 180 + 240;
		xs = cos(s * PI / 30 - PI / 2) * 210 + 320;
		ys = sin(s * PI / 30 - PI / 2) * 210 + 240;

		setcolor(LIGHTBLUE);
		circle(320,240,220);

		setcolor(LIGHTRED);
		line(320,240,xh,yh);

		setcolor(LIGHTGREEN);
		line(320,240,xm,ym);

		setcolor(YELLOW);
		line(320,240,xs,ys);

		sleep(1);
		}
	}

C++ Graphics – 20 – SCALING of LINE, TRIANGLE and RECTANGLE w.r.t a Point

December 20, 2009 Leave a comment

SCALING of LINE, TRIANGLE and RECTANGLE w.r.t a Point.

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

const int MAX = 5;
const double PI = 3.14;

void GetCords(float mat1[][MAX], float mat2[][MAX], int n){
	int i, j;
	for(i=0; i<n; i++){
		printf("\n Enter Coordinate no %d:- \n", i+1);
		for(j=0; j<2; j++){
			scanf("%f", &mat1[j][i]);
			}
		}

	for(i=0; i<n; i++){
		mat2[0][i] = mat1[0][i];
		mat1[0][i] = 320 + mat1[0][i];
		mat2[1][i] = mat1[1][i];
		mat1[1][i] = 240 - mat1[1][i];
		}

	setcolor(GREEN);
	line(0, 240, 640, 240);
	outtextxy(630, 245, "x");
	line(320, 0, 320, 480);
	outtextxy(310, 0, "y");
	outtextxy(280, 245, "(0,0)");

	setcolor(YELLOW);
	moveto(mat1[0][0], mat1[1][0]);
	for(i=0; i<n; i++){
			lineto(mat1[0][i], mat1[1][i]);
			moveto(mat1[0][i], mat1[1][i]);
			}
	lineto(mat1[0][0], mat1[1][0]);

	}

void pointScale(float mat2[][MAX], int n){
	int i, j, k;
	float tmat[MAX][MAX], tot[MAX][MAX];
	int sx, sy;
	int px, py;

	// Get a Point.
	px = mat2[0][0];
	py = mat2[1][0];

	printf("\n Enter the Scale value of x: ");
	scanf("%d", &sx);
	printf("\n Enter the Scale value of y: ");
	scanf("%d", &sy);

	// Inv Translation to Origin.
	for(i=0; i<n; i++){
		mat2[0][i] -= px;
		mat2[1][i] -= py;
		}

	// Scaling
	tmat[0][0] = sx;
	tmat[0][1] = 0;
	tmat[1][0] = 0;
	tmat[1][1] = sy;

	for(i=0; i<2; i++){
		for(j=0; j<n; j++){
			tot[i][j] = 0;
			for(k=0; k<2; k++){
				tot[i][j] = tot[i][j] + (tmat[i][k] * mat2[k][j]);
				}
			}
		}

	// Trnaslate from the Origin.
	for(i=0; i<n; i++){
		tot[0][i] += px;
		tot[1][i] += py;
		}

	for(i=0; i<n; i++){
		tot[0][i] = 320 + tot[0][i];
		tot[1][i] = 240 - tot[1][i];
		}

	setcolor(LIGHTRED);
	moveto(tot[0][0], tot[1][0]);
	for(i=0; i<n; i++){
			lineto(tot[0][i], tot[1][i]);
			moveto(tot[0][i], tot[1][i]);
			}
	lineto(tot[0][0], tot[1][0]);
	}

void main(){
	int gd=DETECT, gm;
	initgraph(&gd, &gm,"\\tc");
	float mat1[MAX][MAX], mat2[MAX][MAX];
	int ch, n;
	while(1){
		clrscr();
		cleardevice();
		printf("\n SCALING w.r.t a point");
		printf("\n ~~~~~~~~~~~~~~~~~~~~~~\n");
		printf("\n 1 -> LINE.");
		printf("\n 2 -> TRIANGLE.");
		printf("\n 3 -> RECTANGLE");
		printf("\n 4 -> Exit.");
		printf("\n Enter your choice: ");
		scanf("%d", &ch);
		clrscr();
		cleardevice();
		switch(ch){
			case 1:		// LINE.
				n=2;
				break;
			case 2:		// TRIANGLE.
				n=3;
				break;
			case 3:		// RECTANGLE.
				n=4;
				break;
			default:
				gotoxy(10, 10);
				printf(" Dev. By: Manoj Pandey.");
				gotoxy(15, 15);
				printf("MCA 3d Sem.");
				getch();
				closegraph();
				exit(1);
			} // end of switch.
		GetCords(mat1, mat2, n);	// Input of Coordinates.
		pointScale(mat2, n);	// Scaling and Displaying.
		getch();
		} // end of while.
	} // end of main.

C++ Graphics – 19 – ROTATION of LINE, TRIANGLE and RECTANGLE w.r.t a Point

December 19, 2009 Leave a comment

ROTATION of LINE, TRIANGLE and RECTANGLE w.r.t a Point.

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

const int MAX = 5;
const double PI = 3.14;

void GetCords(float mat1[][MAX], float mat2[][MAX], int n){
	int i, j;
	for(i=0; i<n; i++){
		printf("\n Enter Coordinate no %d:- \n", i+1);
		for(j=0; j<2; j++){
			scanf("%f", &mat1[j][i]);
			}
		}

	for(i=0; i<n; i++){
		mat2[0][i] = mat1[0][i];
		mat1[0][i] = 320 + mat1[0][i];
		mat2[1][i] = mat1[1][i];
		mat1[1][i] = 240 - mat1[1][i];
		}

	setcolor(GREEN);
	line(0, 240, 640, 240);
	outtextxy(630, 245, "x");
	line(320, 0, 320, 480);
	outtextxy(310, 0, "y");
	outtextxy(280, 245, "(0,0)");

	setcolor(YELLOW);
	moveto(mat1[0][0], mat1[1][0]);
	for(i=0; i<n; i++){
			lineto(mat1[0][i], mat1[1][i]);
			moveto(mat1[0][i], mat1[1][i]);
			}
	lineto(mat1[0][0], mat1[1][0]);

	}

void pointRotate(float mat2[][MAX], int n){
	int ang, i, j, k;
	float tmat[MAX][MAX], tot[MAX][MAX];
	float rad;
	int px, py;

	// Get a Point.
	px = mat2[0][0];
	py = mat2[1][0];

	printf("\n Enter the Angle (in Degrees):- \n");
	scanf("%d", &ang);

	// Inv Translation to Origin.
	for(i=0; i<n; i++){
		mat2[0][i] -= px;
		mat2[1][i] -= py;
		}

	// Rotation.
	rad = (ang * PI) / 180;

	tmat[0][0] = cos(rad);
	tmat[0][1] = -sin(rad);
	tmat[1][0] = sin(rad);
	tmat[1][1] = cos(rad);

	for(i=0; i<2; i++){
		for(j=0; j<n; j++){
			tot[i][j] = 0;
			for(k=0; k<2; k++){
				tot[i][j] = tot[i][j] + (tmat[i][k] * mat2[k][j]);
				}
			}
		}

	// Trnaslate from the Origin.
	for(i=0; i<n; i++){
		tot[0][i] += px;
		tot[1][i] += py;
		}

	for(i=0; i<n; i++){
		tot[0][i] = 320 + tot[0][i];
		tot[1][i] = 240 - tot[1][i];
		}

	setcolor(LIGHTRED);
	moveto(tot[0][0], tot[1][0]);
	for(i=0; i<n; i++){
			lineto(tot[0][i], tot[1][i]);
			moveto(tot[0][i], tot[1][i]);
			}
	lineto(tot[0][0], tot[1][0]);
	}

void main(){
	int gd=DETECT, gm;
	initgraph(&gd, &gm,"\\tc");
	float mat1[MAX][MAX], mat2[MAX][MAX];
	int ch, n;
	while(1){

		clrscr();
		cleardevice();
		printf("\n ROTATION w.r.t a point");
		printf("\n ~~~~~~~~~~~~~~~~~~~~~~\n");
		printf("\n 1 -> LINE.");
		printf("\n 2 -> TRIANGLE.");
		printf("\n 3 -> RECTANGLE");
		printf("\n 4 -> Exit.");
		printf("\n Enter your choice: ");
		scanf("%d", &ch);
		clrscr();
		cleardevice();
		switch(ch){
			case 1:		// LINE.
				n=2;
				break;
			case 2:		// TRIANGLE.
				n=3;
				break;
			case 3:		// RECTANGLE.
				n=4;
				break;
			default:
				gotoxy(10, 10);
				printf(" Dev. By: Manoj Pandey.");
				gotoxy(15, 15);
				printf("MCA 3d Sem.");
				getch();
				closegraph();
				exit(1);
			} // end of switch.
		GetCords(mat1, mat2, n);	// Input of Coordinates.
		pointRotate(mat2, n);	// Rotating and Displaying.
		getch();
		} // end of while.
	} // end of main.

C++ Graphics – 18 – SHEARING of LINE, TRIANGLE and RECTANGLE w.r.t xy-Axis

December 18, 2009 Leave a comment

SHEARING of LINE, TRIANGLE and RECTANGLE w.r.t xy-Axis.

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

const int MAX = 5;
const double PI = 3.14;

void GetCords(float mat1[][MAX], float mat2[][MAX], int n){
	int i, j;
	for(i=0; i<n; i++){
		printf("\n Enter Coordinate no %d:- \n", i+1);
		for(j=0; j<2; j++){
			scanf("%f", &mat1[j][i]);
			}
		}

	for(i=0; i<n; i++){
		mat2[0][i] = mat1[0][i];
		mat1[0][i] = 320 + mat1[0][i];
		mat2[1][i] = mat1[1][i];
		mat1[1][i] = 240 - mat1[1][i];
		}

	setcolor(GREEN);
	line(0, 240, 640, 240);
	outtextxy(630, 245, "x");
	line(320, 0, 320, 480);
	outtextxy(310, 0, "y");
	outtextxy(280, 245, "(0,0)");

	setcolor(YELLOW);
	moveto(mat1[0][0], mat1[1][0]);
	for(i=0; i<n; i++){
			lineto(mat1[0][i], mat1[1][i]);
			moveto(mat1[0][i], mat1[1][i]);
			}
	lineto(mat1[0][0], mat1[1][0]);

	}

void xyShearing(float mat2[][MAX], int n){
	int i, j, k;
	float tmat[MAX][MAX], tot[MAX][MAX];
	int sh_x, sh_y;

	printf("\n Enter the Searing value w.r.t x: ");
	scanf("%d", &sh_x);
	printf("\n Enter the Searing value w.r.t y: ");
	scanf("%d", &sh_y);

	tmat[0][0] = 1;
	tmat[0][1] = sh_x;
	tmat[1][0] = sh_y;
	tmat[1][1] = 1;

	for(i=0; i<2; i++){
		for(j=0; j<n; j++){
			tot[i][j] = 0;
			for(k=0; k<2; k++){
				tot[i][j] = tot[i][j] + (tmat[i][k] * mat2[k][j]);
				}
			}
		}

	for(i=0; i<n; i++){
		tot[0][i] = 320 + tot[0][i];
		tot[1][i] = 240 - tot[1][i];
		}

	setcolor(LIGHTRED);
	moveto(tot[0][0], tot[1][0]);
	for(i=0; i<n; i++){
			lineto(tot[0][i], tot[1][i]);
			moveto(tot[0][i], tot[1][i]);
			}
	lineto(tot[0][0], tot[1][0]);
	}

void main(){
	int gd=DETECT, gm;
	initgraph(&gd, &gm,"\\tc");
	float mat1[MAX][MAX], mat2[MAX][MAX];
	int ch, n;
	while(1){

		clrscr();
		cleardevice();
		printf("\n SHEARING w.r.t xy-Axis");
		printf("\n ~~~~~~~~~~~~~~~~~~~~~~\n");
		printf("\n 1 -> LINE.");
		printf("\n 2 -> TRIANGLE.");
		printf("\n 3 -> RECTANGLE");
		printf("\n 4 -> Exit.");
		printf("\n Enter your choice: ");
		scanf("%d", &ch);
		clrscr();
		cleardevice();
		switch(ch){
			case 1:		// LINE.
				n=2;
				break;
			case 2:		// TRIANGLE.
				n=3;
				break;
			case 3:		// RECTANGLE.
				n=4;
				break;
			default:
				gotoxy(10, 10);
				printf(" Dev. By: Manoj Pandey.");
				gotoxy(15, 15);
				printf("MCA 3d Sem.");
				getch();
				closegraph();
				exit(1);
			} // end of switch.
		GetCords(mat1, mat2, n);	// Input of Coordinates.
		xyShearing(mat2, n);	// Shearing and Displaying.
		getch();
		} // end of while.
	} // end of main.

C++ Graphics – 17 – SHEARING of LINE, TRIANGLE and RECTANGLE w.r.t y-Axis

December 17, 2009 Leave a comment

SHEARING of LINE, TRIANGLE and RECTANGLE w.r.t y-Axis.

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

const int MAX = 5;
const double PI = 3.14;

void GetCords(float mat1[][MAX], float mat2[][MAX], int n){
	int i, j;
	for(i=0; i<n; i++){
		printf("\n Enter Coordinate no %d:- \n", i+1);
		for(j=0; j<2; j++){
			scanf("%f", &mat1[j][i]);
			}
		}

	for(i=0; i<n; i++){
		mat2[0][i] = mat1[0][i];
		mat1[0][i] = 320 + mat1[0][i];
		mat2[1][i] = mat1[1][i];
		mat1[1][i] = 240 - mat1[1][i];
		}

	setcolor(GREEN);
	line(0, 240, 640, 240);
	outtextxy(630, 245, "x");
	line(320, 0, 320, 480);
	outtextxy(310, 0, "y");
	outtextxy(280, 245, "(0,0)");

	setcolor(YELLOW);
	moveto(mat1[0][0], mat1[1][0]);
	for(i=0; i<n; i++){
			lineto(mat1[0][i], mat1[1][i]);
			moveto(mat1[0][i], mat1[1][i]);
			}
	lineto(mat1[0][0], mat1[1][0]);

	}

void yShearing(float mat2[][MAX], int n){
	int i, j, k;
	float tmat[MAX][MAX], tot[MAX][MAX];
	int sh_y;

	printf("\n Enter the Shearing value: ");
	scanf("%d", &sh_y);

	tmat[0][0] = 1;
	tmat[0][1] = 0;
	tmat[1][0] = sh_y;
	tmat[1][1] = 1;

	for(i=0; i<2; i++){
		for(j=0; j<n; j++){
			tot[i][j] = 0;
			for(k=0; k<2; k++){
				tot[i][j] = tot[i][j] + (tmat[i][k] * mat2[k][j]);
				}
			}
		}

	for(i=0; i<n; i++){
		tot[0][i] = 320 + tot[0][i];
		tot[1][i] = 240 - tot[1][i];
		}

	setcolor(LIGHTRED);
	moveto(tot[0][0], tot[1][0]);
	for(i=0; i<n; i++){
			lineto(tot[0][i], tot[1][i]);
			moveto(tot[0][i], tot[1][i]);
			}
	lineto(tot[0][0], tot[1][0]);
	}

void main(){
	int gd=DETECT, gm;
	initgraph(&gd, &gm,"\\tc");
	float mat1[MAX][MAX], mat2[MAX][MAX];
	int ch, n;
	while(1){

		clrscr();
		cleardevice();
		printf("\n SHEARING w.r.t y-Axis");
		printf("\n ~~~~~~~~~~~~~~~~~~~~~\n");
		printf("\n 1 -> LINE.");
		printf("\n 2 -> TRIANGLE.");
		printf("\n 3 -> RECTANGLE");
		printf("\n 4 -> Exit.");
		printf("\n Enter your choice: ");
		scanf("%d", &ch);
		clrscr();
		cleardevice();
		switch(ch){
			case 1:		// LINE.
				n=2;
				break;
			case 2:		// TRIANGLE.
				n=3;
				break;
			case 3:		// RECTANGLE.
				n=4;
				break;
			default:
				gotoxy(10, 10);
				printf(" Dev. By: Manoj Pandey.");
				gotoxy(15, 15);
				printf("MCA 3d Sem.");
				getch();
				closegraph();
				exit(1);
			} // end of switch.
		GetCords(mat1, mat2, n);	// Input of Coordinates.
		yShearing(mat2, n);	// Shearing and Displaying.
		getch();
		} // end of while.
	} // end of main.