home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 9 / 09.iso / l / l048 / 1.ddi / MODPOLY.HGH < prev    next >
Encoding:
Text File  |  1986-03-20  |  2.2 KB  |  85 lines

  1. (***********************************************************)
  2. (*                                                         *)
  3. (*                TURBO GRAPHIX version 1.06A              *)
  4. (*                                                         *)
  5. (*               Polygon modification module               *)
  6. (*                  Module version  1.06A                  *)
  7. (*                                                         *)
  8. (*                  Copyright (C) 1985 by                  *)
  9. (*                  BORLAND International                  *)
  10. (*                                                         *)
  11. (***********************************************************)
  12.  
  13. procedure RotatePolygonAbout(var A : PlotArray; NPoints : integer;
  14.                              Theta, X0, Y0 : real);
  15. var
  16.   C, S, X, Ph : real;
  17.   I : integer;
  18.  
  19. begin
  20.   if NPoints >= 2 then
  21.     begin
  22.       Ph := Pi / 180.0 * Theta;
  23.       C := Cos(Ph);
  24.       S := Sin(Ph);
  25.       for I := 1 to NPoints do
  26.       begin
  27.         X := X0 + C * (A[I, 1] - X0) - S * (A[I, 2] - Y0);
  28.         A[I, 2] := Y0 + S * (A[I, 1] - X0) + C * (A[I, 2] - Y0);
  29.         A[I, 1] := X;
  30.       end;
  31.     end
  32.   else
  33.     Error(8, 4);
  34. end; { RotatePolygonAbout }
  35.  
  36. procedure RotatePolygon(var A : PlotArray; NPoints : integer; Theta : real);
  37. var
  38.   X0, Y0 : real;
  39.   I : integer;
  40.  
  41. begin
  42.   X0 := 0.0;
  43.   Y0 := 0.0;
  44.   for I := 1 to NPoints do
  45.   begin
  46.     X0 := X0 + A[I, 1];
  47.     Y0 := Y0 + A[I, 2];
  48.   end;
  49.   RotatePolygonAbout(A, NPoints, Theta, X0 / NPoints, Y0 / NPoints);
  50. end; { RotatePolygon }
  51.  
  52. procedure TranslatePolygon(var A : PlotArray; N : integer;
  53.                            DeltaX, DeltaY : real);
  54. var
  55.   I : integer;
  56.  
  57. begin
  58.   N := abs(N);
  59.   if N >= 2 then
  60.     for I := 1 to N do
  61.     begin
  62.       A[I, 1] := A[I, 1] + DeltaX;
  63.       A[I, 2] := A[I, 2] + DeltaY;
  64.     end
  65.   else
  66.     Error(9, 4);
  67. end; { TranslatePolygon }
  68.  
  69. procedure ScalePolygon(var A : PlotArray; N : integer;
  70.                        ScaleX, ScaleY : real);
  71. var
  72.   I : integer;
  73.  
  74. begin
  75.   N := abs(N);
  76.   if N >= 2 then
  77.     for I := 1 to N do
  78.     begin
  79.       A[I, 1] := A[I, 1] * ScaleX;
  80.       A[I, 2] := A[I, 2] * ScaleY;
  81.     end
  82.   else
  83.     Error(10, 4);
  84. end; { ScalePolygon }
  85.