function delGraphs()
{
  jg.clear();
}


function CoupleDraw()
{
  jg.setStroke(1); // Liniendicke

  jg.setColor("#00ff00"); // grün
  jg.fillEllipse(1000, 100, 100, 18);
  jg.setColor("maroon");
  jg.drawPolyline(new Array(50, 10, 120), new Array(10, 50, 70));

  jg.setColor("#ff0000"); // rot
  jg.drawLine(10, 113, 220, 55); // Koordinaten auf Zeichenfläche bezogen
  jg.setColor("#0000ff"); // blau
  jg.fillRect(110, 120, 30, 60);

  jg.setColor("#0000ff"); // blau
  jg.drawEllipse(10, 50, 30, 100);
  jg.drawRect(400, 10, 100, 50);

  var xWerte = new Array(310,385,393,360);
  var yWerte = new Array(150,110,205,187);
  jg.fillPolygon(xWerte,yWerte);

  jg.paint();
}


function Umrech(upx,upy)
{                                       /** Umrechnung von Millimetern in Bildschirm- bzw. Plottereinheiten ***/
  xkoord = x0x+         ((upx*getmaxx1)/ImgMaxX1);
  ykoord = y0y+getmaxy1-((upy*getmaxy1)/ImgMaxY1);
}


function P_setcolor(color)
/* 0: schwarz  4: rot          8: dunkelgrau   12: hellrot              Bk  */
/* 1: blau     5: fuchsinrot   9: hellblau     13: hellfuchsinrot           */
/* 2: gruen    6: braun       10: hellgruen    14: gelb            blinken :*
/* 3: tuerkis  7: hellgrau    11: helltuerkis  15: weiss           Farbe+16 */
{
  if (color ==  0) jg.setColor("Black");
  if (color ==  1) jg.setColor("Navy");
  if (color ==  2) jg.setColor("Green");
  if (color ==  3) jg.setColor("Purple");
  if (color ==  4) jg.setColor("Olive");
  if (color ==  5) jg.setColor("Teal");
  if (color ==  6) jg.setColor("Maroon");
  if (color ==  7) jg.setColor("Silver");
  if (color ==  8) jg.setColor("Gray");
  if (color ==  9) jg.setColor("Blue");
  if (color == 10) jg.setColor("Lime");
  if (color == 11) jg.setColor("Aqua");
  if (color == 12) jg.setColor("Red");
  if (color == 13) jg.setColor("Fuchsia");
  if (color == 14) jg.setColor("Yellow");
  if (color == 15) jg.setColor("White");
}


function P_moveto(x,y)
{
  Umrech(x,y);
  MOVETOx = xkoord;
  MOVETOy = ykoord;
}


function P_lineto(x,y)
{
  Umrech(x,y);
  jg.drawLine(MOVETOx,MOVETOy,xkoord,ykoord);
  MOVETOx = xkoord;
  MOVETOy = ykoord;
}


function P_circle(x,y,rad)
{
  Umrech(x,y);
  jg.drawEllipse(xkoord-rad,ykoord-rad,2*rad,2*rad);
}


function P_rectangle(x,y,w,h)
{
  P_moveto(x,y);
  P_lineto(x+w,y);
  P_lineto(x+w,y+h);
  P_lineto(x,y+h);
  P_lineto(x,y);
}


function P_outtextxy(x,y,text)
{
  Umrech(x,y);
  jg.drawString(text,xkoord,ykoord-10);
}


function P_outtextxyright(x,y,text)
{
  Umrech(x,y);
  jg.drawStringRect(text,xkoord,ykoord-10,24,"right");
}


function plin(i,k,xmin,ymin,x,y,xo,yo,xf,yf)
{
  if (i == k) {
    P_moveto(xo+(x-xmin)*xf,yo+(y-ymin)*yf);
  } else {
    P_lineto(xo+(x-xmin)*xf,yo+(y-ymin)*yf);
  }
}


function zeich_frau(alt,al,ga,xmin,ymin,xo,yo,xf,yf,color)
{
  var p = new Array(0,1,2,3,3,13,4,17,3,4,5,9,4,5,6,7,8,41,7,9,10,11,12,42,11,13,14,15,16,17,18,19,20);
  var i,n,x,y;

  P_setcolor(color);
  for (i =  1; i <=  3; ++i) {
    n = p[i];
    RaumDreh(xyz[n][1],xyz[n][2],xyz[n][3],al,0.0,ga,1,1,1,0,0,0); x=RD[1]; y=RD[3];
    plin(i, 1,xmin,ymin,x,y,xo,yo,xf,yf);
  }
  for (i =  4; i <=  8; ++i) {
    n = p[i];
    RaumDreh(xyz[n][1],xyz[n][2],xyz[n][3],al,0.0,ga,1,1,1,0,0,0); x=RD[1]; y=RD[3];
    plin(i, 4,xmin,ymin,x,y,xo,yo,xf,yf);
  }
  for (i =  9; i <= 12; ++i) {
    n = p[i];
    RaumDreh(xyz[n][1],xyz[n][2],xyz[n][3],al,0.0,ga,1,1,1,0,0,0); x=RD[1]; y=RD[3];
    plin(i, 9,xmin,ymin,x,y,xo,yo,xf,yf);
  }
  for (i = 13; i <= 15; ++i) {
    n = p[i];
    RaumDreh(xyz[n][1],xyz[n][2],xyz[n][3],al,0.0,ga,1,1,1,0,0,0); x=RD[1]; y=RD[3];
    plin(i,13,xmin,ymin,x,y,xo,yo,xf,yf);
  }
  for (i = 15; i <= 18; ++i) {
    n = p[i];
    RaumDreh(xyz[n][1],xyz[n][2],xyz[n][3],al,0.0,ga,1,1,1,0,0,0); x=RD[1]; y=RD[3];
    plin(i,13,xmin,ymin,x,y,xo,yo,xf,yf);
  }
  for (i = 19; i <= 21; ++i) {
    n = p[i];
    RaumDreh(xyz[n][1],xyz[n][2],xyz[n][3],al,0.0,ga,1,1,1,0,0,0); x=RD[1]; y=RD[3];
    plin(i,19,xmin,ymin,x,y,xo,yo,xf,yf);
  }
  for (i = 21; i <= 24; ++i) {
    n = p[i];
    RaumDreh(xyz[n][1],xyz[n][2],xyz[n][3],al,0.0,ga,1,1,1,0,0,0); x=RD[1]; y=RD[3];
    plin(i,19,xmin,ymin,x,y,xo,yo,xf,yf);
  }
  for (i = 25; i <= 28; ++i) {
    n = p[i];
    RaumDreh(xyz[n][1],xyz[n][2],xyz[n][3],al,0.0,ga,1,1,1,0,0,0); x=RD[1]; y=RD[3];
    plin(i,25,xmin,ymin,x,y,xo,yo,xf,yf);
  }
  for (i = 29; i <= 32; ++i) {
    n = p[i];
    RaumDreh(xyz[n][1],xyz[n][2],xyz[n][3],al,0.0,ga,1,1,1,0,0,0); x=RD[1]; y=RD[3];
    plin(i,29,xmin,ymin,x,y,xo,yo,xf,yf);
  }
}


