PostScript::Simpleで楕円を書く

PostScript::Simpleには楕円を描くためのメソッドは用意されていません。
そのため、自力で書く必要があります。

コツは楕円の中心へtranslateして、そこを中心にscaleします。
用意されているcircleメソッドで円を書いて、
scaleを元に戻して、translateも元に戻します。
これで元の座標軸に戻ります。

# 楕円のサイズ
my $width  = 100;
my $height = 50;

# 横幅を基準に描画する
$ps -> {'pspages'} .= sprintf( "%d %d translate\n", $width, $height );
$ps -> {'pspages'} .= sprintf( "1 %.2f scale\n", $height / $width );
$ps -> circle( 0, 0, $width );
$ps -> {'pspages'} .= sprintf( "1 1 %.2f div scale\n", $height / $width );
$ps -> {'pspages'} .= sprintf( "-%d -%d translate\n", $width, $height );

movetoとの使い分けが難しいですね。
楕円のときだけtranslateなのかな?

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です