void Stand_Up(float dt) {
	  int i;
	  int onfloor = 0;
	  float scale = 2.0f;

	  // touch the feet to the floor
	  for(i=0;i<6;++i) {
	    if(legs[i].ankle_joint.pos.z>0) legs[i].ankle_joint.pos.z-=4*scale*dt;
	    else ++onfloor;

	    // contract - put feet closer to shoulders
	    Vector3f df = new Vector3f(legs[i].ankle_joint.pos);
	    df.sub(body.pos);
	    df.z=0;
	    if(df.length()>standing_radius) {
	      df.normalize();
	      df.scale(6*scale*dt);
	      legs[i].ankle_joint.pos.sub(df);
	    }
	  }

	  if(onfloor==6) {
	    // we've planted all feet, raise the body a bit
	    if( body.pos.z < standing_height ) body.pos.z+=2*scale*dt;

	    for(i=0;i<6;++i) {
	      Vector3f ds = new Vector3f( legs[i].pan_joint.pos );
	      ds.sub( body.pos );
	      ds.normalize();
	      ds.scale(standing_radius);
	      legs[i].npoc.set(body.pos.x+ds.x,
	    		  			body.pos.y+ds.y,
	    		  			0);
	    }
	  }
	}