Robot Work Envelope According to Robot Arm Configuration

#include<stdio.h>
#include<GRAPHICS.h>
#include<math.h>

double L1=50;
double L2=70;

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,e,f;
   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]+L1;
   ly[1]=ly[0];

   lx[2]=lx[1]+L2;
   ly[2]=ly[0];

   degree1=0,degree2=0;
   setfillstyle(SOLID_FILL, RED);
   c=lx[1];
   d=ly[1];
   e=lx[2];
   f=ly[2];
     while(degree1<=180)
     {
       setcolor(BLUE);
       line(lx[0],ly[0],c,d);
       a=lx[2];
       b=ly[2];

      while(degree2<=195)
      {
  setcolor(MAGENTA);
  line(c,d,a,b);
  setcolor(RED);
  circle(a,b,3);
  floodfill(a,b,RED);
  rotate(c,d,e,f,&a,&b,(0-degree2));
  degree2+=15;
  delay(500);

      }
      degree1+=15;

      rotate(lx[0],ly[0],lx[1],ly[1],&c,&d,(0-degree1));

      rotate(lx[0],ly[0],lx[2],ly[2],&e,&f,(0-degree1));

      degree2=0;
     }
   getch();

   return 0;
   }




No comments: