home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 20 / AACD20.BIN / AACD / Graphics / PerfectPaint / rexx / line / Angle_Repare.rx next >
Text File  |  1999-05-22  |  748b  |  62 lines

  1. /* Angle Correction */
  2.  
  3.     call addlib("rexxmathlib.library", 5, -30, 0)
  4.  
  5.     options results
  6.   parse ARG Port x y x2 y2 b 
  7.     ADDRESS value Port
  8.  
  9.  
  10.         Pi=3.1415926
  11.         If x>x2 then DO;tx=x;x=x2;x2=tx;ty=y;y=y2;y2=ty;END
  12.  
  13.     Dx=abs(x2-x)+1;Dy=abs(y2-y)+1
  14.  
  15.     If y>y2 then DO
  16.       Prot=0.5*Pi+ATan(Dx/Dy)
  17.         END
  18.         ELSE
  19.         DO
  20.       Prot=0.5*Pi-ATan(Dx/Dy)
  21.         END
  22.  
  23.         if x=x2 then DO;Prot=90*Pi/180;END
  24.         if y=y2 then DO;Prot=0;END
  25.  
  26.         Prot=Prot*180/Pi
  27.  
  28.         Angle=Prot
  29.  
  30. if Dy>Dx then
  31.     DO
  32.         if x2>x then
  33.         DO
  34.             Angle=90-Prot            
  35.         END
  36.         ELSE
  37.         DO
  38.             Angle=Prot-90
  39.         END
  40.     END
  41.     ELSE
  42.     DO
  43.         if y2>y then
  44.         DO
  45.             Angle=Prot*-1
  46.         END
  47.         ELSE
  48.         DO
  49.             Angle=180-Prot
  50.         END
  51.     END
  52.         pp_Rotate trunc(Angle+0.5,3)    
  53.         pp_warn 'Angle*Correction*=*'||trunc(Angle+0.5,3)||'*°'
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.