#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;
}
Robot Work Envelope According to Robot Arm Configuration
Subscribe to:
Posts (Atom)

No comments:
Post a Comment