Skip to content
Snippets Groups Projects
Commit fb20ee8b authored by opgrsankkar's avatar opgrsankkar
Browse files

Basic Fan

parent d176b4e1
No related branches found
No related tags found
No related merge requests found
fan.c 0 → 100644
/**
* rotating fan
*/
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
double rotatex(double x, double y, double angle, double pivotx, double pivoty){
return (x)*cos(angle) - (y)*sin(angle) + pivotx* (1-cos(angle)) + pivoty*(sin(angle));
// return (x - pivotx)*cos(angle) - (y - pivoty)*sin(angle) + pivotx;
}
double rotatey(double x, double y, double angle, double pivotx, double pivoty){
return (x)*sin(angle) + (y)*cos(angle) + pivoty* (1-cos(angle)) - pivotx*(sin(angle));
// return (x - pivotx)*sin(angle) - (y - pivoty)*cos(angle) + pivoty;
}
int kbhit()
{
struct timeval tv;
fd_set fds;
tv.tv_sec = 0;
tv.tv_usec = 0;
FD_ZERO(&fds);
FD_SET(STDIN_FILENO, &fds); //STDIN_FILENO is 0
select(STDIN_FILENO+1, &fds, NULL, NULL, &tv);
return FD_ISSET(STDIN_FILENO, &fds);
}
int main()
{
/* request autodetection */
int gdriver = DETECT, gmode, errorcode;
/* Local Variables */
double cx, cy;
double l1x1, l1y1, l1x2, l1y2;
double l1angle = 120 / 180.0 * 3.14;
double l2angle = 240 / 180.0 * 3.14;
double rotate_angle = 2 / 180.0 * 3.14;
int speed=1;
int i=0;
/* initialize graphics and local variables */
initgraph(&gdriver, &gmode, "");
cx = getmaxx() / 2;
cy = getmaxy() / 2;
l1x1 = cx;
l1y1 = cy - 20;
l1x2 = cx;
l1y2 = cy - 90;
while (!kbhit()) {
i++;
if(i>=60){
l1x1 = cx;
l1y1 = cy - 20;
l1x2 = cx;
l1y2 = cy - 90;
i=0;
}
circle((int)cx, (int)cy, 20);
line((int)l1x1, (int)l1y1, (int)l1x2,(int) l1y2);
line(
(int)rotatex(l1x1, l1y1, l1angle, cx, cy),
(int)rotatey(l1x1, l1y1, l1angle, cx, cy),
(int)rotatex(l1x2, l1y2, l1angle, cx, cy),
(int)rotatey(l1x2, l1y2, l1angle, cx, cy)
);
line(
(int)rotatex(l1x1, l1y1, l2angle, cx, cy),
(int)rotatey(l1x1, l1y1, l2angle, cx, cy),
(int)rotatex(l1x2, l1y2, l2angle, cx, cy),
(int)rotatey(l1x2, l1y2, l2angle, cx, cy)
);
/* prepare for next frame */
delay(15);
cleardevice();
l1x1 = rotatex(l1x1, l1y1, rotate_angle, cx, cy);
l1y1 = rotatey(l1x1, l1y1, rotate_angle, cx, cy);
l1x2 = rotatex(l1x2, l1y2, rotate_angle, cx, cy);
l1y2 = rotatey(l1x2, l1y2, rotate_angle, cx, cy);
}
/* clean up */
closegraph();
return 0;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment