plinth's answer वही चीज़ है जो मुझे अंत में मिली। बहुत सारे मुश्किल गणित हैं जो एक जादू निरंतर को कम करते हैं और कार्य को चार अलग-अलग बेज़ीर घटता में विभाजित करते हैं। मुझे इसे कच्चे पीडीएफ कमांड में करने की ज़रूरत है, लेकिन प्रक्रिया एक जैसी है।
पहले वक्र की शुरुआत में जाएं। यह सर्कल का केंद्र त्रिज्या का केंद्र है जो आपको पसंद है।
वक्र के अंत ($x3
और $y3
इस कोड में मान) के अंत में चित्रित करें। सबस्क्रिप्ट बेज़ीयर वक्र नियंत्रण बिंदु लेबल से आती हैं जो अधिकांश लोग उपयोग करते हैं।
नियंत्रण बिंदुओं को चित्रित करें। यही वह जगह है जहां $magic
मूल्य दिखाता है।
जब आप एक सेगमेंट के साथ समाप्त होते हैं, तो अगला करें। केवल अतिरिक्त जोड़ों और घटकों के साथ कार्टेशियन निर्देशांक में अच्छी तरह से काम करने के अलावा चार खंडों के बारे में विशेष विशेष कुछ भी नहीं है।
यदि आप भरना चाहते हैं, तो आप जिस पथ को अभी बनाया है उसके अंदर पेंट करने के लिए f
के साथ समाप्त करें।
वहाँ
कुछ रिफैक्टरिंग कि मैं कर सकता है, लेकिन रूप में मैं इस के साथ काम कर रहा था बहुत देखने के लिए कि मैं सही कोड के अलग-अलग ब्लॉक होने से संकेत हो रही थी आसान था है।
sub make_magic_circle
{
my($pdf, # PDF::EasyPDF object
$center,
$r # radius
) = @_;
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";
}