From f993e4bc51f5f767d5901ac489863b54f2c29584 Mon Sep 17 00:00:00 2001 From: villares Date: Sun, 21 Apr 2019 12:00:40 -0300 Subject: [PATCH] 190421DBN --- 2018/sketch_180118a/DBN_Letters.pdf | Bin 3293 -> 3293 bytes 2018/sketch_180119a/DBN_Letters.pdf | Bin 796 -> 0 bytes 2019/sketch_190421a/data/dbnletters.dbn | 341 +++++++++ .../data/dbnletters_first_X_option.dbn | 340 +++++++++ 2019/sketch_190421a/dbn_generate_letters.py | 63 ++ 2019/sketch_190421a/dbn_generate_polys.py | 84 +++ 2019/sketch_190421a/dbn_letters.py | 450 ++++++++++++ 2019/sketch_190421a/dbn_polys.py | 672 ++++++++++++++++++ 2019/sketch_190421a/sketch_190421a.png | Bin 0 -> 20140 bytes 2019/sketch_190421a/sketch_190421a.pyde | 55 ++ README.md | 10 + 11 files changed, 2015 insertions(+) delete mode 100644 2018/sketch_180119a/DBN_Letters.pdf create mode 100755 2019/sketch_190421a/data/dbnletters.dbn create mode 100755 2019/sketch_190421a/data/dbnletters_first_X_option.dbn create mode 100644 2019/sketch_190421a/dbn_generate_letters.py create mode 100644 2019/sketch_190421a/dbn_generate_polys.py create mode 100644 2019/sketch_190421a/dbn_letters.py create mode 100644 2019/sketch_190421a/dbn_polys.py create mode 100644 2019/sketch_190421a/sketch_190421a.png create mode 100644 2019/sketch_190421a/sketch_190421a.pyde diff --git a/2018/sketch_180118a/DBN_Letters.pdf b/2018/sketch_180118a/DBN_Letters.pdf index f6ac1fe1991adab3e4ab7aafb67fd8943a902ba5..8b49ea430eaa71d167f63ef1738d5bfc551ecd4b 100644 GIT binary patch delta 2712 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 SWjHrwWHB~lWjSJ#u?#F$Bm?09 delta 2712 zcmV;J3TO4*8QmF>MSr`lWVaE_=PTw51is0W8W02+P#}2$2Zk~Qf}ty5BmKVFkK&sH z?*^Bt)}6zufzu74_ejHSeEa|M|_lf3N1g{=(8Pez2(||9>_=}(zZ_duK^vNVnVZ0ctw4^LVUYu7C0u)CYC~QMSZ;zE%RL9t~ehFt|*1yW=|oT z)O>%|*#U!@vo?f#y?Ji$9s~f7vY`&hwm(p0+#sV=F}Pwz|~~qB=C+ z*=$e&&O0@5CAoYwP?#EotOhvv-N0JC0qf)8f?<%n^_dN7rm0Ibx<|8%;aLn)Ih~Su z%H)xvDn65Cy2XDaLo!g98nm#8%NF_y3L}rkpiWcXj(>5H5Y_XZ0h~{l42nS@(P%p) z++TNTFgS)1HjOL>?Ca&MIT*OgC2m`RH|RD_CylFPLUbG)r&X%C0Xu~y- zqIW@!dnm>~CzmK|<$sE6v-}|k-bN{B1EKi zqyDo)TLdvN53W?GOeefEO}ZE|TBPN5Gt$LT(MtE{m{r{c>n|9bG0 z1+9J&tQypEZPP6}Q;i}msREONcV8j56@0-8z6@K~3|hiaJj)(vbX~zQUBEzAh~tf+ zfPd}vNMV{Wu~m7*^Qqzu2G>2rWU?gjgL~t6z8ZMu-^qY;C*Ar850+4r;%gQuo;^5i zp*h5&ii`Et$C`mAzTBCbABf!)kuFa@hivXpWb()c3Ens2EG6j9TVjj@iP;NJ@ zAjwI;_Mx7sbAU6-NG-K)D@ysNo#fWU@Y4b1)O#4%TbQA{eT;f9@YSEz zL7*8XRIU(4oPa4^?K@r{Ndl7>fIEak?>uNlxFma?41aD% zWL;|bGMrJ+cIjBI>EwwI&3LGHJ~TMh8tC1iMYKjmHy{?Y5q#M9e7gmj)@69)K)6zd zZXSsNZRQ$xiQ8Q4S>ldI>$`l;2Q~mjuybMEbK@a?p<@qfFs`uo^VG6{qS=56v8{j> zbicO;xyhsL8XUL&3xk>@3|deDynmkQHobsYM9HnpPlCcQwSc$<%D0{%;00OfGpiy( z{-BtStho@D(dPfTNfyyjSr+tTMGv_;QBBMxJh4|`w9U9u8dmQ)o1vpQ}UzkHVbr9$$}#5^HI%2kADK57!1NF;cmHR zV-j5~K*HrwlW?~c@K*B?60XlD2{)}8eJvnxseF=f6PUdl1XB*t+G9x{*??68J8HNs zym_-@xwg=7dF0pk<|@1cMIO1s7PiO$Y~AzLWl5hhq8Zhc; z%#j0@Jv%74A&d%cP=ASL-?M{)%LaD^7rhFRjH+1qlZNY6tzi^vxZaE+?#8QJY+=Ac z9JAP_dZqC>%oGD@kkWIP2HOs}SDOv2JBXEbqZkV*m#Ls>x$!34c?&U@8RIJ4c|+4G zCyCO>qo&Y0)($TuCW@~2qoljt0t8gz3EgxU6;~~OuY-J8SifYKtT1+=~%%S(+YAA!P*b8+9WN?2GMjW@rGEs^+t)lH*zv@`*t?0R#Ob{lh`X?72^UCOsE&|m%I{~uW!FwLK)@Wx5KSqkD{u`5+=Rm;7dC?}R$J&f=(padgNoCIC47+E z4eY1~UatW#HQ2N+zrLNR=ISB&QT5HYPy$R@X%onhqrbYv%o8F|~6qoPdFk_2B zG#`SseX1HfGL%RC;%;A5Vp537YFwOrM?gyN$pX_Oi~>Pa5um<(~{ zAQmEnpocMU8N3=c5!g*6pmiRp*FXt~zjgZ7WKtsCgg9(y^woI3LOf zp?@~e=beh@qxUiIT4Bm7OGG%IKFGkL+bT!M?D=r9vd4w9!Rtp`4*Upk~}QeuO6UgaJGs!agc#G@A1`9 zYW?JN+(8ER{DsuXn*{hE1NY{2+yr~0x*u*R2N@VLVTTvM;~)cXHw#fpQ8K&2f2n`} z2UkRN$+J)jAps6JFflSPGBYwXFg7hPGLwG`7!EivF)}bRGcq(VHZ3qRlcfvFLSr^z zH8M9fWi(-7WjHZ6G-P3AWI1JJHe@t2Ff=nYI6gcxGGk(9Wn?#FW;J1AH!x*pHa0La SH#ae2W;bLuGc`Dqu?#GZk~FOV diff --git a/2018/sketch_180119a/DBN_Letters.pdf b/2018/sketch_180119a/DBN_Letters.pdf deleted file mode 100644 index 3c2b5152b92be73a9c00d0893507f93dd078b079..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 796 zcmaKqPm9w)7{*1|r35^9*o&|-2g`O{wlkA7|D@!wt%abAG0kD2_AqJQ>_)p8Nv6>C z><92tyol^U#IxT(L==P-)DN)Leh??IG}41}nasoUzWm?%Z*_62~N&0ziw?mIe&5W=gr#l zE8Bb5Un-DB%ii*;^|cLv7Ngxm%UDs`3)O!vq`i<8p-jFF|G2EAt_bx^fAP?j4m-i%@D) ztEIQheWLCVva^djau*`u>Hl3am}oMBtdW$NlyoROLp0Eif`2fl8N>=fhC)^c8M?0N zC`K!dO1|QtbfsxTu4PT5hRkeD(+nBJn${wArHPCsW5|l1&`o2GiYR>ScF~}17yz1K zn2a#fq*hEu#L`11!_e(8qM_3ctr*Biw}Hlb1f~%)D~?QP*+vxEEY_SM_Bj`*ScZ@L Y$umHPOg$GY6XoQ(MwNQ~?t`B42e2~akpKVy diff --git a/2019/sketch_190421a/data/dbnletters.dbn b/2019/sketch_190421a/data/dbnletters.dbn new file mode 100755 index 00000000..ff0cf4d4 --- /dev/null +++ b/2019/sketch_190421a/data/dbnletters.dbn @@ -0,0 +1,341 @@ +// dbnletters +command letterA h v +{ + line h v h (v+7) + line (h) (v+7) (h+3) (v+10) + line (h+3) (v+10) (h+10) (v+3) + line (h+10) (v+3) (h+10) v + line h (v+3) (h+10) (v+3) +} +command letterB h v +{ + line h v h (v+10) + line h (v+10) (h+5) (v+10) + line (h+5) (v+10) (h+8) (v+7) + line h (v+6) (h+7) (v+6) + line (h+7) (v+6) (h+10) (v+3) + line (h+10) (v+3) (h+10) (v+1) + line h v (h+9) v +} +command letterC h v +{ + line (h+4) v (h+10) v + line (h+4) v h (v+4) + line h (v+4) h (v+9) + line (h+1) (v+10) (h+9) (v+10) +} +command letterD h v +{ + line h v h (v+10) + line h v (h+8) v + line (h+8) v (h+10) (v+2) + line (h+10) (v+2) (h+10) (v+6) + line (h+10) (v+6) (h+6) (v+10) + line (h+6) (v+10) h (v+10) +} +command letterE h v +{ + line h (v+3) h (v+10) + line h (v+3) (h+3) v + line (h+3) v (h+10) v + line h (v+6) (h+9) (v+6) + line h (v+10) (h+9) (v+10) +} +command letterF h v +{ + line h v h (v+10) + line h (v+6) (h+8) (v+6) + line h (v+10) (h+10) (v+10) +} +command letterG h v +{ + line (h+4) v (h+9) v + line (h+4) v h (v+4) + line h (v+4) h (v+9) + line (h+1) (v+10) (h+9) (v+10) + line (h+10) (v+1) (h+10) (v+5) + line (h+10) (v+5) (h+6) (v+5) +} +command letterH h v +{ + line h v h (v+10) + line h (v+4) (h+10) (v+4) + line (h+10) v (h+10) (v+10) +} +command letterI h v +{ + line h v (h+10) v + line (h+5) v (h+5) (v+10) + line h (v+10) (h+9) (v+10) +} +command letterJ h v +{ + line h (v+3) (h+3) v + line (h+3) v (h+9) v + line (h+10) (v+1) (h+10) (v+10) +} +command letterK h v +{ + line h v h (v+10) + line h (v+1) (h+9) (v+10) + line (h+5) (v+5) (h+10) v +} +command letterL h v +{ + line h v h (v+10) + line h v (h+10) v +} +command letterM h v +{ + line h v h (v+10) + //line h (v+10) (h+2) (v+10) + line (h+1) (v+10) (h+5) (v+6) + line (h+5) (v+6) (h+9) (v+10) + line (h+10) (v+10) (h+10) v +} +command letterN h v +{ + line h v h (v+10) + line h (v+10) (h+3) (v+10) + line (h+3) (v+10) (h+10) (v+3) + line (h+10) (v+10) (h+10) v +} +command letterO h v +{ + line (h+4) v (h+9) v + line (h+4) v h (v+4) + line h (v+4) h (v+9) + line (h+1) (v+10) (h+7) (v+10) + line (h+7) (v+10) (h+10) (v+7) + line (h+10) (v+7) (h+10) (v+1) +} +command letterP h v +{ + line h v h (v+10) + line h (v+10) (h+7) (v+10) + line (h+7) (v+10) (h+10) (v+7) + line (h+10) (v+6) (h+8) (v+4) + line h (v+4) (h+8) (v+4) +} +command letterQ h v +{ + line (h+4) v (h+8) v + line (h+4) v h (v+4) + line h (v+4) h (v+9) + line (h+1) (v+10) (h+7) (v+10) + line (h+7) (v+10) (h+10) (v+7) + line (h+10) (v+7) (h+10) (v+2) + line (h+6) (v+4) (h+10) v +} +command letterR h v +{ + line h v h (v+10) + line h (v+10) (h+7) (v+10) + line (h+7) (v+10) (h+10) (v+7) + line (h+10) (v+6) (h+8) (v+4) + line h (v+4) (h+8) (v+4) + line (h+6) (v+4) (h+10) v +} +command letterS h v +{ + line h (v+2) (h+2) v + line (h+2) v (h+9) v + line (h+10) (v+1) (h+10) (v+4) + line (h+9) (v+5) (h+2) (v+5) + line (h+2) (v+5) h (v+7) + line h (v+7) h (v+9) + line (h+1) (v+10) (h+9) (v+10) + line (h+9) (v+10) (h+10) (v+9) +} +command letterT h v +{ + line h (v+10) (h+10) (v+10) + line (h+5) (v+10) (h+5) v +} +command letterU h v +{ + line h (v+10) h (v+3) + line h (v+3) (h+3) v + line (h+3) v (h+9) v + line (h+10) (v+1) (h+10) (v+10) +} +command letterV h v +{ + line h (v+10) h (v+5) + line h (v+5) (h+5) v + line (h+5) v (h+10) (v+5) + line (h+10) (v+5) (h+10) (v+10) +} +command letterW h v +{ + line h (v+10) h (v+3) + line h (v+3) (h+3) v + line (h+3) v (h+6) (v+3) + line (h+6) (v+3) (h+9) v + line (h+10) (v+1) (h+10) (v+10) +} +command letterX h v +{ + line h (v+10) h (v+9) + line h (v+9) (h+4) (v+5) + line (h+4) (v+5) (h+6) (v+5) + line (h+6) (v+5) (h+10) (v+9) + line (h+10) (v+9) (h+10) (v+10) + line h v h (v+1) + line h (v+1) (h+4) (v+5) + line (h+6) (v+5) (h+10) (v+1) + line (h+10) (v+1) (h+10) v +} +command letterX2 h v // comment out to use the first option +{ + line h v (h+10) (v+10) + line h (v+10) (h+10) v +} + +command letterY h v +{ + line h (v+10) h (v+7) + line h (v+7) (h+3) (v+4) + line (h+3) (v+4) (h+10) (v+4) + line (h+10) (v+10) (h+10) (v+1) + line (h+9) v (h+2) v + line (h+2) v h (v+2) +} +command letterZ h v +{ + line h (v+10) (h+10) (v+10) + line (h+10) (v+10) h v + line h v (h+10) v +} +command letter l h v +{ + same? l 1 + { + letterA h v + } + same? l 2 + { + letterB h v + } + same? l 3 + { + letterC h v + } + same? l 4 + { + letterD h v + } + same? l 5 + { + letterE h v + } + same? l 6 + { + letterF h v + } + same? l 7 + { + letterG h v + } + same? l 8 + { + letterH h v + } + same? l 9 + { + letterI h v + } + same? l 10 + { + letterJ h v + } + same? l 11 + { + letterK h v + } + same? l 12 + { + letterL h v + } + same? l 13 + { + letterM h v + } + same? l 14 + { + letterN h v + } + same? l 15 + { + letterO h v + } + same? l 16 + { + letterP h v + } + same? l 17 + { + letterQ h v + } + same? l 18 + { + letterR h v + } + same? l 19 + { + letterS h v + } + same? l 20 + { + letterT h v + } + same? l 21 + { + letterU h v + } + same? l 22 + { + letterV h v + } + same? l 23 + { + letterW h v + } + same? l 24 + { + letterX h v + } + same? l 25 + { + letterY h v + } + same? l 26 + { + letterZ h v + } +} +command testdbnletters +{ + paper 0 + pen 100 + set x 17 + set y 73 + set dx 12 + set dy 12 + set n 0 + repeat a 1 25 + { + letter a x y + set x (x+dx) + set n (n+1) + same? n 5 + { + set x 17 + set y (y-dy) + set n 0 + } + } + set x (x+dx*5) + letter 26 x y +} + diff --git a/2019/sketch_190421a/data/dbnletters_first_X_option.dbn b/2019/sketch_190421a/data/dbnletters_first_X_option.dbn new file mode 100755 index 00000000..764983ed --- /dev/null +++ b/2019/sketch_190421a/data/dbnletters_first_X_option.dbn @@ -0,0 +1,340 @@ +// dbnletters +command letterA h v +{ + line h v h (v+7) + line (h) (v+7) (h+3) (v+10) + line (h+3) (v+10) (h+10) (v+3) + line (h+10) (v+3) (h+10) v + line h (v+3) (h+10) (v+3) +} +command letterB h v +{ + line h v h (v+10) + line h (v+10) (h+5) (v+10) + line (h+5) (v+10) (h+8) (v+7) + line h (v+6) (h+7) (v+6) + line (h+7) (v+6) (h+10) (v+3) + line (h+10) (v+3) (h+10) (v+1) + line h v (h+9) v +} +command letterC h v +{ + line (h+4) v (h+10) v + line (h+4) v h (v+4) + line h (v+4) h (v+9) + line (h+1) (v+10) (h+9) (v+10) +} +command letterD h v +{ + line h v h (v+10) + line h v (h+8) v + line (h+8) v (h+10) (v+2) + line (h+10) (v+2) (h+10) (v+6) + line (h+10) (v+6) (h+6) (v+10) + line (h+6) (v+10) h (v+10) +} +command letterE h v +{ + line h (v+3) h (v+10) + line h (v+3) (h+3) v + line (h+3) v (h+10) v + line h (v+6) (h+9) (v+6) + line h (v+10) (h+9) (v+10) +} +command letterF h v +{ + line h v h (v+10) + line h (v+6) (h+8) (v+6) + line h (v+10) (h+10) (v+10) +} +command letterG h v +{ + line (h+4) v (h+9) v + line (h+4) v h (v+4) + line h (v+4) h (v+9) + line (h+1) (v+10) (h+9) (v+10) + line (h+10) (v+1) (h+10) (v+5) + line (h+10) (v+5) (h+6) (v+5) +} +command letterH h v +{ + line h v h (v+10) + line h (v+4) (h+10) (v+4) + line (h+10) v (h+10) (v+10) +} +command letterI h v +{ + line h v (h+10) v + line (h+5) v (h+5) (v+10) + line h (v+10) (h+9) (v+10) +} +command letterJ h v +{ + line h (v+3) (h+3) v + line (h+3) v (h+9) v + line (h+10) (v+1) (h+10) (v+10) +} +command letterK h v +{ + line h v h (v+10) + line h (v+1) (h+9) (v+10) + line (h+5) (v+5) (h+10) v +} +command letterL h v +{ + line h v h (v+10) + line h v (h+10) v +} +command letterM h v +{ + line h v h (v+10) + //line h (v+10) (h+2) (v+10) + line (h+1) (v+10) (h+5) (v+6) + line (h+5) (v+6) (h+9) (v+10) + line (h+10) (v+10) (h+10) v +} +command letterN h v +{ + line h v h (v+10) + line h (v+10) (h+3) (v+10) + line (h+3) (v+10) (h+10) (v+3) + line (h+10) (v+10) (h+10) v +} +command letterO h v +{ + line (h+4) v (h+9) v + line (h+4) v h (v+4) + line h (v+4) h (v+9) + line (h+1) (v+10) (h+7) (v+10) + line (h+7) (v+10) (h+10) (v+7) + line (h+10) (v+7) (h+10) (v+1) +} +command letterP h v +{ + line h v h (v+10) + line h (v+10) (h+7) (v+10) + line (h+7) (v+10) (h+10) (v+7) + line (h+10) (v+6) (h+8) (v+4) + line h (v+4) (h+8) (v+4) +} +command letterQ h v +{ + line (h+4) v (h+8) v + line (h+4) v h (v+4) + line h (v+4) h (v+9) + line (h+1) (v+10) (h+7) (v+10) + line (h+7) (v+10) (h+10) (v+7) + line (h+10) (v+7) (h+10) (v+2) + line (h+6) (v+4) (h+10) v +} +command letterR h v +{ + line h v h (v+10) + line h (v+10) (h+7) (v+10) + line (h+7) (v+10) (h+10) (v+7) + line (h+10) (v+6) (h+8) (v+4) + line h (v+4) (h+8) (v+4) + line (h+6) (v+4) (h+10) v +} +command letterS h v +{ + line h (v+2) (h+2) v + line (h+2) v (h+9) v + line (h+10) (v+1) (h+10) (v+4) + line (h+9) (v+5) (h+2) (v+5) + line (h+2) (v+5) h (v+7) + line h (v+7) h (v+9) + line (h+1) (v+10) (h+9) (v+10) + line (h+9) (v+10) (h+10) (v+9) +} +command letterT h v +{ + line h (v+10) (h+10) (v+10) + line (h+5) (v+10) (h+5) v +} +command letterU h v +{ + line h (v+10) h (v+3) + line h (v+3) (h+3) v + line (h+3) v (h+9) v + line (h+10) (v+1) (h+10) (v+10) +} +command letterV h v +{ + line h (v+10) h (v+5) + line h (v+5) (h+5) v + line (h+5) v (h+10) (v+5) + line (h+10) (v+5) (h+10) (v+10) +} +command letterW h v +{ + line h (v+10) h (v+3) + line h (v+3) (h+3) v + line (h+3) v (h+6) (v+3) + line (h+6) (v+3) (h+9) v + line (h+10) (v+1) (h+10) (v+10) +} +command letterX h v +{ + line h (v+10) h (v+9) + line h (v+9) (h+4) (v+5) + line (h+4) (v+5) (h+6) (v+5) + line (h+6) (v+5) (h+10) (v+9) + line (h+10) (v+9) (h+10) (v+10) + line h v h (v+1) + line h (v+1) (h+4) (v+5) + line (h+6) (v+5) (h+10) (v+1) + line (h+10) (v+1) (h+10) v +} +//command letterX2 h v // comment out to use the first option +//{ +// line h v (h+10) (v+10) +// line h (v+10) (h+10) v +//} +command letterY h v +{ + line h (v+10) h (v+7) + line h (v+7) (h+3) (v+4) + line (h+3) (v+4) (h+10) (v+4) + line (h+10) (v+10) (h+10) (v+1) + line (h+9) v (h+2) v + line (h+2) v h (v+2) +} +command letterZ h v +{ + line h (v+10) (h+10) (v+10) + line (h+10) (v+10) h v + line h v (h+10) v +} +command letter l h v +{ + same? l 1 + { + letterA h v + } + same? l 2 + { + letterB h v + } + same? l 3 + { + letterC h v + } + same? l 4 + { + letterD h v + } + same? l 5 + { + letterE h v + } + same? l 6 + { + letterF h v + } + same? l 7 + { + letterG h v + } + same? l 8 + { + letterH h v + } + same? l 9 + { + letterI h v + } + same? l 10 + { + letterJ h v + } + same? l 11 + { + letterK h v + } + same? l 12 + { + letterL h v + } + same? l 13 + { + letterM h v + } + same? l 14 + { + letterN h v + } + same? l 15 + { + letterO h v + } + same? l 16 + { + letterP h v + } + same? l 17 + { + letterQ h v + } + same? l 18 + { + letterR h v + } + same? l 19 + { + letterS h v + } + same? l 20 + { + letterT h v + } + same? l 21 + { + letterU h v + } + same? l 22 + { + letterV h v + } + same? l 23 + { + letterW h v + } + same? l 24 + { + letterX h v + } + same? l 25 + { + letterY h v + } + same? l 26 + { + letterZ h v + } +} +command testdbnletters +{ + paper 0 + pen 100 + set x 17 + set y 73 + set dx 12 + set dy 12 + set n 0 + repeat a 1 25 + { + letter a x y + set x (x+dx) + set n (n+1) + same? n 5 + { + set x 17 + set y (y-dy) + set n 0 + } + } + set x (x+dx*5) + letter 26 x y +} + diff --git a/2019/sketch_190421a/dbn_generate_letters.py b/2019/sketch_190421a/dbn_generate_letters.py new file mode 100644 index 00000000..75fa7821 --- /dev/null +++ b/2019/sketch_190421a/dbn_generate_letters.py @@ -0,0 +1,63 @@ +""" +Alexandre B A Villares +https://abav.lugaralgum.com/sketch-a-day + +This script generates dbn_letterss.py + +Converting some of Maeda's Design by Number +dbnletters.dbn code -> Processing +""" + +def convert_dbn_source_letters(file_path): + with open("dbn_letters.py", 'w') as out: + out.write('"""\n') + out.write("Alexandre B A Villares\n") + out.write("https://abav.lugaralgum.com/sketch-a-day\n") + out.write("This code was generated by dbn_generate_letters.py\n") + out.write("Converting some of Maeda's Design by Number\n") + out.write('dbnletters.dbn code -> Processing\n"""\n') + out.write("dbn_letter = {} # Dict of functions\n") + out.write("\n") + with open(file_path, "r") as f: + dbn_source = f.readlines() + inside_block = False + command_name = "" + command_block = [] + for ln in dbn_source: + if ln.count("command"): + command_name = ln[14:15] + elif ln.count("{"): + inside_block = True + elif ln.count("}"): + if command_name in "ABCDEFGHIJKLMNOPQRSTUVWXYZ": + def_dbn_letter(command_block, command_name) + command_block = [] # empty block + inside_block = False + elif inside_block: + command_block.append(ln.lstrip()) + +def def_dbn_letter(dbn_block, key_): + p_block = [] + for dbn_line in dbn_block: + if dbn_line: + # for debug + p_block.append(" if debug_poly: stroke(random(256),200, 200)\n") + p_block.append(" " + dbn_line + .replace("line ", "line(") + .replace(" ", ",") + .replace("//", "#") + .strip() + + ")\n") + with open("dbn_letters.py", 'a') as out: + out.write("# " + key_ + "\n") + out.write("def dbn_letter" + key_ + "(h, v, debug_poly=False):\n") + out.write(" pushMatrix()\n") + out.write(" scale(1, -1)\n") + for py_processing_line in p_block: + out.write(py_processing_line) + out.write(" popMatrix()\n") + out.write("dbn_letter['" + key_ + "'] = dbn_letter" + key_ + "\n") + out.write("dbn_letter[" + str(ord(key_) - 64) + + "] = dbn_letter" + key_ + "\n") + + diff --git a/2019/sketch_190421a/dbn_generate_polys.py b/2019/sketch_190421a/dbn_generate_polys.py new file mode 100644 index 00000000..096d0a43 --- /dev/null +++ b/2019/sketch_190421a/dbn_generate_polys.py @@ -0,0 +1,84 @@ +""" +Alexandre B A Villares +https://abav.lugaralgum.com/sketch-a-day + +This script generates dbn_polys.py + +Converting some of Maeda's Design by Number +dbnletters.dbn code -> Processing +""" + +def convert_dbn_source_polys(file_path): + with open("dbn_polys.py", 'w') as out: + out.write('"""\n') + out.write("Alexandre B A Villares\n") + out.write("https://abav.lugaralgum.com/sketch-a-day\n") + out.write("This code was generated by dbn_generate_polys.py\n") + out.write("Converting some of Maeda's Design by Number\n") + out.write('dbnletters.dbn code -> Processing\n"""\n') + out.write("dbn_p_letter = {} # Dict of functions\n") + out.write("\n") + with open(file_path, "r") as f: + dbn_source = f.readlines() + inside_block = False + command_name = "" + command_block = [] + for ln in dbn_source: + if ln.count("command"): + command_name = ln[14:15] + elif ln.count("{"): + inside_block = True + elif ln.count("}"): + if command_name in "ABCDEFGHIJKLMNOPQRSTUVWXYZ": + def_dbn_p_letter(command_block, command_name) + command_block = [] # empty block + inside_block = False + elif inside_block: + command_block.append(ln.lstrip()) + + +def def_dbn_p_letter(dbn_block, key_): + p_block = [] + + for dbn_line in dbn_block: + if dbn_line: + p_lines =(" " + dbn_line # all this to convert lines() to shapes + .replace("(", "") + .replace(")", "") + .replace("line ", "vertex(") + .replace(" ", ",", 1) + .replace(" ", "$", 1) # token to split line into 2 vertices + .replace(" ", ",") + .replace("$", ")\n vertex(", 1) + .replace("//", "#") + .strip() + + ")") + p_block.append(p_lines.split("\n")[0]) + p_block.append(p_lines.split("\n")[1]) + # for ln in p_block: + # print ln.replace(" ","-") + + with open("dbn_polys.py", 'a') as out: + out.write("# " + key_ + "\n") + out.write("def dbn_p_letter" + key_ + "(h, v, debug_poly=False):\n") + out.write(" pushMatrix()\n") + out.write(" scale(1, -1)\n") + out.write(" if debug_poly: stroke(random(256),200, 200)\n") # for debug + out.write(" beginShape()\n") + v_count = 0 + for i, line_ in enumerate(p_block): + if line_ != p_block[i-1]: # and line_ != p_block[i-2]: # if repeated + out.write(line_ + "\n") + v_count += 1 + else: out.write(" # " + line_.lstrip() + "\n") + if i % 2 and i < len(p_block)-2: # if on odd lines, next doesn't repeat + if line_ != p_block[i+1]: + #out.write(" #---\n") + out.write(" endShape()\n") + out.write(" if debug_poly: stroke(random(256),200, 200)\n") # for debug + out.write(" beginShape()\n") + out.write(" endShape()\n") + out.write(" popMatrix()\n") + out.write("dbn_p_letter['" + key_ + "'] = dbn_p_letter" + key_ + "\n") + out.write("dbn_p_letter[" + str(ord(key_) - 64) + + "] = dbn_p_letter" + key_ + "\n") diff --git a/2019/sketch_190421a/dbn_letters.py b/2019/sketch_190421a/dbn_letters.py new file mode 100644 index 00000000..77aed490 --- /dev/null +++ b/2019/sketch_190421a/dbn_letters.py @@ -0,0 +1,450 @@ +""" +Alexandre B A Villares +https://abav.lugaralgum.com/sketch-a-day +This code was generated by dbn_generate_letters.py +Converting some of Maeda's Design by Number +dbnletters.dbn code -> Processing +""" +dbn_letter = {} # Dict of functions + +# A +def dbn_letterA(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + line(h,v,h,(v+7)) + if debug_poly: stroke(random(256),200, 200) + line((h),(v+7),(h+3),(v+10)) + if debug_poly: stroke(random(256),200, 200) + line((h+3),(v+10),(h+10),(v+3)) + if debug_poly: stroke(random(256),200, 200) + line((h+10),(v+3),(h+10),v) + if debug_poly: stroke(random(256),200, 200) + line(h,(v+3),(h+10),(v+3)) + popMatrix() +dbn_letter['A'] = dbn_letterA +dbn_letter[1] = dbn_letterA +# B +def dbn_letterB(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + line(h,v,h,(v+10)) + if debug_poly: stroke(random(256),200, 200) + line(h,(v+10),(h+5),(v+10)) + if debug_poly: stroke(random(256),200, 200) + line((h+5),(v+10),(h+8),(v+7)) + if debug_poly: stroke(random(256),200, 200) + line(h,(v+6),(h+7),(v+6)) + if debug_poly: stroke(random(256),200, 200) + line((h+7),(v+6),(h+10),(v+3)) + if debug_poly: stroke(random(256),200, 200) + line((h+10),(v+3),(h+10),(v+1)) + if debug_poly: stroke(random(256),200, 200) + line(h,v,(h+9),v) + popMatrix() +dbn_letter['B'] = dbn_letterB +dbn_letter[2] = dbn_letterB +# C +def dbn_letterC(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + line((h+4),v,(h+10),v) + if debug_poly: stroke(random(256),200, 200) + line((h+4),v,h,(v+4)) + if debug_poly: stroke(random(256),200, 200) + line(h,(v+4),h,(v+9)) + if debug_poly: stroke(random(256),200, 200) + line((h+1),(v+10),(h+9),(v+10)) + popMatrix() +dbn_letter['C'] = dbn_letterC +dbn_letter[3] = dbn_letterC +# D +def dbn_letterD(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + line(h,v,h,(v+10)) + if debug_poly: stroke(random(256),200, 200) + line(h,v,(h+8),v) + if debug_poly: stroke(random(256),200, 200) + line((h+8),v,(h+10),(v+2)) + if debug_poly: stroke(random(256),200, 200) + line((h+10),(v+2),(h+10),(v+6)) + if debug_poly: stroke(random(256),200, 200) + line((h+10),(v+6),(h+6),(v+10)) + if debug_poly: stroke(random(256),200, 200) + line((h+6),(v+10),h,(v+10)) + popMatrix() +dbn_letter['D'] = dbn_letterD +dbn_letter[4] = dbn_letterD +# E +def dbn_letterE(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + line(h,(v+3),h,(v+10)) + if debug_poly: stroke(random(256),200, 200) + line(h,(v+3),(h+3),v) + if debug_poly: stroke(random(256),200, 200) + line((h+3),v,(h+10),v) + if debug_poly: stroke(random(256),200, 200) + line(h,(v+6),(h+9),(v+6)) + if debug_poly: stroke(random(256),200, 200) + line(h,(v+10),(h+9),(v+10)) + popMatrix() +dbn_letter['E'] = dbn_letterE +dbn_letter[5] = dbn_letterE +# F +def dbn_letterF(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + line(h,v,h,(v+10)) + if debug_poly: stroke(random(256),200, 200) + line(h,(v+6),(h+8),(v+6)) + if debug_poly: stroke(random(256),200, 200) + line(h,(v+10),(h+10),(v+10)) + popMatrix() +dbn_letter['F'] = dbn_letterF +dbn_letter[6] = dbn_letterF +# G +def dbn_letterG(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + line((h+4),v,(h+9),v) + if debug_poly: stroke(random(256),200, 200) + line((h+4),v,h,(v+4)) + if debug_poly: stroke(random(256),200, 200) + line(h,(v+4),h,(v+9)) + if debug_poly: stroke(random(256),200, 200) + line((h+1),(v+10),(h+9),(v+10)) + if debug_poly: stroke(random(256),200, 200) + line((h+10),(v+1),(h+10),(v+5)) + if debug_poly: stroke(random(256),200, 200) + line((h+10),(v+5),(h+6),(v+5)) + popMatrix() +dbn_letter['G'] = dbn_letterG +dbn_letter[7] = dbn_letterG +# H +def dbn_letterH(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + line(h,v,h,(v+10)) + if debug_poly: stroke(random(256),200, 200) + line(h,(v+4),(h+10),(v+4)) + if debug_poly: stroke(random(256),200, 200) + line((h+10),v,(h+10),(v+10)) + popMatrix() +dbn_letter['H'] = dbn_letterH +dbn_letter[8] = dbn_letterH +# I +def dbn_letterI(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + line(h,v,(h+10),v) + if debug_poly: stroke(random(256),200, 200) + line((h+5),v,(h+5),(v+10)) + if debug_poly: stroke(random(256),200, 200) + line(h,(v+10),(h+9),(v+10)) + popMatrix() +dbn_letter['I'] = dbn_letterI +dbn_letter[9] = dbn_letterI +# J +def dbn_letterJ(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + line(h,(v+3),(h+3),v) + if debug_poly: stroke(random(256),200, 200) + line((h+3),v,(h+9),v) + if debug_poly: stroke(random(256),200, 200) + line((h+10),(v+1),(h+10),(v+10)) + popMatrix() +dbn_letter['J'] = dbn_letterJ +dbn_letter[10] = dbn_letterJ +# K +def dbn_letterK(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + line(h,v,h,(v+10)) + if debug_poly: stroke(random(256),200, 200) + line(h,(v+1),(h+9),(v+10)) + if debug_poly: stroke(random(256),200, 200) + line((h+5),(v+5),(h+10),v) + popMatrix() +dbn_letter['K'] = dbn_letterK +dbn_letter[11] = dbn_letterK +# L +def dbn_letterL(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + line(h,v,h,(v+10)) + if debug_poly: stroke(random(256),200, 200) + line(h,v,(h+10),v) + popMatrix() +dbn_letter['L'] = dbn_letterL +dbn_letter[12] = dbn_letterL +# M +def dbn_letterM(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + line(h,v,h,(v+10)) + if debug_poly: stroke(random(256),200, 200) + #line(h,(v+10),(h+2),(v+10)) + if debug_poly: stroke(random(256),200, 200) + line((h+1),(v+10),(h+5),(v+6)) + if debug_poly: stroke(random(256),200, 200) + line((h+5),(v+6),(h+9),(v+10)) + if debug_poly: stroke(random(256),200, 200) + line((h+10),(v+10),(h+10),v) + popMatrix() +dbn_letter['M'] = dbn_letterM +dbn_letter[13] = dbn_letterM +# N +def dbn_letterN(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + line(h,v,h,(v+10)) + if debug_poly: stroke(random(256),200, 200) + line(h,(v+10),(h+3),(v+10)) + if debug_poly: stroke(random(256),200, 200) + line((h+3),(v+10),(h+10),(v+3)) + if debug_poly: stroke(random(256),200, 200) + line((h+10),(v+10),(h+10),v) + popMatrix() +dbn_letter['N'] = dbn_letterN +dbn_letter[14] = dbn_letterN +# O +def dbn_letterO(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + line((h+4),v,(h+9),v) + if debug_poly: stroke(random(256),200, 200) + line((h+4),v,h,(v+4)) + if debug_poly: stroke(random(256),200, 200) + line(h,(v+4),h,(v+9)) + if debug_poly: stroke(random(256),200, 200) + line((h+1),(v+10),(h+7),(v+10)) + if debug_poly: stroke(random(256),200, 200) + line((h+7),(v+10),(h+10),(v+7)) + if debug_poly: stroke(random(256),200, 200) + line((h+10),(v+7),(h+10),(v+1)) + popMatrix() +dbn_letter['O'] = dbn_letterO +dbn_letter[15] = dbn_letterO +# P +def dbn_letterP(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + line(h,v,h,(v+10)) + if debug_poly: stroke(random(256),200, 200) + line(h,(v+10),(h+7),(v+10)) + if debug_poly: stroke(random(256),200, 200) + line((h+7),(v+10),(h+10),(v+7)) + if debug_poly: stroke(random(256),200, 200) + line((h+10),(v+6),(h+8),(v+4)) + if debug_poly: stroke(random(256),200, 200) + line(h,(v+4),(h+8),(v+4)) + popMatrix() +dbn_letter['P'] = dbn_letterP +dbn_letter[16] = dbn_letterP +# Q +def dbn_letterQ(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + line((h+4),v,(h+8),v) + if debug_poly: stroke(random(256),200, 200) + line((h+4),v,h,(v+4)) + if debug_poly: stroke(random(256),200, 200) + line(h,(v+4),h,(v+9)) + if debug_poly: stroke(random(256),200, 200) + line((h+1),(v+10),(h+7),(v+10)) + if debug_poly: stroke(random(256),200, 200) + line((h+7),(v+10),(h+10),(v+7)) + if debug_poly: stroke(random(256),200, 200) + line((h+10),(v+7),(h+10),(v+2)) + if debug_poly: stroke(random(256),200, 200) + line((h+6),(v+4),(h+10),v) + popMatrix() +dbn_letter['Q'] = dbn_letterQ +dbn_letter[17] = dbn_letterQ +# R +def dbn_letterR(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + line(h,v,h,(v+10)) + if debug_poly: stroke(random(256),200, 200) + line(h,(v+10),(h+7),(v+10)) + if debug_poly: stroke(random(256),200, 200) + line((h+7),(v+10),(h+10),(v+7)) + if debug_poly: stroke(random(256),200, 200) + line((h+10),(v+6),(h+8),(v+4)) + if debug_poly: stroke(random(256),200, 200) + line(h,(v+4),(h+8),(v+4)) + if debug_poly: stroke(random(256),200, 200) + line((h+6),(v+4),(h+10),v) + popMatrix() +dbn_letter['R'] = dbn_letterR +dbn_letter[18] = dbn_letterR +# S +def dbn_letterS(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + line(h,(v+2),(h+2),v) + if debug_poly: stroke(random(256),200, 200) + line((h+2),v,(h+9),v) + if debug_poly: stroke(random(256),200, 200) + line((h+10),(v+1),(h+10),(v+4)) + if debug_poly: stroke(random(256),200, 200) + line((h+9),(v+5),(h+2),(v+5)) + if debug_poly: stroke(random(256),200, 200) + line((h+2),(v+5),h,(v+7)) + if debug_poly: stroke(random(256),200, 200) + line(h,(v+7),h,(v+9)) + if debug_poly: stroke(random(256),200, 200) + line((h+1),(v+10),(h+9),(v+10)) + if debug_poly: stroke(random(256),200, 200) + line((h+9),(v+10),(h+10),(v+9)) + popMatrix() +dbn_letter['S'] = dbn_letterS +dbn_letter[19] = dbn_letterS +# T +def dbn_letterT(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + line(h,(v+10),(h+10),(v+10)) + if debug_poly: stroke(random(256),200, 200) + line((h+5),(v+10),(h+5),v) + popMatrix() +dbn_letter['T'] = dbn_letterT +dbn_letter[20] = dbn_letterT +# U +def dbn_letterU(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + line(h,(v+10),h,(v+3)) + if debug_poly: stroke(random(256),200, 200) + line(h,(v+3),(h+3),v) + if debug_poly: stroke(random(256),200, 200) + line((h+3),v,(h+9),v) + if debug_poly: stroke(random(256),200, 200) + line((h+10),(v+1),(h+10),(v+10)) + popMatrix() +dbn_letter['U'] = dbn_letterU +dbn_letter[21] = dbn_letterU +# V +def dbn_letterV(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + line(h,(v+10),h,(v+5)) + if debug_poly: stroke(random(256),200, 200) + line(h,(v+5),(h+5),v) + if debug_poly: stroke(random(256),200, 200) + line((h+5),v,(h+10),(v+5)) + if debug_poly: stroke(random(256),200, 200) + line((h+10),(v+5),(h+10),(v+10)) + popMatrix() +dbn_letter['V'] = dbn_letterV +dbn_letter[22] = dbn_letterV +# W +def dbn_letterW(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + line(h,(v+10),h,(v+3)) + if debug_poly: stroke(random(256),200, 200) + line(h,(v+3),(h+3),v) + if debug_poly: stroke(random(256),200, 200) + line((h+3),v,(h+6),(v+3)) + if debug_poly: stroke(random(256),200, 200) + line((h+6),(v+3),(h+9),v) + if debug_poly: stroke(random(256),200, 200) + line((h+10),(v+1),(h+10),(v+10)) + popMatrix() +dbn_letter['W'] = dbn_letterW +dbn_letter[23] = dbn_letterW +# X +def dbn_letterX(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + line(h,(v+10),h,(v+9)) + if debug_poly: stroke(random(256),200, 200) + line(h,(v+9),(h+4),(v+5)) + if debug_poly: stroke(random(256),200, 200) + line((h+4),(v+5),(h+6),(v+5)) + if debug_poly: stroke(random(256),200, 200) + line((h+6),(v+5),(h+10),(v+9)) + if debug_poly: stroke(random(256),200, 200) + line((h+10),(v+9),(h+10),(v+10)) + if debug_poly: stroke(random(256),200, 200) + line(h,v,h,(v+1)) + if debug_poly: stroke(random(256),200, 200) + line(h,(v+1),(h+4),(v+5)) + if debug_poly: stroke(random(256),200, 200) + line((h+6),(v+5),(h+10),(v+1)) + if debug_poly: stroke(random(256),200, 200) + line((h+10),(v+1),(h+10),v) + popMatrix() +dbn_letter['X'] = dbn_letterX +dbn_letter[24] = dbn_letterX +# X +def dbn_letterX(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + line(h,v,(h+10),(v+10)) + if debug_poly: stroke(random(256),200, 200) + line(h,(v+10),(h+10),v) + popMatrix() +dbn_letter['X'] = dbn_letterX +dbn_letter[24] = dbn_letterX +# Y +def dbn_letterY(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + line(h,(v+10),h,(v+7)) + if debug_poly: stroke(random(256),200, 200) + line(h,(v+7),(h+3),(v+4)) + if debug_poly: stroke(random(256),200, 200) + line((h+3),(v+4),(h+10),(v+4)) + if debug_poly: stroke(random(256),200, 200) + line((h+10),(v+10),(h+10),(v+1)) + if debug_poly: stroke(random(256),200, 200) + line((h+9),v,(h+2),v) + if debug_poly: stroke(random(256),200, 200) + line((h+2),v,h,(v+2)) + popMatrix() +dbn_letter['Y'] = dbn_letterY +dbn_letter[25] = dbn_letterY +# Z +def dbn_letterZ(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + line(h,(v+10),(h+10),(v+10)) + if debug_poly: stroke(random(256),200, 200) + line((h+10),(v+10),h,v) + if debug_poly: stroke(random(256),200, 200) + line(h,v,(h+10),v) + popMatrix() +dbn_letter['Z'] = dbn_letterZ +dbn_letter[26] = dbn_letterZ diff --git a/2019/sketch_190421a/dbn_polys.py b/2019/sketch_190421a/dbn_polys.py new file mode 100644 index 00000000..1bf9a87e --- /dev/null +++ b/2019/sketch_190421a/dbn_polys.py @@ -0,0 +1,672 @@ +""" +Alexandre B A Villares +https://abav.lugaralgum.com/sketch-a-day +This code was generated by dbn_generate_polys.py +Converting some of Maeda's Design by Number +dbnletters.dbn code -> Processing +""" +dbn_p_letter = {} # Dict of functions + +# A +def dbn_p_letterA(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h,v) + vertex(h,v+7) + # vertex(h,v+7) + vertex(h+3,v+10) + # vertex(h+3,v+10) + vertex(h+10,v+3) + # vertex(h+10,v+3) + vertex(h+10,v) + endShape() + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h,v+3) + vertex(h+10,v+3) + endShape() + popMatrix() +dbn_p_letter['A'] = dbn_p_letterA +dbn_p_letter[1] = dbn_p_letterA +# B +def dbn_p_letterB(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h,v) + vertex(h,v+10) + # vertex(h,v+10) + vertex(h+5,v+10) + # vertex(h+5,v+10) + vertex(h+8,v+7) + endShape() + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h,v+6) + vertex(h+7,v+6) + # vertex(h+7,v+6) + vertex(h+10,v+3) + # vertex(h+10,v+3) + vertex(h+10,v+1) + endShape() + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h,v) + vertex(h+9,v) + endShape() + popMatrix() +dbn_p_letter['B'] = dbn_p_letterB +dbn_p_letter[2] = dbn_p_letterB +# C +def dbn_p_letterC(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h+4,v) + vertex(h+10,v) + endShape() + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h+4,v) + vertex(h,v+4) + # vertex(h,v+4) + vertex(h,v+9) + endShape() + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h+1,v+10) + vertex(h+9,v+10) + endShape() + popMatrix() +dbn_p_letter['C'] = dbn_p_letterC +dbn_p_letter[3] = dbn_p_letterC +# D +def dbn_p_letterD(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h,v) + vertex(h,v+10) + endShape() + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h,v) + vertex(h+8,v) + # vertex(h+8,v) + vertex(h+10,v+2) + # vertex(h+10,v+2) + vertex(h+10,v+6) + # vertex(h+10,v+6) + vertex(h+6,v+10) + # vertex(h+6,v+10) + vertex(h,v+10) + endShape() + popMatrix() +dbn_p_letter['D'] = dbn_p_letterD +dbn_p_letter[4] = dbn_p_letterD +# E +def dbn_p_letterE(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h,v+3) + vertex(h,v+10) + endShape() + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h,v+3) + vertex(h+3,v) + # vertex(h+3,v) + vertex(h+10,v) + endShape() + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h,v+6) + vertex(h+9,v+6) + endShape() + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h,v+10) + vertex(h+9,v+10) + endShape() + popMatrix() +dbn_p_letter['E'] = dbn_p_letterE +dbn_p_letter[5] = dbn_p_letterE +# F +def dbn_p_letterF(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h,v) + vertex(h,v+10) + endShape() + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h,v+6) + vertex(h+8,v+6) + endShape() + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h,v+10) + vertex(h+10,v+10) + endShape() + popMatrix() +dbn_p_letter['F'] = dbn_p_letterF +dbn_p_letter[6] = dbn_p_letterF +# G +def dbn_p_letterG(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h+4,v) + vertex(h+9,v) + endShape() + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h+4,v) + vertex(h,v+4) + # vertex(h,v+4) + vertex(h,v+9) + endShape() + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h+1,v+10) + vertex(h+9,v+10) + endShape() + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h+10,v+1) + vertex(h+10,v+5) + # vertex(h+10,v+5) + vertex(h+6,v+5) + endShape() + popMatrix() +dbn_p_letter['G'] = dbn_p_letterG +dbn_p_letter[7] = dbn_p_letterG +# H +def dbn_p_letterH(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h,v) + vertex(h,v+10) + endShape() + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h,v+4) + vertex(h+10,v+4) + endShape() + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h+10,v) + vertex(h+10,v+10) + endShape() + popMatrix() +dbn_p_letter['H'] = dbn_p_letterH +dbn_p_letter[8] = dbn_p_letterH +# I +def dbn_p_letterI(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h,v) + vertex(h+10,v) + endShape() + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h+5,v) + vertex(h+5,v+10) + endShape() + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h,v+10) + vertex(h+9,v+10) + endShape() + popMatrix() +dbn_p_letter['I'] = dbn_p_letterI +dbn_p_letter[9] = dbn_p_letterI +# J +def dbn_p_letterJ(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h,v+3) + vertex(h+3,v) + # vertex(h+3,v) + vertex(h+9,v) + endShape() + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h+10,v+1) + vertex(h+10,v+10) + endShape() + popMatrix() +dbn_p_letter['J'] = dbn_p_letterJ +dbn_p_letter[10] = dbn_p_letterJ +# K +def dbn_p_letterK(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h,v) + vertex(h,v+10) + endShape() + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h,v+1) + vertex(h+9,v+10) + endShape() + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h+5,v+5) + vertex(h+10,v) + endShape() + popMatrix() +dbn_p_letter['K'] = dbn_p_letterK +dbn_p_letter[11] = dbn_p_letterK +# L +def dbn_p_letterL(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h,v) + vertex(h,v+10) + endShape() + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h,v) + vertex(h+10,v) + endShape() + popMatrix() +dbn_p_letter['L'] = dbn_p_letterL +dbn_p_letter[12] = dbn_p_letterL +# M +def dbn_p_letterM(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h,v) + vertex(h,v+10) + endShape() + if debug_poly: stroke(random(256),200, 200) + beginShape() + #vertex(h,v+10) + vertex(h+2,v+10) + endShape() + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h+1,v+10) + vertex(h+5,v+6) + # vertex(h+5,v+6) + vertex(h+9,v+10) + endShape() + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h+10,v+10) + vertex(h+10,v) + endShape() + popMatrix() +dbn_p_letter['M'] = dbn_p_letterM +dbn_p_letter[13] = dbn_p_letterM +# N +def dbn_p_letterN(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h,v) + vertex(h,v+10) + # vertex(h,v+10) + vertex(h+3,v+10) + # vertex(h+3,v+10) + vertex(h+10,v+3) + endShape() + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h+10,v+10) + vertex(h+10,v) + endShape() + popMatrix() +dbn_p_letter['N'] = dbn_p_letterN +dbn_p_letter[14] = dbn_p_letterN +# O +def dbn_p_letterO(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h+4,v) + vertex(h+9,v) + endShape() + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h+4,v) + vertex(h,v+4) + # vertex(h,v+4) + vertex(h,v+9) + endShape() + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h+1,v+10) + vertex(h+7,v+10) + # vertex(h+7,v+10) + vertex(h+10,v+7) + # vertex(h+10,v+7) + vertex(h+10,v+1) + endShape() + popMatrix() +dbn_p_letter['O'] = dbn_p_letterO +dbn_p_letter[15] = dbn_p_letterO +# P +def dbn_p_letterP(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h,v) + vertex(h,v+10) + # vertex(h,v+10) + vertex(h+7,v+10) + # vertex(h+7,v+10) + vertex(h+10,v+7) + endShape() + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h+10,v+6) + vertex(h+8,v+4) + endShape() + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h,v+4) + vertex(h+8,v+4) + endShape() + popMatrix() +dbn_p_letter['P'] = dbn_p_letterP +dbn_p_letter[16] = dbn_p_letterP +# Q +def dbn_p_letterQ(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h+4,v) + vertex(h+8,v) + endShape() + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h+4,v) + vertex(h,v+4) + # vertex(h,v+4) + vertex(h,v+9) + endShape() + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h+1,v+10) + vertex(h+7,v+10) + # vertex(h+7,v+10) + vertex(h+10,v+7) + # vertex(h+10,v+7) + vertex(h+10,v+2) + endShape() + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h+6,v+4) + vertex(h+10,v) + endShape() + popMatrix() +dbn_p_letter['Q'] = dbn_p_letterQ +dbn_p_letter[17] = dbn_p_letterQ +# R +def dbn_p_letterR(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h,v) + vertex(h,v+10) + # vertex(h,v+10) + vertex(h+7,v+10) + # vertex(h+7,v+10) + vertex(h+10,v+7) + endShape() + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h+10,v+6) + vertex(h+8,v+4) + endShape() + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h,v+4) + vertex(h+8,v+4) + endShape() + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h+6,v+4) + vertex(h+10,v) + endShape() + popMatrix() +dbn_p_letter['R'] = dbn_p_letterR +dbn_p_letter[18] = dbn_p_letterR +# S +def dbn_p_letterS(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h,v+2) + vertex(h+2,v) + # vertex(h+2,v) + vertex(h+9,v) + endShape() + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h+10,v+1) + vertex(h+10,v+4) + endShape() + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h+9,v+5) + vertex(h+2,v+5) + # vertex(h+2,v+5) + vertex(h,v+7) + # vertex(h,v+7) + vertex(h,v+9) + endShape() + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h+1,v+10) + vertex(h+9,v+10) + # vertex(h+9,v+10) + vertex(h+10,v+9) + endShape() + popMatrix() +dbn_p_letter['S'] = dbn_p_letterS +dbn_p_letter[19] = dbn_p_letterS +# T +def dbn_p_letterT(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h,v+10) + vertex(h+10,v+10) + endShape() + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h+5,v+10) + vertex(h+5,v) + endShape() + popMatrix() +dbn_p_letter['T'] = dbn_p_letterT +dbn_p_letter[20] = dbn_p_letterT +# U +def dbn_p_letterU(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h,v+10) + vertex(h,v+3) + # vertex(h,v+3) + vertex(h+3,v) + # vertex(h+3,v) + vertex(h+9,v) + endShape() + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h+10,v+1) + vertex(h+10,v+10) + endShape() + popMatrix() +dbn_p_letter['U'] = dbn_p_letterU +dbn_p_letter[21] = dbn_p_letterU +# V +def dbn_p_letterV(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h,v+10) + vertex(h,v+5) + # vertex(h,v+5) + vertex(h+5,v) + # vertex(h+5,v) + vertex(h+10,v+5) + # vertex(h+10,v+5) + vertex(h+10,v+10) + endShape() + popMatrix() +dbn_p_letter['V'] = dbn_p_letterV +dbn_p_letter[22] = dbn_p_letterV +# W +def dbn_p_letterW(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h,v+10) + vertex(h,v+3) + # vertex(h,v+3) + vertex(h+3,v) + # vertex(h+3,v) + vertex(h+6,v+3) + # vertex(h+6,v+3) + vertex(h+9,v) + endShape() + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h+10,v+1) + vertex(h+10,v+10) + endShape() + popMatrix() +dbn_p_letter['W'] = dbn_p_letterW +dbn_p_letter[23] = dbn_p_letterW +# X +def dbn_p_letterX(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h,v+10) + vertex(h,v+9) + # vertex(h,v+9) + vertex(h+4,v+5) + # vertex(h+4,v+5) + vertex(h+6,v+5) + # vertex(h+6,v+5) + vertex(h+10,v+9) + # vertex(h+10,v+9) + vertex(h+10,v+10) + endShape() + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h,v) + vertex(h,v+1) + # vertex(h,v+1) + vertex(h+4,v+5) + endShape() + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h+6,v+5) + vertex(h+10,v+1) + # vertex(h+10,v+1) + vertex(h+10,v) + endShape() + popMatrix() +dbn_p_letter['X'] = dbn_p_letterX +dbn_p_letter[24] = dbn_p_letterX +# X +def dbn_p_letterX(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h,v) + vertex(h+10,v+10) + endShape() + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h,v+10) + vertex(h+10,v) + endShape() + popMatrix() +dbn_p_letter['X'] = dbn_p_letterX +dbn_p_letter[24] = dbn_p_letterX +# Y +def dbn_p_letterY(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h,v+10) + vertex(h,v+7) + # vertex(h,v+7) + vertex(h+3,v+4) + # vertex(h+3,v+4) + vertex(h+10,v+4) + endShape() + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h+10,v+10) + vertex(h+10,v+1) + endShape() + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h+9,v) + vertex(h+2,v) + # vertex(h+2,v) + vertex(h,v+2) + endShape() + popMatrix() +dbn_p_letter['Y'] = dbn_p_letterY +dbn_p_letter[25] = dbn_p_letterY +# Z +def dbn_p_letterZ(h, v, debug_poly=False): + pushMatrix() + scale(1, -1) + if debug_poly: stroke(random(256),200, 200) + beginShape() + vertex(h,v+10) + vertex(h+10,v+10) + # vertex(h+10,v+10) + vertex(h,v) + # vertex(h,v) + vertex(h+10,v) + endShape() + popMatrix() +dbn_p_letter['Z'] = dbn_p_letterZ +dbn_p_letter[26] = dbn_p_letterZ diff --git a/2019/sketch_190421a/sketch_190421a.png b/2019/sketch_190421a/sketch_190421a.png new file mode 100644 index 0000000000000000000000000000000000000000..1d3401f316b350075213348506b127d0ec4009f8 GIT binary patch literal 20140 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 Processing +""" +from dbn_generate_letters import convert_dbn_source_letters +from dbn_generate_polys import convert_dbn_source_polys + +from dbn_letters import * +from dbn_polys import * + +debug_poly = True + +def setup(): + colorMode(HSB) + size(800, 400) + fill(0) + text("Press 't' tto draw letters, and to generate code press 'g'(lines) or 'G'(polys)", 10, 20) + +def keyPressed(): + global debug_poly + if key == 'g': + convert_dbn_source_letters("data/dbnletters.dbn") + if key == 'G': + convert_dbn_source_polys("data/dbnletters.dbn") + if key == 't': + dbn_test() + if key == 'd': + debug_poly = not debug_poly + println("debug mode: " + repr(debug_poly)) + stroke(0) + if key == "s": + saveFrame("###.png") + +def draw(): + scale(4, 4) + +def dbn_test(): + background(200) + noFill() + pushMatrix() + strokeCap(ROUND) + for y in range(0, 5): + for x in range(1, 6): + dbn_letter[x + y * 5](x * 12, -20 - y * 12, debug_poly) + dbn_letterZ(x * 12 + 12, -32 - y * 12) + translate(100, 0) + strokeCap(PROJECT) + for y in range(0, 5): + for x in range(1, 6): + dbn_p_letter[x + y * 5](x * 12, -20 - y * 12, debug_poly) + dbn_letterZ(x * 12 + 12, -32 - y * 12) + popMatrix() diff --git a/README.md b/README.md index cbf6fba5..376ea1f1 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,16 @@ Get updates from my sort-of-weekly newsletter: [[sketch-mail](https://villares.o --- +![sketch_190421a](2019/sketch_190420a/sketch_190421a.png) + +[sketch_190421](https://github.com/villares/sketch-a-day/tree/master/2019/sketch_190420a) [[Py.Processing](https://villares.github.io/como-instalar-o-processing-modo-python/index-EN)] + +This clean up of my Design By Numbers studies from last year will count as today's sketch :) + +Check out the other pieces, pixel and scalable fonts I created here: http://github.com/villares/DesignByNumbers-alphabet + +--- + ![sketch_190420a](2019/sketch_190420a/sketch_190420a.gif) [sketch_190420a](https://github.com/villares/sketch-a-day/tree/master/2019/sketch_190420a) [[Py.Processing](https://villares.github.io/como-instalar-o-processing-modo-python/index-EN)]