home *** CD-ROM | disk | FTP | other *** search
- (***********************************************************)
- (* *)
- (* TURBO GRAPHIX version 1.06A *)
- (* *)
- (* Polygon modification module *)
- (* Module version 1.06A *)
- (* *)
- (* Copyright (C) 1985 by *)
- (* BORLAND International *)
- (* *)
- (***********************************************************)
-
- procedure RotatePolygonAbout(var A : PlotArray; NPoints : integer;
- Theta, X0, Y0 : real);
- var
- C, S, X, Ph : real;
- I : integer;
-
- begin
- if NPoints >= 2 then
- begin
- Ph := Pi / 180.0 * Theta;
- C := Cos(Ph);
- S := Sin(Ph);
- for I := 1 to NPoints do
- begin
- X := X0 + C * (A[I, 1] - X0) - S * (A[I, 2] - Y0);
- A[I, 2] := Y0 + S * (A[I, 1] - X0) + C * (A[I, 2] - Y0);
- A[I, 1] := X;
- end;
- end
- else
- Error(8, 4);
- end; { RotatePolygonAbout }
-
- procedure RotatePolygon(var A : PlotArray; NPoints : integer; Theta : real);
- var
- X0, Y0 : real;
- I : integer;
-
- begin
- X0 := 0.0;
- Y0 := 0.0;
- for I := 1 to NPoints do
- begin
- X0 := X0 + A[I, 1];
- Y0 := Y0 + A[I, 2];
- end;
- RotatePolygonAbout(A, NPoints, Theta, X0 / NPoints, Y0 / NPoints);
- end; { RotatePolygon }
-
- procedure TranslatePolygon(var A : PlotArray; N : integer;
- DeltaX, DeltaY : real);
- var
- I : integer;
-
- begin
- N := abs(N);
- if N >= 2 then
- for I := 1 to N do
- begin
- A[I, 1] := A[I, 1] + DeltaX;
- A[I, 2] := A[I, 2] + DeltaY;
- end
- else
- Error(9, 4);
- end; { TranslatePolygon }
-
- procedure ScalePolygon(var A : PlotArray; N : integer;
- ScaleX, ScaleY : real);
- var
- I : integer;
-
- begin
- N := abs(N);
- if N >= 2 then
- for I := 1 to N do
- begin
- A[I, 1] := A[I, 1] * ScaleX;
- A[I, 2] := A[I, 2] * ScaleY;
- end
- else
- Error(10, 4);
- end; { ScalePolygon }