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:
#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); } }
Categories: Cpp Graphics
Analog Clock Cpp, Cpp, Graphics in Cpp
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.
Categories: Cpp Graphics
Cpp, Graphics in Cpp, SCALING of LINE, SCALING of RECTANGLE, SCALING of TRIANGLE
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.