Linien beim Vergrößern


%!PS-Adobe-1.0
%%Creator: Holger Gehringer
%%Title: Beispiel fuer Linienstaerke bei Skalierung
%%CreationDate: Mo, 23.11.1998
%%DocumentMedia: A4 595 842 0 () ()
%%Orientation: Portrait
%%Pages: (atend)
%%DocumentFonts: Times-Roman Helvetica
%%EndComments

% Dieses Beispiel demonstriert einen Seiteneffekt bei der Skalierung des Koord-
% inatensystems. Normalerweise aendert sich die Linienstaerke mit der Skalie-
% rung - dies zeigen die Quadrate auf der linken Seite. Wie die Linienstaerke
% bei beliebigen Skalierungen konstant gehalten werden kann, wird an dem
% rechten Bild demonstriert.

/CenterSquare           % Diese Prozedur zeichnet ein Quadrat konzentrisch um
{ newpath               % den Ursprung
   12  12 moveto
  -12  12 lineto
  -12 -12 lineto
   12 -12 lineto
  closepath
} def

%%EndProlog

%%Page: 1 1
gsave                   % Aktuelles Koordinatensystem merken
200 500 translate       % Ursprung fuer linkes Beispiel setzen
1 setlinewidth
1 1 6                   % Schleife mit sechs Durchlaeufen
{ gsave                 % Aktuelles Koordinatensystem merken
  dup scale             % Der Schleifenindex bestimmt die Skalierung
  CenterSquare          % Die Linienstaerke des Quadrats ist proportional dem
  stroke                % Skalierungsgrad
  grestore              % Zurueck zum unskalierten Koordinatensystem
} for
grestore                % Zurueck zum urspruenglichen, unverschobenen Koord.s.

gsave                   % Aktuelles Koordinatensystem merken
400 500 translate       % Ursprung fuer rechtes Beispiel setzen
1 setlinewidth
/CMtx matrix            % Das aktuelle Koordinatensystem (current transforma-
currentmatrix def       % tion matrix) in 'CMtx' merken
1 1 6
{ gsave
  dup scale             % Skalieren wie beim ersten Beispiel
  CenterSquare          % Den Pfad fuer das Quadrat erstellen, aber noch nicht
                        % zeichnen.
  CMtx setmatrix        % Das unskalierte Koordinatensystem wieder herstellen,
                        % damit die Linienstaerke stimmt. Das kann nicht mit
                        % 'gsave/grestore' geschehen, da dieser Befehl auch den
                        % aktuellen Pfad zuruecksetzen wuerde.
  stroke
  grestore              % Zurueck zum unskalierten Koordinatensystem
} for
grestore                % Zurueck zum urspruenglichen, unverschobenen Koord.s.

showpage

%%Trailer
%%Pages: 1


Vorschau:

Download PostScript-File

© Holger Gehringer, Dezember 1998