Rotation Of Both Two Linked Arm Simultaneously of the Robot


#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 lx[3],ly[3],a,b,c,d; int degree1,degree2; /* request auto detection */ int gdriver = DETECT, gmode, errorcode; /* initialize graphics mode */ initgraph(&gdriver, &gmode, "C:\\TurboC3\\BGI"); lx[0]=getmaxx()/2; ly[0]=getmaxy()/2; lx[1]=lx[0]+110; ly[1]=ly[0]; lx[2]=lx[1]; ly[2]=ly[1]-50; degree1=5,degree2=30; while(!kbhit()) { rotate(lx[0],ly[0],lx[1],ly[1],&a,&b,degree1); lx[1]=a; ly[1]=b; rotate(lx[0],ly[0],lx[2],ly[2],&a,&b,degree1); lx[2]=a; ly[2]=b; setcolor(BLUE); line(lx[0],ly[0],lx[1],ly[1]); rotate(lx[1],ly[1],lx[2],ly[2],&a,&b,degree2); lx[2]=a; ly[2]=b; setcolor(RED); line(lx[1],ly[1],lx[2],ly[2]); delay(1000); setcolor(BLACK); line(lx[0],ly[0],lx[1],ly[1]); line(lx[1],ly[1],lx[2],ly[2]); // degree1+=10; // degree2+=30; // if(degree1>360) // degree1=0; // if(degree2>360) // degree2=0; } getch(); return 0; }

Output :





No comments: