Start · Sprachen · PHP · Referenz · ps_rotate

ps_rotate

Funktion

Setzt den Rotationsfaktor für das aktuelle Koordinatensystem in einem PostScript-Dokument.

Kategorie: misc

Signatur

ps_rotate(resource $psdoc, float $rot): bool

Beschreibung

ps_rotate() dreht das aktuelle Koordinatensystem eines PostScript-Dokuments um den angegebenen Winkel in Grad. Die Rotation wird auf das bestehende Koordinatensystem angewendet und beeinflusst alle nachfolgenden Zeichenoperationen.

Die Funktion gehört zur ps-Erweiterung (pslib) von PHP und erlaubt es, Grafiken, Texte oder andere Elemente gedreht auf einer Seite zu platzieren. Der Winkel wird im Gegenuhrzeigersinn gemessen, wie es im PostScript-Standard üblich ist.

Um die Rotation auf einen bestimmten Bereich zu begrenzen, sollte man die Transformation mit ps_save() und ps_restore() einschließen. Andernfalls wirkt die Rotation auf alle weiteren Zeichenoperationen bis zum Ende der Seite oder bis zur nächsten Transformation.

  • Positive Werte drehen gegen den Uhrzeigersinn.
  • Negative Werte drehen im Uhrzeigersinn.
  • Ein Winkel von 360 entspricht einer vollständigen Umdrehung.

Parameter

Name Typ Default Beschreibung
$psdoc Pflicht resource Die Ressource des PostScript-Dokuments, wie sie von ps_new() zurückgegeben wird.
$rot Pflicht float Der Rotationswinkel in Grad. Positive Werte drehen das Koordinatensystem gegen den Uhrzeigersinn, negative Werte im Uhrzeigersinn.

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück, oder false bei einem Fehler.

Beispiele

Text um 45 Grad rotiert ausgeben

<?php
$ps = ps_new();
if (!$ps) {
    die('Konnte keine PS-Ressource erstellen');
}

ps_open_file($ps, 'rotierter_text.ps');
ps_set_info($ps, 'Creator', 'Beispiel');
ps_set_info($ps, 'Title', 'Rotierter Text');

ps_begin_page($ps, 596, 842); // DIN A4

// Schrift laden und setzen
ps_findfont($ps, 'Helvetica', '', 0);
ps_setfont($ps, 1, 20.0);

// Aktuellen Zustand speichern
ps_save($ps);

// Koordinatenursprung verschieben, dann rotieren
ps_translate($ps, 200, 400);
ps_rotate($ps, 45.0);

// Text an der neuen (rotierten) Position ausgeben
ps_show_xy($ps, 'Hallo, Welt!', 0, 0);

// Zustand wiederherstellen (Rotation aufheben)
ps_restore($ps);

ps_end_page($ps);
ps_close($ps);
ps_delete($ps);

echo 'PostScript-Datei wurde erstellt.';
?>
PostScript-Datei wurde erstellt.

Rechteck um 30 Grad gedreht zeichnen

<?php
$ps = ps_new();
ps_open_file($ps, 'gedrehtes_rechteck.ps');
ps_set_info($ps, 'Title', 'Gedrehtes Rechteck');

ps_begin_page($ps, 596, 842);

ps_save($ps);

// Ursprung in die Mitte der Seite verschieben
ps_translate($ps, 298, 421);

// 30 Grad gegen den Uhrzeigersinn rotieren
ps_rotate($ps, 30.0);

// Rechteck zeichnen
ps_rect($ps, -100, -50, 200, 100);
ps_stroke($ps);

ps_restore($ps);

ps_end_page($ps);
ps_close($ps);
ps_delete($ps);

echo 'Gedrehtes Rechteck wurde erstellt.';
?>
Gedrehtes Rechteck wurde erstellt.

// Wichtig · Fallstricke

Hinweis zur Erweiterung: ps_rotate() gehört zur ps-Erweiterung (pslib), die nicht standardmäßig in PHP enthalten ist. Sie muss separat installiert und aktiviert werden.

Wichtig: Rotationen sind kumulativ. Wird ps_rotate() mehrfach hintereinander aufgerufen, ohne den Zustand mit ps_save()/ps_restore() zu sichern, addieren sich die Winkel. Es empfiehlt sich daher immer, Transformationen in einem ps_save()/ps_restore()-Block einzuschließen.

Der Winkel wird im PostScript-Standard im Gegenuhrzeigersinn gemessen, was sich vom üblichen Screen-Koordinatensystem unterscheidet, wo positive Winkel im Uhrzeigersinn verlaufen.