Programa en C para MS-DOS que muestra en modo gráfico un brazo robótico en 3D.
Un código bastante interesante basado en manejo de vectores 3D representados en 2D. Simula un brazo robot y se controla por el teclado.
El sistema está completo en este pequeño código fuente, no requiere de ningún módulo o librerÃa extra para controlar la tercera dimensión.
Son puros vectores y matemáticas simples aplicadas. La base de todo el programa el la fórmula para rotar un punto en el espacio cartesiano. Muy simple. aparentemente.
Si quieres ver el ejecutable primero, bájatelo de [liga a="http://elticus.com/descargas/BRAZO.zip"]AQUÃ.
Está libre de virus según mi Antivirus y no es ningún Spyware, ya que yo mismo lo compilé desde el fuente.
Como funciona en el código verán una serie de lÃneas como la siguiente:
Xa[1]=0; Ya[1]=0; Za[1]=0; Xa2[1]=10; Ya2[1]=30; Za2[1]=10; |
que representan una lÃnea en el espacio tridimensional, XYZ inicial y XYZ final. Todo lo demas son transformaciones de rotacion y desplazamiento.
Está muy Profusamente comentado, pero en realidad no está tan dificil, a ver si mas adelante me dedico a organizarlo o si alguien me hace el favor, mandelo al correo de root de ElTicus para que lo actualicen.
Para controlar el movimiento del brazo, utiliza las siguientes teclas: w y s Para mover la base e y d Para mover el codo r y f Para mover la muñeca t y g Para mover la pinza u y j Para mover todas las coyunturas a la vez i y k Movimiento proporcional Q y A (mayúsculas) Giro en Tercera Dimensión
[imagen en="archivos/brazo.gif"]
Código fuente completo
#include <conio.h> #include <stdio.h> #include <graphics.h> #include <stdlib.h> #include <math.h>
int i;
void IniciaGraficos() { int gdriver = DETECT, gmode, errorcode; initgraph(&gdriver, &gmode, ""); errorcode = graphresult(); if (errorcode != grOk) /* an error occurred */ { printf("Graphics error: %s\n", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); /* return with error code */ } }
const Ang=1.0,Escala=2.5;
void PintaLinea3d(float X1,float Y1,float Z1,float X2,float Y2,float Z2) { float Xp1,Yp1,Xp2,Yp2; Xp1=X1; Yp1=Y1; Xp2=X2; Yp2=Y2; line(620/2+Xp1,400-Yp1,620/2+Xp2,400-Yp2); }
void GiraXY(int x,int y,float*Ox,float*Oy,int n,float Grados) { float nx,ny; for(i=1;i<=n;i++) { nx=x+(Ox[ i ]-x)*cos(Grados)-(Oy[ i ]-y)*sin(Grados); ny=y+(Ox[ i ]-x)*sin(Grados)+(Oy[ i ]-y)*cos(Grados); Ox[ i ]=nx; Oy[ i ]=ny; } }
void DespliegaOBJETO(float*Ox,float*Oy,float*Oz,float*Oxi,float*Oyi,float*Ozi,int n) { for(i=1;i<=n;i++) { PintaLinea3d(Ox[ i ]*Escala,Oy[ i ]*Escala,Oz[ i ]*Escala, Oxi[ i ]*Escala,Oyi[ i ]*Escala,Ozi[ i ]*Escala); } }
void CopiaAtemporal(float*x,float*y,float*z,float*xi,float*yi,float*zi, float*xt,float*yt,float*zt,float*xti,float*yti,float*zti,int n) { for(i=1;i<=n;i++) { xt[ i ]=x[ i ]; yt[ i ]=y[ i ]; zt[ i ]=z[ i ]; xti[ i ]=xi[ i ]; yti[ i ]=yi[ i ]; zti[ i ]=zi[ i ]; } }
float Xa[20],Ya[20],Za[20],Xa2[20],Ya2[20],Za2[20]; float Xb[20],Yb[20],Zb[20],Xb2[20],Yb2[20],Zb2[20]; float Xc[20],Yc[20],Zc[20],Xc2[20],Yc2[20],Zc2[20]; float Xd[20],Yd[20],Zd[20],Xd2[20],Yd2[20],Zd2[20]; float Xe1[20],Ye1[20],Ze1[20],Xe12[20],Ye12[20],Ze12[20]; float Xe2[20],Ye2[20],Ze2[20],Xe22[20],Ye22[20],Ze22[20];
float Xta[20],Yta[20],Zta[20],Xta2[20],Yta2[20],Zta2[20]; float Xtb[20],Ytb[20],Ztb[20],Xtb2[20],Ytb2[20],Ztb2[20]; float Xtc[20],Ytc[20],Ztc[20],Xtc2[20],Ytc2[20],Ztc2[20]; float Xtd[20],Ytd[20],Ztd[20],Xtd2[20],Ytd2[20],Ztd2[20]; float Xte1[20],Yte1[20],Zte1[20],Xte12[20],Yte12[20],Zte12[20]; float Xte2[20],Yte2[20],Zte2[20],Xte22[20],Yte22[20],Zte22[20];
float Xtta[20],Ytta[20],Ztta[20],Xtta2[20],Ytta2[20],Ztta2[20]; float Xttb[20],Yttb[20],Zttb[20],Xttb2[20],Yttb2[20],Zttb2[20]; float Xttc[20],Yttc[20],Zttc[20],Xttc2[20],Yttc2[20],Zttc2[20]; float Xttd[20],Yttd[20],Zttd[20],Xttd2[20],Yttd2[20],Zttd2[20]; float Xtte1[20],Ytte1[20],Ztte1[20],Xtte12[20],Ytte12[20],Ztte12[20]; float Xtte2[20],Ytte2[20],Ztte2[20],Xtte22[20],Ytte22[20],Ztte22[20];
float Lx1[20],Ly1[20],Lz1[20],Lx2[20],Ly2[20],Lz2[20]; float AnguloA,AnguloB,AnguloC,AnguloD,AnguloE;
int mA,mB,mC,mD,mE;
char ch;
void main() { Xa[1]=0; Ya[1]=0; Za[1]=0; Xa2[1]=10; Ya2[1]=30;Za2[1]=10; Xa[2]=10;Ya[2]=30;Za[2]=10; Xa2[2]=30;Ya2[2]=30;Za2[2]=10; Xa[3]=30;Ya[3]=30;Za[3]=10; Xa2[3]=40;Ya2[3]=0; Za2[3]=0; Xa[4]=40;Ya[4]=0; Za[4]=0; Xa2[4]=0; Ya2[4]=0; Za2[4]=0;
Xa[5]=0; Ya[5]=0; Za[5]=40; Xa2[5]=10;Ya2[5]=30;Za2[5]=30; Xa[6]=10;Ya[6]=30;Za[6]=30; Xa2[6]=30;Ya2[6]=30;Za2[6]=30; Xa[7]=30;Ya[7]=30;Za[7]=30; Xa2[7]=40;Ya2[7]=0; Za2[7]=40; Xa[8]=40;Ya[8]=0; Za[8]=40; Xa2[8]=0; Ya2[8]=0; Za2[8]=40;
Xa[9]=0; Ya[9]=0; Za[9]=0; Xa2[9]=0; Ya2[9]=0; Za2[9]=40; Xa[10]=10;Ya[10]=30;Za[10]=10;Xa2[10]=10;Ya2[10]=30;Za2[10]=30; Xa[11]=30;Ya[11]=30;Za[11]=10;Xa2[11]=30;Ya2[11]=30;Za2[11]=30; Xa[12]=40;Ya[12]=0; Za[12]=0; Xa2[12]=40;Ya2[12]=0; Za2[12]=40;
Xb[1]=10;Yb[1]=30;Zb[1]=10; Xb2[1]=10; Yb2[1]=80;Zb2[1]=10; Xb[2]=10;Yb[2]=80;Zb[2]=10; Xb2[2]=30;Yb2[2]=80;Zb2[2]=10; Xb[3]=30;Yb[3]=80;Zb[3]=10; Xb2[3]=30;Yb2[3]=30;Zb2[3]=10; Xb[4]=30;Yb[4]=30;Zb[4]=10; Xb2[4]=10; Yb2[4]=30;Zb2[4]=10;
Xb[5]=10;Yb[5]=30;Zb[5]=30; Xb2[5]=10; Yb2[5]=80;Zb2[5]=30; Xb[6]=10;Yb[6]=80;Zb[6]=30; Xb2[6]=30;Yb2[6]=80;Zb2[6]=30; Xb[7]=30;Yb[7]=80;Zb[7]=30; Xb2[7]=30;Yb2[7]=30;Zb2[7]=30; Xb[8]=30;Yb[8]=30;Zb[8]=30; Xb2[8]=10; Yb2[8]=30;Zb2[8]=30;
Xb[9]=10; Yb[9]=30; Zb[9]=10; Xb2[9]=10; Yb2[9]=30; Zb2[9]=30; Xb[10]=10;Yb[10]=80;Zb[10]=10; Xb2[10]=10;Yb2[10]=80;Zb2[10]=30; Xb[11]=30;Yb[11]=80;Zb[11]=10; Xb2[11]=30;Yb2[11]=80;Zb2[11]=30; Xb[12]=30;Yb[12]=30;Zb[12]=10; Xb2[12]=30;Yb2[12]=30;Zb2[12]=30;
Xc[1]=10;Yc[1]=80;Zc[1]=10; Xc2[1]=10; Yc2[1]=140;Zc2[1]=10; Xc[2]=10;Yc[2]=140;Zc[2]=10; Xc2[2]=30;Yc2[2]=140;Zc2[2]=10; Xc[3]=30;Yc[3]=140;Zc[3]=10; Xc2[3]=30;Yc2[3]=80;Zc2[3]=10; Xc[4]=30;Yc[4]=80;Zc[4]=10; Xc2[4]=10; Yc2[4]=80;Zc2[4]=10;
Xc[5]=10;Yc[5]=80;Zc[5]=30; Xc2[5]=10; Yc2[5]=140;Zc2[5]=30; Xc[6]=10;Yc[6]=140;Zc[6]=30; Xc2[6]=30;Yc2[6]=140;Zc2[6]=30; Xc[7]=30;Yc[7]=140;Zc[7]=30; Xc2[7]=30;Yc2[7]=80;Zc2[7]=30; Xc[8]=30;Yc[8]=80;Zc[8]=30; Xc2[8]=10; Yc2[8]=80;Zc2[8]=30;
Xc[9]=10; Yc[9]=80; Zc[9]=10; Xc2[9]=10; Yc2[9]=80; Zc2[9]=30; Xc[10]=10;Yc[10]=140;Zc[10]=10; Xc2[10]=10; Yc2[10]=140;Zc2[10]=30; Xc[11]=30;Yc[11]=140;Zc[11]=10; Xc2[11]=30;Yc2[11]=140;Zc2[11]=30; Xc[12]=30;Yc[12]=80;Zc[12]=10; Xc2[12]=30;Yc2[12]=80;Zc2[12]=30;
Xd[1]=10;Yd[1]=140;Zd[1]=10; Xd2[1]=10; Yd2[1]=150;Zd2[1]=10; Xd[2]=10;Yd[2]=150;Zd[2]=10; Xd2[2]=30;Yd2[2]=150;Zd2[2]=10; Xd[3]=30;Yd[3]=150;Zd[3]=10; Xd2[3]=30;Yd2[3]=140;Zd2[3]=10; Xd[4]=30;Yd[4]=140;Zd[4]=10; Xd2[4]=10; Yd2[4]=140;Zd2[4]=10;
Xd[5]=10;Yd[5]=140;Zd[5]=30; Xd2[5]=10; Yd2[5]=150;Zd2[5]=30; Xd[6]=10;Yd[6]=150;Zd[6]=30; Xd2[6]=30;Yd2[6]=150;Zd2[6]=30; Xd[7]=30;Yd[7]=150;Zd[7]=30; Xd2[7]=30;Yd2[7]=140;Zd2[7]=30; Xd[8]=30;Yd[8]=140;Zd[8]=30; Xd2[8]=10; Yd2[8]=140;Zd2[8]=30;
Xd[9]=10; Yd[9]=140; Zd[9]=10; Xd2[9]=10; Yd2[9]=140; Zd2[9]=30; Xd[10]=10;Yd[10]=150;Zd[10]=10; Xd2[10]=10; Yd2[10]=150;Zd2[10]=30; Xd[11]=30;Yd[11]=150;Zd[11]=10; Xd2[11]=30;Yd2[11]=150;Zd2[11]=30; Xd[12]=30;Yd[12]=140;Zd[12]=10; Xd2[12]=30;Yd2[12]=140;Zd2[12]=30;
Xe1[1]=10;Ye1[1]=150;Ze1[1]=10; Xe12[1]=10; Ye12[1]=190;Ze12[1]=10; Xe1[2]=10;Ye1[2]=190;Ze1[2]=10; Xe12[2]=20;Ye12[2]=190;Ze12[2]=10; Xe1[3]=15;Ye1[3]=185;Ze1[3]=10; Xe12[3]=15;Ye12[3]=150;Ze12[3]=10; Xe1[4]=15;Ye1[4]=150;Ze1[4]=10; Xe12[4]=10; Ye12[4]=150;Ze12[4]=10;
Xe1[5]=10;Ye1[5]=150;Ze1[5]=30; Xe12[5]=10; Ye12[5]=190;Ze12[5]=30; Xe1[6]=10;Ye1[6]=190;Ze1[6]=30; Xe12[6]=20;Ye12[6]=190;Ze12[6]=30; Xe1[7]=15;Ye1[7]=185;Ze1[7]=30; Xe12[7]=15;Ye12[7]=150;Ze12[7]=30; Xe1[8]=15;Ye1[8]=150;Ze1[8]=30; Xe12[8]=10; Ye12[8]=150;Ze12[8]=30;
Xe1[9]=10; Ye1[9]=150; Ze1[9]=10; Xe12[9]=10; Ye12[9]=150; Ze12[9]=30; Xe1[10]=10;Ye1[10]=190;Ze1[10]=10; Xe12[10]=10; Ye12[10]=190;Ze12[10]=30; Xe1[11]=20;Ye1[11]=190;Ze1[11]=10; Xe12[11]=20;Ye12[11]=190;Ze12[11]=30; Xe1[12]=15;Ye1[12]=150;Ze1[12]=10; Xe12[12]=15;Ye12[12]=150;Ze12[12]=30;
Xe1[13]=15;Ye1[13]=185;Ze1[13]=10; Xe12[13]=20;Ye12[13]=190;Ze12[13]=10; Xe1[14]=15;Ye1[14]=185;Ze1[14]=30; Xe12[14]=20;Ye12[14]=190;Ze12[14]=30; Xe1[15]=15;Ye1[15]=185;Ze1[15]=30; Xe12[15]=15;Ye12[15]=185;Ze12[15]=10;
Xe2[1]=25;Ye2[1]=150;Ze2[1]=10; Xe22[1]=25;Ye22[1]=185;Ze22[1]=10; Xe2[2]=20;Ye2[2]=190;Ze2[2]=10; Xe22[2]=30;Ye22[2]=190;Ze22[2]=10; Xe2[3]=30;Ye2[3]=190;Ze2[3]=10; Xe22[3]=30;Ye22[3]=150;Ze22[3]=10; Xe2[4]=30;Ye2[4]=150;Ze2[4]=10; Xe22[4]=25;Ye22[4]=150;Ze22[4]=10;
Xe2[5]=25;Ye2[5]=150;Ze2[5]=30; Xe22[5]=25;Ye22[5]=185;Ze22[5]=30; Xe2[6]=20;Ye2[6]=190;Ze2[6]=30; Xe22[6]=30;Ye22[6]=190;Ze22[6]=30; Xe2[7]=30;Ye2[7]=190;Ze2[7]=30; Xe22[7]=30;Ye22[7]=150;Ze22[7]=30; Xe2[8]=30;Ye2[8]=150;Ze2[8]=30; Xe22[8]=25;Ye22[8]=150;Ze22[8]=30;
Xe2[9]=25; Ye2[9]=150; Ze2[9]=10; Xe22[9]=25; Ye22[9]=150; Ze22[9]=30; Xe2[10]=20;Ye2[10]=190;Ze2[10]=10; Xe22[10]=20; Ye22[10]=190;Ze22[10]=30; Xe2[11]=30;Ye2[11]=190;Ze2[11]=10; Xe22[11]=30;Ye22[11]=190;Ze22[11]=30; Xe2[12]=30;Ye2[12]=150;Ze2[12]=10; Xe22[12]=30;Ye22[12]=150;Ze22[12]=30;
Xe2[13]=25;Ye2[13]=185;Ze2[13]=10; Xe22[13]=25;Ye22[13]=185;Ze22[13]=30; Xe2[14]=25;Ye2[14]=185;Ze2[14]=10; Xe22[14]=20;Ye22[14]=190;Ze22[14]=10; Xe2[15]=25;Ye2[15]=185;Ze2[15]=30; Xe22[15]=20;Ye22[15]=190;Ze22[15]=30;
IniciaGraficos(); setbkcolor(1);
AnguloA=0.0; AnguloB=0.0; AnguloC=0.0; AnguloD=0.0; AnguloE=0.0;
CopiaAtemporal(Xa,Ya,Za,Xa2,Ya2,Za2, Xta,Yta,Zta,Xta2,Yta2,Zta2,12); CopiaAtemporal(Xb,Yb,Zb,Xb2,Yb2,Zb2, Xtb,Ytb,Ztb,Xtb2,Ytb2,Ztb2,12); CopiaAtemporal(Xc,Yc,Zc,Xc2,Yc2,Zc2, Xtc,Ytc,Ztc,Xtc2,Ytc2,Ztc2,12); CopiaAtemporal(Xd,Yd,Zd,Xd2,Yd2,Zd2, Xtd,Ytd,Ztd,Xtd2,Ytd2,Ztd2,12); CopiaAtemporal(Xe1,Ye1,Ze1,Xe12,Ye12,Ze12, Xte1,Yte1,Zte1,Xte12,Yte12,Zte12,15); CopiaAtemporal(Xe2,Ye2,Ze2,Xe22,Ye22,Ze22, Xte2,Yte2,Zte2,Xte22,Yte22,Zte22,15);
mA=1;
do{
Lx1[1]=Xtb[4];Ly1[1]=Ytb[4];Lz1[1]=Ztb[4]; Lx2[1]=Xta[11];Ly2[1]=Yta[11];Lz2[1]=Zta[11];
Lx1[2]=Xtb2[7];Ly1[2]=Ytb2[7];Lz1[2]=Ztb2[7]; Lx2[2]=Xta2[6];Ly2[2]=Yta2[6];Lz2[2]=Zta2[6];
Lx1[3]=Xtb2[6];Ly1[3]=Ytb2[6];Lz1[3]=Ztb2[6]; Lx2[3]=Xtc2[7];Ly2[3]=Ytc2[7];Lz2[3]=Ztc2[7];
Lx1[4]=Xtb2[2];Ly1[4]=Ytb2[2];Lz1[4]=Ztb2[2]; Lx2[4]=Xtc2[3];Ly2[4]=Ytc2[3];Lz2[4]=Ztc2[3];
Lx1[5]=Xtc2[2];Ly1[5]=Ytc2[2];Lz1[5]=Ztc2[2]; Lx2[5]=Xtd2[3];Ly2[5]=Ytd2[3];Lz2[5]=Ztd2[3];
Lx1[6]=Xtc2[6];Ly1[6]=Ytc2[6];Lz1[6]=Ztc2[6]; Lx2[6]=Xtd2[7];Ly2[6]=Ytd2[7];Lz2[6]=Ztd2[7];
setcolor (10); DespliegaOBJETO(Lx1,Ly1,Lz1,Lx2,Ly2,Lz2,6); setcolor (13); DespliegaOBJETO(Xte1,Yte1,Zte1,Xte12,Yte12,Zte12,15); DespliegaOBJETO(Xte2,Yte2,Zte2,Xte22,Yte22,Zte22,15); setcolor (5); DespliegaOBJETO(Xtd,Ytd,Ztd,Xtd2,Ytd2,Ztd2,12); setcolor (14); DespliegaOBJETO(Xtb,Ytb,Ztb,Xtb2,Ytb2,Ztb2,12); DespliegaOBJETO(Xtc,Ytc,Ztc,Xtc2,Ytc2,Ztc2,12); setcolor (15); DespliegaOBJETO(Xta,Yta,Zta,Xta2,Yta2,Zta2,12);
mA=0; mB=0; mC=0; mD=0; mE=0;
do{ ch=getch(); switch(ch) { case 'A': { AnguloA=AnguloA+0.157;mA=1;}break; case 'Q': { AnguloA=AnguloA-0.157;mA=1;}break;
case 'j': { if(AnguloB<1.4){ AnguloB=AnguloB+0.1;mB=1;} if(AnguloC<1.6){ AnguloC=AnguloC+0.1;mC=1;} if(AnguloD<2.0){ AnguloD=AnguloD+0.1;mD=1;} }break; case 'u': { if(AnguloB>0.01){ AnguloB=AnguloB-0.1;mB=1;} if(AnguloC>0.01){ AnguloC=AnguloC-0.1;mC=1;} if(AnguloD>0.01){ AnguloD=AnguloD-0.1;mD=1;} }break; case 'i': { if(AnguloB>0.01) { AnguloB=AnguloB-0.1;mB=1; if(AnguloC<1.6){ AnguloC=AnguloC+0.1;mC=1;} else if(AnguloD<2.0){ AnguloD=AnguloD+0.1;mD=1;} } else if(AnguloC>0.01) { AnguloC=AnguloC-0.1;mC=1; if(AnguloD<2.0) { AnguloD=AnguloD+0.1;mD=1;} } else if(AnguloD>0.01){ AnguloD=AnguloD-0.1;mD=1;} }break; case 'k': { if(AnguloB<1.4) { AnguloB=AnguloB+0.1;mB=1; if(AnguloC>0.01){ AnguloC=AnguloC-0.1;mC=1;} else if(AnguloD>0.01){ AnguloD=AnguloD-0.1;mD=1;} } else if(AnguloC<1.6) { AnguloC=AnguloC+0.1;mC=1; if(AnguloD>0.01){ AnguloD=AnguloD-0.1;mD=1;} } else if(AnguloD<2.0){ AnguloD=AnguloD+0.1;mD=1;} }break;
case 's': if(AnguloB<1.4){ AnguloB=AnguloB+0.1;mB=1;}break; case 'w': if(AnguloB>0.01){ AnguloB=AnguloB-0.1;mB=1;}break; case 'd': if(AnguloC<1.6){ AnguloC=AnguloC+0.1;mC=1;}break; case 'e': if(AnguloC>0.01){ AnguloC=AnguloC-0.1;mC=1;}break; case 'f': if(AnguloD<2.0){ AnguloD=AnguloD+0.1;mD=1;}break; case 'r': if(AnguloD>0.01){ AnguloD=AnguloD-0.1;mD=1;}break; case 'g': if(AnguloE<1.0){ AnguloE=AnguloE+0.1;mE=1;}break; case 't': if(AnguloE>0.01){ AnguloE=AnguloE-0.1;mE=1;}break; } if(ch==27)break; }while(kbhit()||(!mA&&!mB&&!mC&&!mD&&!mE));
CopiaAtemporal(Xta,Yta,Zta,Xta2,Yta2,Zta2, Xtta ,Ytta,Ztta,Xtta2,Ytta2,Ztta2,12); CopiaAtemporal(Xtb,Ytb,Ztb,Xtb2,Ytb2,Ztb2, Xttb ,Yttb,Zttb,Xttb2,Yttb2,Zttb2,12); CopiaAtemporal(Xtc,Ytc,Ztc,Xtc2,Ytc2,Ztc2, Xttc ,Yttc,Zttc,Xttc2,Yttc2,Zttc2,12); CopiaAtemporal(Xtd,Ytd,Ztd,Xtd2,Ytd2,Ztd2, Xttd ,Yttd,Zttd,Xttd2,Yttd2,Zttd2,12); CopiaAtemporal(Xte1,Yte1,Zte1,Xte12,Yte12,Zte12, Xtte1,Ytte1,Ztte1,Xtte12,Ytte12,Ztte12,15); CopiaAtemporal(Xte2,Yte2,Zte2,Xte22,Yte22,Zte22, Xtte2,Ytte2,Ztte2,Xtte22,Ytte22,Ztte22,15);
CopiaAtemporal(Xa,Ya,Za,Xa2,Ya2,Za2, Xta,Yta,Zta,Xta2,Yta2,Zta2,12); CopiaAtemporal(Xb,Yb,Zb,Xb2,Yb2,Zb2, Xtb,Ytb,Ztb,Xtb2,Ytb2,Ztb2,12); CopiaAtemporal(Xc,Yc,Zc,Xc2,Yc2,Zc2, Xtc,Ytc,Ztc,Xtc2,Ytc2,Ztc2,12); CopiaAtemporal(Xd,Yd,Zd,Xd2,Yd2,Zd2, Xtd,Ytd,Ztd,Xtd2,Ytd2,Ztd2,12); CopiaAtemporal(Xe1,Ye1,Ze1,Xe12,Ye12,Ze12, Xte1,Yte1,Zte1,Xte12,Yte12,Zte12,15); CopiaAtemporal(Xe2,Ye2,Ze2,Xe22,Ye22,Ze22, Xte2,Yte2,Zte2,Xte22,Yte22,Zte22,15);
//{Mano} GiraXY(10,150,Xte1,Yte1,15,AnguloE);GiraXY(10,150,Xte12,Yte12,15,AnguloE); GiraXY(30,150,Xte2,Yte2,15,-AnguloE);GiraXY(30,150,Xte22,Yte22,15,-AnguloE); //{Mu¤eca dobla} GiraXY(10,140,Xtd,Ytd,12,AnguloD); GiraXY(10,140,Xtd2,Ytd2,12,AnguloD); GiraXY(10,140,Xte1,Yte1,15,AnguloD);GiraXY(10,140,Xte12,Yte12,15,AnguloD); GiraXY(10,140,Xte2,Yte2,15,AnguloD);GiraXY(10,140,Xte22,Yte22,15,AnguloD);{} //{codo} GiraXY(10,80,Xtc,Ytc,12,AnguloC); GiraXY(10,80,Xtc2,Ytc2,12,AnguloC); GiraXY(10,80,Xtd,Ytd,12,AnguloC); GiraXY(10,80,Xtd2,Ytd2,12,AnguloC); GiraXY(10,80,Xte1,Yte1,15,AnguloC);GiraXY(10,80,Xte12,Yte12,15,AnguloC); GiraXY(10,80,Xte2,Yte2,15,AnguloC);GiraXY(10,80,Xte22,Yte22,15,AnguloC); //{hombro} GiraXY(10,30,Xtb,Ytb,12,AnguloB); GiraXY(10,30,Xtb2,Ytb2,12,AnguloB); GiraXY(10,30,Xtc,Ytc,12,AnguloB); GiraXY(10,30,Xtc2,Ytc2,12,AnguloB); GiraXY(10,30,Xtd,Ytd,12,AnguloB); GiraXY(10,30,Xtd2,Ytd2,12,AnguloB); GiraXY(10,30,Xte1,Yte1,15,AnguloB);GiraXY(10,30,Xte12,Yte12,15,AnguloB); GiraXY(10,30,Xte2,Yte2,15,AnguloB);GiraXY(10,30,Xte22,Yte22,15,AnguloB); //{base} GiraXY(20,20,Xta,Zta,12,AnguloA); GiraXY(20,20,Xta2,Zta2,12,AnguloA); GiraXY(20,20,Xtb,Ztb,12,AnguloA); GiraXY(20,20,Xtb2,Ztb2,12,AnguloA); GiraXY(20,20,Xtc,Ztc,12,AnguloA); GiraXY(20,20,Xtc2,Ztc2,12,AnguloA); GiraXY(20,20,Xtd,Ztd,12,AnguloA); GiraXY(20,20,Xtd2,Ztd2,12,AnguloA); GiraXY(20,20,Xte1,Zte1,15,AnguloA);GiraXY(20,20,Xte12,Zte12,15,AnguloA); GiraXY(20,20,Xte2,Zte2,15,AnguloA);GiraXY(20,20,Xte22,Zte22,15,AnguloA);
setcolor(1); if (mA) DespliegaOBJETO(Xtta,Ytta,Ztta,Xtta2,Ytta2,Ztta2,12); if (mA||mB) DespliegaOBJETO(Xttb,Yttb,Zttb,Xttb2,Yttb2,Zttb2,12); if (mA||mB||mC) DespliegaOBJETO(Xttc,Yttc,Zttc,Xttc2,Yttc2,Zttc2,12); if (mA||mB||mC||mD) DespliegaOBJETO(Xttd,Yttd,Zttd,Xttd2,Yttd2,Zttd2,12); if (mA||mB||mC||mD||mE) { DespliegaOBJETO(Xtte1,Ytte1,Ztte1,Xtte12,Ytte12,Ztte12,15); DespliegaOBJETO(Xtte2,Ytte2,Ztte2,Xtte22,Ytte22,Ztte22,15); } if (mA||mB||mC||mD||mE) DespliegaOBJETO(Lx1,Ly1,Lz1,Lx2,Ly2,Lz2,6); }while(ch!=27); closegraph(); } |
|