function zeich_mann(alt,al,ga,xmin,ymin,xo,yo,xf,yf,color)
{
  var p = new Array(0,21,22,23,23,33,24,37,23,24,25,29,24,25,26,27,28,43,27,29,30,31,32,44,31,33,34,35,36,37,38,39,40);
  var i,n,x,y;

  P_setcolor(color);
  for (i =  1; i <=  3; ++i) {
    n = p[i];
    RaumDreh(xyz[n][1],xyz[n][2],xyz[n][3],al,0.0,ga,1,1,1,0,0,0); x=RD[1]; y=RD[3];
    plin(i, 1,xmin,ymin,x,y,xo,yo,xf,yf);
  }
  for (i =  4; i <=  8; ++i) {
    n = p[i];
    RaumDreh(xyz[n][1],xyz[n][2],xyz[n][3],al,0.0,ga,1,1,1,0,0,0); x=RD[1]; y=RD[3];
    plin(i, 4,xmin,ymin,x,y,xo,yo,xf,yf);
  }
  for (i =  9; i <= 12; ++i) {
    n = p[i];
    RaumDreh(xyz[n][1],xyz[n][2],xyz[n][3],al,0.0,ga,1,1,1,0,0,0); x=RD[1]; y=RD[3];
    plin(i, 9,xmin,ymin,x,y,xo,yo,xf,yf);
  }
  for (i = 13; i <= 15; ++i) {
    n = p[i];
    RaumDreh(xyz[n][1],xyz[n][2],xyz[n][3],al,0.0,ga,1,1,1,0,0,0); x=RD[1]; y=RD[3];
    plin(i,13,xmin,ymin,x,y,xo,yo,xf,yf);
  }
  for (i = 15; i <= 18; ++i) {
    n = p[i];
    RaumDreh(xyz[n][1],xyz[n][2],xyz[n][3],al,0.0,ga,1,1,1,0,0,0); x=RD[1]; y=RD[3];
    plin(i,13,xmin,ymin,x,y,xo,yo,xf,yf);
  }
  for (i = 19; i <= 21; ++i) {
    n = p[i];
    RaumDreh(xyz[n][1],xyz[n][2],xyz[n][3],al,0.0,ga,1,1,1,0,0,0); x=RD[1]; y=RD[3];
    plin(i,19,xmin,ymin,x,y,xo,yo,xf,yf);
  }
  for (i = 21; i <= 24; ++i) {
    n = p[i];
    RaumDreh(xyz[n][1],xyz[n][2],xyz[n][3],al,0.0,ga,1,1,1,0,0,0); x=RD[1]; y=RD[3];
    plin(i,19,xmin,ymin,x,y,xo,yo,xf,yf);
  }
  for (i = 25; i <= 28; ++i) {
    n = p[i];
    RaumDreh(xyz[n][1],xyz[n][2],xyz[n][3],al,0.0,ga,1,1,1,0,0,0); x=RD[1]; y=RD[3];
    plin(i,25,xmin,ymin,x,y,xo,yo,xf,yf);
  }
  for (i = 29; i <= 32; ++i) {
    n = p[i];
    RaumDreh(xyz[n][1],xyz[n][2],xyz[n][3],al,0.0,ga,1,1,1,0,0,0); x=RD[1]; y=RD[3];
    plin(i,29,xmin,ymin,x,y,xo,yo,xf,yf);
  }
}


