Animate solar system using C graphics
#include <conio.h>
#include <graphics.h>
#include <dos.h>
#include <math.h>
/* manipulates the position of planets on the orbit */
void planetMotion(int xrad, int yrad, int midx, int midy, int x[60], int y[60]) {
int i, j = 0;
/* positions of planets in their corresponding orbits */
for (i = 360; i > 0; i = i - 6) {
x[j] = midx - (xrad * cos((i * 3.14) / 180));
y[j++] = midy - (yrad * sin((i * 3.14) / 180));
}
return;
}
int main() {
/* request auto detection */
int gdriver = DETECT, gmode, err;
int i = 0, midx, midy;
int xrad[9], yrad[9], x[9][60], y[9][60];
int pos[9], planet[9], tmp;
/* initialize graphic mode */
initgraph(&gdriver, &gmode, "C:/TURBOC3/BGI");
err = graphresult();
if (err != grOk) {
/* error occurred */
printf("Graphics Error: %s",
grapherrormsg(err));
return 0;
}
/* mid positions at x and y-axis */
midx = getmaxx() / 2;
midy = getmaxy() / 2;
/* manipulating radius of all 9 planets */
planet[0] = 7;
for (i = 1; i < 9; i++) {
planet[i] = planet[i - 1] + 1;
}
/* offset position for the planets on their corresponding orbit */
for (i = 0; i < 9; i++) {
pos[i] = i * 6;
}
/* orbits for all 9 planets */
xrad[0] = 60, yrad[0] = 30;
for (i = 1; i < 9; i++) {
xrad[i] = xrad[i - 1] + 30;
yrad[i] = yrad[i - 1] + 15;
}
/* positions of planets on their corresponding orbits */
for (i = 0; i < 9; i++) {
planetMotion(xrad[i], yrad[i], midx, midy, x[i], y[i]);
}
while (!kbhit()) {
/* drawing 9 orbits */
setcolor(WHITE);
for (i = 0; i < 9; i++) {
ellipse(midx, midy, 0, 360, xrad[i], yrad[i]);
}
/* sun at the mid of the solar system */
setcolor(YELLOW);
setfillstyle(SOLID_FILL, YELLOW);
circle(midx, midy, 20);
floodfill(midx, midy, YELLOW);
/* mercury in first orbit */
setcolor(CYAN);
setfillstyle(SOLID_FILL, CYAN);
pieslice(x[0][pos[0]], y[0][pos[0]], 0, 360, planet[0]);
/* venus in second orbit */
setcolor(GREEN);
setfillstyle(SOLID_FILL, GREEN);
pieslice(x[1][pos[1]], y[1][pos[1]], 0, 360, planet[1]);
/* earth in third orbit */
setcolor(BLUE);
setfillstyle(SOLID_FILL, BLUE);
pieslice(x[2][pos[2]], y[2][pos[2]], 0, 360, planet[2]);
/* mars in fourth orbit */
setcolor(RED);
setfillstyle(SOLID_FILL, RED);
pieslice(x[3][pos[3]], y[3][pos[3]], 0, 360, planet[3]);
/* jupiter in fifth orbit */
setcolor(BROWN);
setfillstyle(SOLID_FILL, BROWN);
pieslice(x[4][pos[4]], y[4][pos[4]], 0, 360, planet[4]);
/* saturn in sixth orbit */
setcolor(LIGHTGRAY);
setfillstyle(SOLID_FILL, LIGHTGRAY);
pieslice(x[5][pos[5]], y[5][pos[5]], 0, 360, planet[5]);
/* uranus in sevth orbit */
setcolor(BROWN);
setfillstyle(SOLID_FILL, BROWN);
pieslice(x[6][pos[6]], y[6][pos[6]], 0, 360, planet[6]);
/* neptune in eigth orbit */
setcolor(LIGHTBLUE);
setfillstyle(SOLID_FILL, LIGHTBLUE);
pieslice(x[7][pos[7]], y[7][pos[7]], 0, 360, planet[7]);
/* pluto in ninth orbit */
setcolor(LIGHTRED);
setfillstyle(SOLID_FILL, LIGHTRED);
pieslice(x[8][pos[8]], y[8][pos[8]], 0, 360, planet[8]);
/* checking for one complete rotation */
for (i = 0; i < 9; i++) {
if (pos[i] <= 0) {
pos[i] = 59;
} else {
pos[i] = pos[i] - 1;
}
}
/* sleep for 100 milliseconds */
delay(100);
/* clears graphic screen */
cleardevice();
}
/* deallocate memory allocated for graphic screen */
closegraph();
return 0;
}
Output: (Solar system animation using C graphics)
Awesome!
ReplyDeleteawesome
ReplyDeleteIt has been simply incredibly generous with you to provide openly what exactly many individuals would’ve marketed for an eBook to end up making some cash for their end, primarily given that you could have tried it in the event you wanted.
ReplyDeleteData Science Interview Questions
Angular JS Interview Questions
Big Data Training in Velachery
AWS Certified Developer
Best Resource of Learning Devops
Blueprism Interview Questions
Automation Anywhere Interview Questions
The program is showing an error called as linker error.
ReplyDeletePlzz help
Go in options ..in options go in linker than library than select graphic
DeleteNicely Done
ReplyDeleteI want to display name of planets in output so how I will do it
ReplyDeleteUse outtextxy
DeleteNice article that you have shared here. Thanks for sharing this valuable article I like your way to described your service here. If anyone interested to know more visit here:
ReplyDeleteSydney solar power
5kw solar power system Sydney
Solar renewable energy Sydney
Quality solar panels Sydney
Cheap solar Sydney
Solar panel installation Sydney
Solar Installation Rebate Sydney
Clean energy council installers Sydney
cheap solar panel Sydney
solar energy Sydney
Commercial Solar Panels Sydney
Quality solar Sydney
Glad to visit this blog. Very Informative blog!
ReplyDeleteCommercial Solar Panels Sydney
Solar Installation Rebate Sydney
It shows error
ReplyDeletePlzz give right program plzz
ReplyDeleteplease give me project report
ReplyDeleteHow to reduce its size
ReplyDeleteSir I want program for ising model, random walk & 1 D box
ReplyDeleteThe Le_Meridian Funding Service went above and beyond their requirements to assist me with my loan which i used expand my pharmacy business,They were friendly, professional, and absolute gems to work with.I will recommend anyone looking for loan to contact. Email..lfdsloans@lemeridianfds.com Or lfdsloans@outlook.com.WhatsApp ... + 19893943740.
ReplyDeleteWill this code contain any error... Please provide error free program
ReplyDeleteCould you please list the concepts used in here??
ReplyDeleteThis comment has been removed by the author.
ReplyDelete