- , . , .
PDF, .
. .
( $x3 $y3 ). BΓ©zier, .
. , $magic.
, . , , .
, f, .
- , , , , , . , PDF:: EasyPDF:
sub make_magic_circle
{
my( $pdf,
$center,
$r
) = @_;
my( $xc, $yc ) = $center->xy;
my $magic = $r * 0.552;
my( $x0p, $y0p ) = ( $xc - $r, $yc );
$pdf->{stream} .= "$x0p $y0p m\n";
{
( $x0p, $y0p ) = ( $xc - $r, $yc );
my( $x1, $y1 ) = ( $x0p, $y0p + $magic );
my( $x2, $y2 ) = ( $x0p + $r - $magic, $y0p + $r );
my( $x3, $y3 ) = ( $x0p + $r, $y0p + $r );
$pdf->{stream} .= "$x1 $y1 $x2 $y2 $x3 $y3 c\n";
}
{
( $x0p, $y0p ) = ( $xc, $yc + $r );
my( $x1, $y1 ) = ( $x0p + $magic, $y0p );
my( $x2, $y2 ) = ( $x0p + $r, $y0p - $r + $magic );
my( $x3, $y3 ) = ( $x0p + $r, $y0p - $r );
$pdf->{stream} .= "$x1 $y1 $x2 $y2 $x3 $y3 c\n";
}
{
( $x0p, $y0p ) = ( $xc + $r, $yc );
my( $x1, $y1 ) = ( $x0p, $y0p - $magic );
my( $x2, $y2 ) = ( $x0p - $r + $magic, $y0p - $r );
my( $x3, $y3 ) = ( $x0p - $r, $y0p - $r );
$pdf->{stream} .= "$x1 $y1 $x2 $y2 $x3 $y3 c\n";
}
{
( $x0p, $y0p ) = ( $xc, $yc - $r );
my( $x1, $y1 ) = ( $x0p - $magic, $y0p );
my( $x2, $y2 ) = ( $x0p - $r, $y0p + $r - $magic );
my( $x3, $y3 ) = ( $x0p - $r, $y0p + $r );
$pdf->{stream} .= "$x1 $y1 $x2 $y2 $x3 $y3 c\n";
}
$pdf->{stream} .= "f\n";
}