function relkoord()
{
  var i,i20;
  var v = new Array(43);
    for (i = 0; i < v.length; ++i) v[i] = new Array(4);

  jg.setFont("arial","10px",Font.PLAIN);
  if ((gelenk>= 1 && gelenk<=20) || gelenk==49) {P_setcolor(12);} else {P_setcolor(0);}
  P_outtextxy(217,185,'Lady');
  if ((gelenk>= 1 && gelenk<=20) || gelenk==49) {P_setcolor(12);} else {P_setcolor(0);}
  P_outtextxy(212,180,'X');
  P_outtextxy(221,180,'Y');
  P_outtextxy(230,180,'Z');
  if ((gelenk>=21 && gelenk<=40) || gelenk==49) {P_setcolor(12);} else {P_setcolor(0);}
  P_outtextxy(244,185,'Gent');
  if ((gelenk>=21 && gelenk<=40) || gelenk==49) {P_setcolor(12);} else {P_setcolor(0);}
  P_outtextxy(239,180,'X');
  P_outtextxy(248,180,'Y');
  P_outtextxy(257,180,'Z');

  if (gelenk== 1 || gelenk==21) {P_setcolor(12);} else {P_setcolor(0);} P_outtextxy(191,176,'Head R');
  if (gelenk== 2 || gelenk==22) {P_setcolor(12);} else {P_setcolor(0);} P_outtextxy(191,172,'Head F');
  if (gelenk== 3 || gelenk==23) {P_setcolor(12);} else {P_setcolor(0);} P_outtextxy(191,168,'Neck  ');
  if (gelenk==49 ||
      gelenk== 4 || gelenk==24) {P_setcolor(12);} else {P_setcolor(0);} P_outtextxy(191,164,'Waist ');
  if (gelenk== 5 || gelenk==25) {P_setcolor(12);} else {P_setcolor(0);} P_outtextxy(191,160,'Hip  L');
  if (gelenk== 6 || gelenk==26) {P_setcolor(12);} else {P_setcolor(0);} P_outtextxy(191,156,'Knee L');
  if (gelenk== 7 || gelenk==27) {P_setcolor(12);} else {P_setcolor(0);} P_outtextxy(191,152,'Foot L');
  if (gelenk== 8 || gelenk==28) {P_setcolor(12);} else {P_setcolor(0);} P_outtextxy(191,148,'Toe  L');
  if (gelenk== 9 || gelenk==29) {P_setcolor(12);} else {P_setcolor(0);} P_outtextxy(191,144,'Hip  R');
  if (gelenk==10 || gelenk==30) {P_setcolor(12);} else {P_setcolor(0);} P_outtextxy(191,140,'Knee R');
  if (gelenk==11 || gelenk==31) {P_setcolor(12);} else {P_setcolor(0);} P_outtextxy(191,136,'Foot R');
  if (gelenk==12 || gelenk==32) {P_setcolor(12);} else {P_setcolor(0);} P_outtextxy(191,132,'Toe  R');
  if (gelenk==13 || gelenk==33) {P_setcolor(12);} else {P_setcolor(0);} P_outtextxy(191,128,'Sldr L');
  if (gelenk==14 || gelenk==34) {P_setcolor(12);} else {P_setcolor(0);} P_outtextxy(191,124,'Elbw L');
  if (gelenk==15 || gelenk==35) {P_setcolor(12);} else {P_setcolor(0);} P_outtextxy(191,120,'Hand L');
  if (gelenk==16 || gelenk==36) {P_setcolor(12);} else {P_setcolor(0);} P_outtextxy(191,116,'Ftip L');
  if (gelenk==17 || gelenk==37) {P_setcolor(12);} else {P_setcolor(0);} P_outtextxy(191,112,'Sldr R');
  if (gelenk==18 || gelenk==38) {P_setcolor(12);} else {P_setcolor(0);} P_outtextxy(191,108,'Elbw R');
  if (gelenk==19 || gelenk==39) {P_setcolor(12);} else {P_setcolor(0);} P_outtextxy(191,104,'Hand R');
  if (gelenk==20 || gelenk==40) {P_setcolor(12);} else {P_setcolor(0);} P_outtextxy(191,100,'Ftip R');
  if (gelenk==49 ||
      gelenk== 4 || gelenk==24) {P_setcolor(12);} else {P_setcolor(0);} P_outtextxy(191, 96,'Trans ');

  for (i = 1; i <= 20; ++i) {
    i20 = i+20;
    for (j = 1; j <= 3; ++j) v[i][j]   = acd[cpc[i]][j]*200.0/Math.PI;
    for (j = 1; j <= 3; ++j) v[i20][j] = acd[cpc[i20]][j]*200.0/Math.PI;
  }
    for (j = 1; j <= 3; ++j) v[41][j] = acv[1][j]*10.0;  /* 41 Verschiebung Frau */
    for (j = 1; j <= 3; ++j) v[42][j] = acv[2][j]*10.0;  /* 42 Verschiebung Mann */

  for (i = 1; i <= 20; ++i) {
    i20 = i+20;
    for (j = 1; j <= 3; ++j) {if (gelenk==i)   {P_setcolor(12);} else {P_setcolor(0);} if (Math.abs(v[i][j])>0)   {P_outtextxyright(232-j*9,180-i*4,Math.round(v[i][j]));} else {P_outtextxyright(232-j*9,180-i*4,'.');}}
    for (j = 1; j <= 3; ++j) {if (gelenk==i20) {P_setcolor(12);} else {P_setcolor(0);} if (Math.abs(v[i20][j])>0) {P_outtextxyright(259-j*9,180-i*4,Math.round(v[i20][j]));} else {P_outtextxyright(259-j*9,180-i*4,'.');}}
  }
    for (j = 1; j <= 3; ++j) {if (gelenk== 4 || gelenk==49) {P_setcolor(12);} else {P_setcolor(0);} if (Math.abs(v[41][j])>0) {P_outtextxyright(232-(4-j)*9,96,Math.round(v[41][j]));} else {P_outtextxyright(232-(4-j)*9,96,'.');}}
    for (j = 1; j <= 3; ++j) {if (gelenk==24 || gelenk==49) {P_setcolor(12);} else {P_setcolor(0);} if (Math.abs(v[42][j])>0) {P_outtextxyright(259-(4-j)*9,96,Math.round(v[42][j]));} else {P_outtextxyright(259-(4-j)*9,96,'.');}}
}


