Re: [Boston.pm] Drawing diagrams with circular arcs

Steven Tolkin via Boston-pm <[email protected]> Sun, 2 Mar 2025 10:04:08 -0500
Newsgroups gmane.comp.lang.perl.perl-mongers.boston
Message-ID <[email protected]>
VGhhbmtzIEJpbGxzIGFuZCBldmVyeW9uZSBlbHNlIHdobyByZXBsaWVkLiAgIEkgbm93IHBsYW4g
dG8gdXBkYXRlIG15IFBlcmwgb24gV2luZG93cy4gIFdoaWNoIGlzIHJlY29tbWVuZGVkOiBBY3Rp
dmVTdGF0ZSBvciBTdHJhd2JlcnJ5IFBlcmw/CgogCgpQLlMuIFNlZSBhbHNvIGEgZmV3IHJlcGxp
ZXMgYmVsb3csIG1hcmtlZCBTVDoKCiAKClN0ZXZlbiBUb2xraW4KCiAKCkZyb206IEJpbGwgUmlj
a2VyIDxiaWxsLm4xdnV4QGdtYWlsLmNvbT4gClNlbnQ6IEZyaWRheSwgRmVicnVhcnkgMjgsIDIw
MjUgOToyMiBQTQpUbzogc3RldmV0b2xraW5AY29tY2FzdC5uZXQKQ2M6IEJvc3RvbiBQZXJsIE1v
bmdlcnMgPGJvc3Rvbi1wbUBwbS5vcmc+ClN1YmplY3Q6IFJlOiBbQm9zdG9uLnBtXSBEcmF3aW5n
IGRpYWdyYW1zIHdpdGggY2lyY3VsYXIgYXJjcwoKIAoKIAoKSGkgU3RldmUhCgogCgpJIGFtIHdv
cmtpbmcgb24gYSBwZXQgcHJvamVjdCB3aGVyZSBJIHdhbnQgdG8gZHJhdyBkaWFncmFtcyBjb25z
aXN0aW5nIG9mCmNvbm5lY3RlZCBjaXJjdWxhciBhcmNzLgoKIAoKSSBwcmVzdW1lIHlvdSBtZWFu
IHNlY3Rvci1vZi1jaXJjbGUgYXJjcywgcXVpdGUgcG9zc2libHkgc2VtaS1jaXJjbGUgYXJjcywg
YXMgb3Bwb3NlZCB0byBmdWxsIGNpcmNsZXM/CgpBcmUgeW91IG9wcG9zZWQgdG8gZWxsaXBzZXMs
IHNwbGluZXMsIGFuZCByYWlscm9hZCAic3BpcmFsIiB0aGF0IGlzIGRvdWJseSBkaWZmZXJlbnRp
YWJsZSB3aGVyZSBpdCBidXR0LWpvaW50cyB0byBhIHN0cmFpZ2h0PwoKU1Q6IFllcywgZm9yIG5v
dyBhbiBhcmMgaXMgcGFydCBvZiBvciBhIHdob2xlIGNpcmNsZS4gIE1heWJlIG90aGVyIGN1cnZl
cyBsYXRlci4KCiAKCiAgSSB0aGluayBpdCBjb3VsZCBiZSBkb25lIGluIFZpc2lvLApidXQgSSBu
byBsb25nZXIgaGF2ZSB0aGF0LgoKIAoKUG9zc2libHkgbXkgZmF2b3JpdGUgTVMgT2ZmaWNlIGNv
bXBvbmVudC4KClRoZSBzdGFuZGFyZCBhbnN3ZXIgdG8gImxpa2UgVmlzaW8gYnV0IEZMT1NTIiBp
cyBMaWJyZU9mZmljZSBEcmF3LgoKT3RoZXIgYWx0ZXJuYXRpdmVzIHNlZSBodHRwczovL2FsdGVy
bmF0aXZldG8ubmV0L3NvZnR3YXJlL21pY3Jvc29mdC12aXNpby8gCgogCgpNeSBwcmVmZXJyZWQg
cHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgaXMgUGVybC4gIAoKQnV0IEkgaGF2ZSBub3QgYWN0aXZlbHkg
dXNlZCBpdCBmb3IgbWFueSB5ZWFycy4gIAoKVHNrLiBHZXQgYmFjayBhdCBpdCA6LUQKCiAKCk15
IGN1cnJlbnQgUEMgcnVucyBXaW5kb3dzIDEwLCBidXQgSSBjb3VsZCBhbHNvIHVzZSBXaW5kb3dz
IDExIGZvciBkZXZlbG9wbWVudC4gIAoKIAoKV2VsbCBJJ2Qgc2F5IGl0J3MgaGFsZi1wYXN0IHRp
bWUgeW91IHNldCB1cCBmb3IgYSBMaW51eCBkdWFsLWJvb3QuCgpXaW5kb3dzIDExIGxvb2tzIHRv
IGJlIGEgbGl0dGxlIHRvbyBzdHJhbmdlLgoKIAoKVGhpcyBpcyBwZXJsIDUsIHZlcnNpb24gMjgs
IHN1YnZlcnNpb24gMiAodjUuMjguMikgYnVpbHQgZm9yCgogCgpTaW5jZSB3ZSdyZSB1cCB0byBQ
ZXJsIDUuMDQwIHdpdGggNS4wNDEgaW4gZmluYWwgZGV2ZWxvcG1lbnQsIHllYWggeW91IG1pZ2h0
IGp1c3Qgd2FudCB0byB1cGRhdGUgUGVybC4KCkdvb2QgbmV3cyBJSVJDIGlzIHRoZXkndmUgcmVz
dW1lZCBwcmVidWlsdCBiaW5hcmllcy4KCiAKCkkgdGhpbmsgdGhlIEdEIGxpYnJhcnkgY291bGQg
ZG8gdGhpcywgYW5kIHRoZXJlIGFyZSBzb21lIFBlcmwgQVBJcyB0byBpdC4KCiAKClllcywgR0Qg
PGh0dHBzOi8vbWV0YWNwYW4ub3JnL3BvZC9HRCNEcmF3aW5nLUNvbW1hbmRzPiAgYW5kIEdEOjpT
aW1wbGUgb24gQ1BBTiBjYW4gZHJhdyBjaXJjdWxhciBhbmQgZWxsaXB0aWNhbCBhcmNzIChhbmQg
aWYgZmlsbGVkLCBzZWN0b3JzKS4KCihJIHVzZWQgdGhlIGZpbGxlZCBlbGxpcHRpY2FsIGFyYyBz
ZWN0b3JzIGluIEdELnBtIHRvIHJlY3JlYXRlIGFuZCB0aGVuIHJlZmluZSBteSBjYS4xOTkwIE1T
QyBFR0EgY29sb3Igc29saWQgKFdhbmcgTGFicyB0b3dlciAxKS4pCgogCgpCdXQgdGhlIGxpYnJh
cnkgaXRzZWxmIHNlZW1zIG9sZCBhbmQgbWF5YmUgZGlmZmljdWx0IHRvIGluc3RhbGwgb24gV2lu
ZG93cy4KCiAKCkdEIGxpYnJhcmllcyBoYXZlbid0IGJlZW4gYSBwcm9ibGVtIGZvciBtZSBvbiBM
aW51eCBhdCBsZWFzdC4KCkkgcmVsb2FkIEdELnBtIGV0YyBhbm51YWxseSB3aGVuIEkgcGVybGJy
ZXcgdGhlIG5ldyByZWxlYXNlIG9mIFBlcmwgYW5kIHJlbG9hZCBteSBsaWJzLgoKSSBoYXZlbid0
IGJ1aWx0IEdELnBtIG9uIFdpbmRvd3MgaW4gc28gbG9uZyBJIGNhbid0IHBlcnNvbmFsbHkgYWR2
aXNlLgoKQ1BBTlRTIDxodHRwOi8vbWF0cml4LmNwYW50ZXN0ZXJzLm9yZy8/ZGlzdD1HRCUyMDIu
ODM7bWF4dmVyPTE+ICBzaG93cyAxIHN1Y2Nlc3MgZWFjaCBvbiBNU1dJTjMyIHdpdGggUGVybCA1
LjQwLlswMV0sIDUuMzguMiwgNS4zNi4zLCA1LjMyLjEgYW5kIEdEIDIuODMuCgpJdCBmYWlsZWQg
b25jZSB3aXRoIGRldiBQZXJsIGJ1aWxkcyA1LjQxLls1NjddLCBidXQgdGhhdCdzIG5vdCBhbGFy
bWluZzsgdGhleSd2ZSByZXZlcnRlZCBhIGNvdXBsZSBsZXNzLWJhY2t3YXJkcy1jb21wYXRpYmxl
LXRoYW4tZXhwZWN0ZWQgY2hhbmdlcyBpbiBkZXYuCgooSSBub3RpY2UgdGhhdCBHRCBoYXMgaGFk
IGFuIG9uZ29pbmcgcHJvYmxlbSB3aXRoIE9wZW5CU0QgYW5kIFNvbGFyaXMsIFdUQUY/KQoKIAoK
V2hhdCBkbyBwZW9wbGUgc3VnZ2VzdD8gCgogCgpGb3IgbWFueSBncmFwaC1kaWFncmFtcywgdGhl
IHNlbnNpYmxlIGFwcHJvYWNoIGlzIGZvciBhIFBlcmwgcHJvZ3JhbSB0byBlbWl0IGEgdGV4dHVh
bCBmb3JtIG9mIHRoZSBncmFwaCwgZS5nLiBHcmFwaFZpeiBkb3QgbGFuZ3VhZ2UgZmlsZXMsIHdo
aWNoIGdldCB0dXJuZWQgaW50byBTVkcgYW5kL29yIFBORyBieSBHcmFwaFZpeiBjb21tYW5kbGlu
ZSB0b29sICh1c3VhbGx5IGNhbGxlZCAnZG90JyBhZnRlciB0aGUgZGVmYXVsdCAiRW5naW5lIiop
LgoKaHR0cHM6Ly9tZXRhY3Bhbi5vcmcvcG9kL0dyYXBoVml6MgoKaHR0cHM6Ly9ncmFwaHZpei5v
cmcvZG9jcy9sYXlvdXRzL2RvdC8KCiooSGludDogaW4gR1YsIGRpZmZlcmVudCBidWlsdC1pbiBs
YXlvdXQgcnVsZXMgYXJlIGNhbGxlZCAiRW5naW5lcyIuKQoKU1Q6IEdyYXBoVml6IGlzIHdoYXQg
SeKAmWxsIHRyeS4gIEkgaGF2ZSB1c2VkIERvdHR5IGluIHRoZSBwYXN0LgoKIAoKU2V0dGluZyB0
aGUgZGVmYXVsdCBlZGdlIHR5cGUgaW4gYSBHcmFwaFZpeiBncmFwaCB0byBzcGxpbmVzPWN1cnZl
ZCB3aWxsIGdpdmUgbm90IGNpcmN1bGFyIGJ1dCBzcGxpbmUgY3VydmVzLgoKRXhhbXBsZS4gKG9u
bGluZSBHViBkb3QgZWRpdG9yL3R1dG9yaWFsL2V4YW1wbGUgISEgbmVhdCEpCgpBRkFJSywgR3Jh
cGhWaXogZG9lc24ndCBoYXZlIHNlbWljaXJjbGVzIGFzIGFuIG9wdGlvbj8gQnV0IGl0IGRvZXMg
bGlrZSBkcmF3aW5nIGZ1bGwgMzYwwrAgY2lyY2xlcy4KCiAKCkZvciBub3cgSSBqdXN0IHdhbnQg
dG8gZHJhdyB0aGUgZGlhZ3JhbXMuICBCdXQgbGF0ZXIgSSBtaWdodCBhbHNvIHdhbnQgdG8KY291
bnQgdGhlIG51bWJlciBvZiBlZGdlcywgdmVydGljZXMsIGFuZCBmYWNlcy4gIFRoYXQgaXMgd2h5
IEkgYW0KY29uc2lkZXJpbmcgdXNpbmcgYSBwcm9ncmFtLgoKIAoKQSBnb29kIHJlYXNvbiBmb3Ig
dXNpbmcgYSBkZWNsYXJhdGl2ZSB0ZXh0IGZvcm1hdCBvZiB0aGUgZGlhZ3JhbSBhcyBhbiBpbnRl
cm1lZGlhcnksIHN1Y2ggYXMgR3JhcGhWaXoncyBkb3QgbGFuZ3VhZ2UuCgogCgpPbmUgbGFzdCBw
b2ludC4gIFRoaXMgY291bGQgYmUgYSBnb29kIGZpcnN0IHRlc3QgKGZvciBtZSkgb2YgQUkgY29k
ZSBhc3Npc3QKdG9vbHMuICBCdXQgSSB0aGluayB0aGV5IHVzdWFsbHkgZ2VuZXJhdGUgUHl0aG9u
IG9yIEphdmFzY3JpcHQsIGFuZCBJIGhhdmUKbm90IHVzZWQgZWl0aGVyIG9mIHRob3NlIGxhbmd1
YWdlcy4gIEFyZSB0aGVyZSBBSSB0b29scyB0aGF0IGdlbmVyYXRlIFBlcmw/IAoKIAoKYSkgSSBm
aW5kIHRoYXQgdGhvdWdodCB1bmNsZWFuLiAKCmIpIHRoZSBjb21tb24gTExNIGhhbGx1Y2luYXRv
cnktb3JhY2xlcyBhcHBhcmVudGx5IGNyZWF0ZSBmYWlybHkgZ29vZCBQZXJsIHNpbmNlIHdlJ3Zl
IHB1dCBzbyBtdWNoIG9mIGl0IG9ubGluZSBmb3IgdGhlbSB0byB2aW9sYXRlIGNvcHlyaWdodHMg
b2YuIChBcyBpbiwgaWYgaXQgZ2l2ZXMgeW91IGNvZGUgSSB3cm90ZSBhcyAiU2FtZSBMaWNlbnNl
IGFzIFBlcmwiIGFuZCBkb2Vzbid0IHRlbGwgeW91IHRoYXQsIGl0J3MgdGhlZnQuKSBPdmlkIChD
dXJ0aXMpIGhhcyBiZWVuIGJsb2dnaW5nIGFib3V0IHVzaW5nIHRoZW0uIEhlJ3MgYSBnb29kIGVu
b3VnaCBjb2RlciBoZSBjYW4gZml4IHdoYXRldmVyIGVycm9ycyB0aGUgTExNIGhhbGx1Y2luYXRl
cywgc28gaXQgbWF5IHNhdmUgaGltIHRpbWUgYW5kIG5vdCBjcmVhdGUgbW9yZSB0ZWNobmljYWwg
ZGVidCBkdWUgdG8gaGlkZGVuIGJ1Z3MgYnV0IC4uLgoKIAoKLy8gQmlsbAoKIAoKIAoKCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkJvc3Rvbi1wbSBtYWls
aW5nIGxpc3QKQm9zdG9uLXBtQHBtLm9yZwpodHRwczovL21haWwucG0ub3JnL21haWxtYW4vbGlz
dGluZm8vYm9zdG9uLXBtCg==