#include<stdio.h> #include<GRAPHICS.h> #include<math.h> double radian(int val) { return (M_PI*val)/180; } void rotate(int x_c,int y_c,int a,int b,double *x_p,double *y_p,int degree) { double rad=radian(degree); *x_p=((a-x_c)*cos(rad))-((b-y_c)*sin(rad))+x_c; *y_p=((a-x_c)*sin(rad))+((b-y_c)*cos(rad))+y_c; } int main() { double x_c,x1,x2,x3,x4,a,b; double y_c,y1,y2,y3,y4; int degree; /* request auto detection */ int gdriver = DETECT, gmode, errorcode; /* initialize graphics mode */ initgraph(&gdriver, &gmode, "C:\\TurboC3\\BGI"); x_c=getmaxx()/2; y_c=getmaxy()/2; x1=x_c+50; y1=y_c-30; x2=x1+50; y2=y1; x3=x2; y3=y2-50; x4=x3-30; y4=y3-10; setcolor(YELLOW); line(x_c,y_c,x1,y1); setcolor(RED); line(x1,y1,x2,y2); setcolor(GREEN); line(x2,y2,x3,y3); setcolor(BLUE); line(x3,y3,x4,y4); degree=0; while(!kbhit()) { double c,d,e,f,g,h; /* Rotate Link-4 */ /* setcolor(BLUE); rotate(x3,y3,x4,y4,&a,&b,degree); degree+=150; if(degree>150) degree=0; line(x3,y3,a,b); delay(1000); setcolor(BLACK); line(x3,y3,a,b); */ /* Rotate Link-3 & Link-4 */ /* setcolor(GREEN); rotate(x2,y2,x3,y3,&a,&b,degree); line(x2,y2,a,b); setcolor(BLUE); rotate(x2,y2,x4,y4,&c,&d,degree); line(a,b,c,d); degree+=90; if(degree>90) degree=0; delay(1000); setcolor(BLACK); line(x2,y2,a,b); line(a,b,c,d); */ /* Rotate Link-2 & Link-3 & Link-4 */ setcolor(RED); rotate(x1,y1,x2,y2,&a,&b,degree); line(x1,y1,a,b); setcolor(GREEN); rotate(x1,y1,x3,y3,&c,&d,degree); line(a,b,c,d); setcolor(BLUE); rotate(x1,y1,x4,y4,&e,&f,degree); line(c,d,e,f); delay(1000); degree-=90; if(degree<-90) degree=0; setcolor(BLACK); line(x1,y1,a,b); line(a,b,c,d); line(c,d,e,f); /* Rotate Link-1,Link-2,Link-3 & Link-4 */ /* setcolor(YELLOW); rotate(x_c,y_c,x1,y1,&a,&b,degree); line(x_c,y_c,a,b); setcolor(RED); rotate(x_c,y_c,x2,y2,&c,&d,degree); line(a,b,c,d); setcolor(GREEN); rotate(x_c,y_c,x3,y3,&e,&f,degree); line(c,d,e,f); setcolor(BLUE); rotate(x_c,y_c,x4,y4,&g,&h,degree); line(e,f,g,h); delay(1000); degree-=90; if(degree<-90) degree=0; setcolor(BLACK); line(x_c,y_c,a,b); line(a,b,c,d); line(c,d,e,f); line(e,f,g,h); */ } getch(); return 0; }
Program To Rotate A Multi-Link Mechanism (Graphically) Along Any Joint
Subscribe to:
Posts (Atom)
No comments:
Post a Comment