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==