function neuzeich()
{
  var xk1,yk1,xk2,yk2,xmin,xmax,ymin,ymax,x,y,al,ga,xf,yf,xo,yo,gxo,gyo;

  FRM=getFrame();
  x0x = 0;   /* Form1.Image1.left; */
  y0y = 0;   /* Form1.Image1.top;  */

  getmaxx1 = 640; ImgMinX1 = 0.0; ImgMaxX1 = 260.0;
  getmaxy1 = 480; ImgMinY1 = 0.0; ImgMaxY1 = 190.0;

  Umrech(ImgMinX1,ImgMaxY1); xk1 = xkoord; yk1 = ykoord;
  Umrech(ImgMaxX1,ImgMinY1); xk2 = xkoord; yk2 = ykoord;

  P_setcolor(9);
  jg.setStroke(1); // Liniendicke

  jg.drawRect(xk1,yk1,xk2-xk1,yk2-yk1);
  P_moveto( 95.0, 0.0); P_lineto( 95.0,190.0);
  P_moveto(  0.0,95.0); P_lineto(260.0, 95.0);
  P_moveto(190.0,95.0); P_lineto(190.0,190.0);
  jg.paint();

  relkoord();     // Koordinaten schreiben

  for (rr = 0; rr <= 3; ++rr)
  {
    if (rr == 0) {al = 0.0;         ga = 0.0;          }
    if (rr == 1) {al = Math.PI/2.0; ga = 0.0;          }
    if (rr == 2) {al = 0.0;         ga = -Math.PI/2.0; }
    if (rr == 3) {al = gal;         ga = gga;          }

    xmax = -1.e38; xmin = 1.e38;        /* Darstellbereich */
    ymax = -1.e38; ymin = 1.e38;
	   for (i = 1; i <= dat; ++i)
	   {
      RaumDreh(xyz[i][1],xyz[i][2],xyz[i][3],al,0.0,ga,1,1,1,0,0,0); x=RD[1]; y=RD[3];
      if (x>xmax) {xmax=x;         }
      if (x<xmin) {xmin=x; pxmin=i;}
      if (y>ymax) {ymax=y;         }
      if (y<ymin) {ymin=y; pymin=i;}
    }

    xf = 90.0/(xmax-xmin);            /* xf,yf,xo,yo zur Darstellung */
    yf = 90.0/(ymax-ymin);
    if (xf<yf) {yf=xf} else {xf=yf;}

    if (rr == 0) {
      xo =  47.5-(xmax-xmin)/2.0*xf; gxo = xo-xyz[pxmin][1]*xf;
      yo = 142.5-(ymax-ymin)/2.0*yf; gyo = yo-xyz[pymin][3]*yf;
    }
    if (rr == 1) {
      xo = 142.5-(xmax-xmin)/2.0*xf; gxo = xo-xyz[pxmin][2]*xf;
      yo = 142.5-(ymax-ymin)/2.0*yf; gyo = yo-xyz[pymin][3]*yf;
    }
    if (rr == 2) {
      xo =  47.5-(xmax-xmin)/2.0*xf; gxo = xo-xyz[pxmin][1]*xf;
      yo =  47.5-(ymax-ymin)/2.0*yf; gyo = yo-xyz[pymin][2]*yf;
    }
    if (rr == 3) {
      xo = 177.5-(xmax-xmin)/2.0*xf;
      yo =  47.5-(ymax-ymin)/2.0*yf;
    }

    P_setcolor(10);
    if (rr == 0) {                           /* Zeichnen Gitter */
      if (gxo>= 0 && gxo<= 95) {P_moveto(gxo,   95.0); P_lineto(gxo,  190.0);}
      if (gyo>=95 && gyo<=190) {P_moveto(    0.0,gyo); P_lineto(   95.0,gyo);}
    }
    if (rr == 1) {
      if (gxo>=95 && gxo<=190) {P_moveto(gxo,   95.0); P_lineto(gxo,  190.0)}
      if (gyo>=95 && gyo<=190) {P_moveto(   95.0,gyo); P_lineto(  190.0,gyo)}
    }
    if (rr == 2) {
      if (gxo>= 0 && gxo<= 95) {P_moveto(gxo,    0.0); P_lineto(gxo,   95.0)}
      if (gyo>= 0 && gyo<= 95) {P_moveto(    0.0,gyo); P_lineto(   95.0,gyo)}
    }
    jg.paint();

    P_setcolor(0);
    P_outtextxy( 2.0,101,'Z'); P_outtextxy( 2.3,97,'L'); P_outtextxy(  5.5,96,'X');
    P_outtextxy(97.0,101,'Z'); P_outtextxy(97.3,97,'L'); P_outtextxy(100.5,96,'Y');
    P_outtextxy( 2.0,  6,'Y'); P_outtextxy( 2.3, 2,'L'); P_outtextxy(  5.5, 1,'X');

    zeich_frau(false,al,ga,xmin,ymin,xo,yo,xf,yf,12); /* Frau */
    jg.paint();
    zeich_mann(false,al,ga,xmin,ymin,xo,yo,xf,yf, 9); /* Mann */
    jg.paint();

    P_setcolor(0);
    for (i = 1; i <= dat; ++i)                        /* Gelenke */
    {
      RaumDreh(xyz[i][1],xyz[i][2],xyz[i][3],al,0.0,ga,1,1,1,0,0,0); x=RD[1]; y=RD[3];
      Umrech(xo+(x-xmin)*xf,yo+(y-ymin)*yf);
      gelenkpos[rr][i][0]=xkoord;
      gelenkpos[rr][i][1]=ykoord;
      if (i==4 || i==24 || i==49) P_circle(xo+(x-xmin)*xf,yo+(y-ymin)*yf,3);
      if (i<45 || i>48) {
        P_circle(xo+(x-xmin)*xf,yo+(y-ymin)*yf,2);
	       if (i==gelenk) {
	         P_setcolor(12);
	         P_circle(xo+(x-xmin)*xf,yo+(y-ymin)*yf,5);
	         P_setcolor(0);
	       }
	     }
    }
    jg.paint();
  }

}
