anchor.diff:  Result.Z:=v2.Z+Tmp.X*Len;
   end;
   
  -procedure Normal2Poly(v1,v2,v3:array of single; nx,ny,nz:psingle); overload
  +procedure Normal2Poly(v1,v2,v3:array of single; nx,ny,nz:psingle); overload;
   begin  //aka Cross product of 2 vectors
  -nx^:= ((v1[1]-v2[1])*(v1[2]-v3[2])-(v1[2]-v2[2])*(v1[1]-v3[1]))/256;
  -ny^:=-((v1[0]-v2[0])*(v1[2]-v3[2])-(v1[2]-v2[2])*(v1[0]-v3[0]))/256;
  -nz^:= ((v1[0]-v2[0])*(v1[1]-v3[1])-(v1[1]-v2[1])*(v1[0]-v3[0]))/256;
  -end;
  -
  -procedure Normal2Poly(v1,v2,v3:Vector3f; n:PVector3f); overload
  +  nx^:= ((v1[1]-v2[1])*(v1[2]-v3[2])-(v1[2]-v2[2])*(v1[1]-v3[1]))/256;
  +  ny^:=-((v1[0]-v2[0])*(v1[2]-v3[2])-(v1[2]-v2[2])*(v1[0]-v3[0]))/256;
  +  nz^:= ((v1[0]-v2[0])*(v1[1]-v3[1])-(v1[1]-v2[1])*(v1[0]-v3[0]))/256;
  +end;
  +
  +procedure Normal2Poly(v1,v2,v3:Vector3f; n:PVector3f); overload;
   begin  //aka Cross product of 2 vectors
  -n.x:= ((v1.Y-v2.Y)*(v1.Z-v3.Z)-(v1.Z-v2.Z)*(v1.Y-v3.Y))/256;
  -n.y:=-((v1.X-v2.X)*(v1.Z-v3.Z)-(v1.Z-v2.Z)*(v1.X-v3.X))/256;
  -n.z:= ((v1.X-v2.X)*(v1.Y-v3.Y)-(v1.Y-v2.Y)*(v1.X-v3.X))/256;
  -end;
  -
  -procedure Normal2Poly(u1,v1,u2,v2,u3,v3:single; out n:single); overload
  +  n^.x:= ((v1.Y-v2.Y)*(v1.Z-v3.Z)-(v1.Z-v2.Z)*(v1.Y-v3.Y))/256;
  +  n^.y:=-((v1.X-v2.X)*(v1.Z-v3.Z)-(v1.Z-v2.Z)*(v1.X-v3.X))/256;
  +  n^.z:= ((v1.X-v2.X)*(v1.Y-v3.Y)-(v1.Y-v2.Y)*(v1.X-v3.X))/256;
  +end;
  +
  +procedure Normal2Poly(u1,v1,u2,v2,u3,v3:single; out n:single); overload;
   begin  //aka Cross product of 2 vectors
  -n:=(u1-u2)*(v1-v3)-(v1-v2)*(u1-u3);
  +  n:=(u1-u2)*(v1-v3)-(v1-v2)*(u1-u3);
   end;
   
   procedure decs(var AText:string; const Len:integer=1);
  
positive.code:   Result := ArcTan2(X, Sqrt(1 - X * X))
  end;
  
  function ArcTan2(const Y, X: Extended): Extended;
  asm
          FLD     Y
          FLD     X
          FPATAN
          FWAIT
  end;
  
  function Pow(const Base, Exponent: integer): integer;
  begin
  
negative.code: 
  closefile(ft);
  result:=true;
  end;}
  
  function ElapsedTime(i1:pcardinal): string;
  begin
  