From 9f566c8ad296bab8d9c7e1d25c965d2459b784f8 Mon Sep 17 00:00:00 2001 From: Alexandre B A Villares <3694604+villares@users.noreply.github.com> Date: Sat, 1 Aug 2020 20:17:05 -0300 Subject: [PATCH] back to graphs! --- .../sketch_2020_08_01a/sketch_2020_08_01a.png | Bin 0 -> 19622 bytes .../sketch_2020_08_01a.pyde | 91 +++++++++++------- README.md | 6 ++ 3 files changed, 64 insertions(+), 33 deletions(-) create mode 100644 2020/sketch_2020_08_01a/sketch_2020_08_01a.png diff --git a/2020/sketch_2020_08_01a/sketch_2020_08_01a.png b/2020/sketch_2020_08_01a/sketch_2020_08_01a.png new file mode 100644 index 0000000000000000000000000000000000000000..0b97a7f1a4f4b2d5a915ae269af4c6b52f4faa9c GIT binary patch literal 19622 zcmd?Rg;$ha)HaSHhzuzW(%sTsLrFK%NC-noNJuLT-2$R?H_{~~NH@|g-5^NkcjkHD zwSK?9;rpJo9+%5CbKmFev-jD1U)QxKOkGtT6P*+t2?+^P;gyUg64GNm#Q$iI!M|`l z!Hz&eQg%>~k<$J!chKS;x^d?F&}MHe6Co33ocu-C#)c`coxi3?*6x7PJf~BZ_DPV> z7!x%=ToUS~&)%&a=J1OYw}em5AS*P_U%SRUR$I!*onve8Y;d+Qy>Wl|&c(`VWH9}k z@jq`jiK~{A6JL(^!&|8%XQCATY&_LGTPOEE!#7uci`Z#kJ=<@vDxV-BeZ&EOr-Fm^ zp;3cBplJWs|I`0doBjU|^#6CVI3y!t7YmcGP46z(Vyf|t?2shUMB?xmRbL3ZZeJd+ zv7tI~_m|Z#UDuZTM!89%eHx0hyNj?B6BL|TTpUVv z#WHe+<6zCaF!j6ISX^98Pp2THJDa{9lc!vqpTC(M@nd+nA6mX0YPndtIiGi|7Tnp4 zlc(^!zuLOExEO=Nadw|&?MD)E7!i|@n5q2sEz9_@8kS+an)uoz&av%k$gzr>IlsRC zwfMA4)=~36)yC~cqi8-Uw5)U-bV}dTvHgAf*RP3K6w zDgDs-yV@1u(kMpVNh5=nwX}K3`EbH1!DH{}I3OR|rLa-!xB1OFI5=4RI84oF1!6ig zJG(L(ugm={vLGNGXUVyT+@}y1T39b6em-MS#c06Z?6lHxc`3LT-)eWaofC6ESAI8# zDX^f#pF<1S&Zb#?W=CBzMEl%gLV9nr$ksCnt&Cucu@ek2ZvCJfJGDo`S1 z;hVnRNHV=&ez;qvm5(;^zdIWk7$D*_8MNePQ?(@~C$D8`sIOwW^YtYkr{;q)tzJxMsrA*@FL~Kj>RCE#76llPMB>oEM^kaod3bpEf4-40Sl6XX zvQGDu3vzn%MpF6q$nT=*B;KMY8WRhvN<7TU&#(0hIt|#=rRCeVvJ%>chK5rrER;eE zxeAt+mNFg+N9Y`EY#$`_4GheEKM$OoROJMy=E2cc*y|TMpw#fu7r?PnQc{+-cENF4 zkEGXn^3KoC-`(AnYE}up-;AX7HYc*J#lSrOofXj3)Rc~%F6#OFCg|b*=z);>_IFZi zrvZ2hZxv6vh=-~`|9FAgUOhf318(iUwUyOrh)e#lpCBJ!*K_)4^GcYGlcS@WLpx)J z&&hbk{pmsdvfrZHv@vk+^0s^7fgqd!%BtD@tAAT(JPgaj!^3mhq(V{V3UnwfPIVM= zrz1C6sV;ii@O1kL+PUfJf`^;U6i4yXQR(_c_jyDR%-NM!8Ub7M5E6Y+q!)4ww<+A+ zCLrxUs!->$c5+h3=H>5X-6D4Aly^1HfZ30dxY%_hilgMh7ZSmNX3>yDByeiaolr$|*-R!Y5Io}qc& z)1+KoT|MltV-*jzkFzMu2{<9?qz}Y_z8V}F+Oa+w{Km6{9TF1aP=5%_J2s{<#S+|9 za4k`ynmZox>aliepH;Ogp3K!3tWY#+csM(Uc6+>vyNyks)o7}i_ZN(0J?brjMS+qz zpIt$MUvV4ZW$3#$a^?9(`nssp@Cr-_CT94_EcVLG%vZ6J@F1yC8gZEI_T1durxZ3K zj^NPQ*F^y{0cg}R(hTuq2^x%o)DL;GHcJnxs;X7y&XT7iO-ybs$y3wQXX26Xu6p>Tys_34Mo;ow|-B~e6;eCmp9i+hCB$bWuio`TTA(CTAC~h zE;N*L${5&jCHGAzZ#X+l;-@)t6)Z0EQ3o=f886q@gl~dx{?+ikj6qm`dChjxz#biQ z?c>w{<;-bjTide8!pl1Gbe31n5Gb0n%u`aqved-ZR`GdUXGg~vT8G}kU)6D^=tJn= zOPfMQE8G+dsi0`jZbqY{qIB+|9v<~G5&Q=ZW@evUBb{())hv{vN*nVB_xJZl-!eS6 z{|614r9z|bB%L)msL4053Ly^Q4-D2_Tv2DjuTiiMe67_oOSj!4gJQEDfdhT)6b?CH zBUVyVi*av0wZ|WBl*)P3Q5?NjyghSmFnNKKkIwJ6f3feS5(D{OYpI;m6cqEMtWNUZ%qjeM;W>_U^DKnAEq`pt+f0L^Fqwkt0LnH zsiF>nOa9v2YZSx2eQOBQVQ{`;cqILt2`SNK%21i=w{iuB_w=G4Y#arXqfph z=i%?)CcMhTYtKnqTQ+W9LpVpg{c{}SGRGwo9`eGJ$w&%~8WThjGUQVWRJw_1aAZUa zHbdj<>#L%JBi!qp8;6zmC&owo2qQrfocAlT6SFDBFx007LS;XgdF^qRA3<9Jyo9!G zew(m7Rm=olni~(&oeCxayS?Rt9e;`&1F0r#n+$wT_GarUUb9eJ6 zH;;g9M4*bi8yOs&nF+JsuGu}8VtoV^OWOVt{D;&DHalH zFXh&1)1MThPdWa40=DLEM~EH-UGtw=UUuYxou8ivF_L8-^oY-%{yBHfn7?B2_V(6AvBTVd0^W}z1hE@vrPnP+yCT6vy7MMbsG%GwuCGrBH&1QoKbxrp0%TqKZUINeUd(eUF( zF(Sc-pg)G9osD`qaP9j*^j^PC;u)*pS)eGeVxy0vft6>q+J8aOll=8- z16%6p&0JdFXyuzX|%kTN@*q+sav8b zV9|*U7Ws$+O{t$ND=VwRCo+(elS3Sod69E`Fdmh*u!DUIk8U4X9vpEt?VtNBUH5R$ zY+wIcwdXIZ#sVgzfQvZVtL8E>WaA3}sJ=2Xj{SC%s zrSf|*Hwy(V5o@QNT_CGPr>?GUUANM@$X!JOY%Npx%EzRhS}3qy1Jc!5L!IH$n7SPn zjQE1;b~}4LJc_lvv@|mStn~@F=xS?g`SY1|2}v0y8g>p2Ci}?D#Ea(kiuUPsivmuh zMIPfJ!l6U@RKX*ouIHx=%pq%KYD#yNfiyZMM*j1U?7o&AGQ*>q-{;AZ^A>oBGk^~* zEEqYFc-1k?RhN9$ffdpg0{7_fS*khzla4rkri-Pbn56n}8uvf3oRVnNUcCHxG7ng@ z)4tciW2Z96AO>#j$L^`@!G(s0p!^J^$vs6(^J^? zKuLT=V;K(!TL{lmRX>CpGBq0KpAM2L=|FZMt=lHag7v zvvnmN=EeE>>NlyJsMhS{Cnd~0RWi@`zD{f$ULlDZs%wv8q5L8Qc3usFeSW9ePR|Ke zIMesu+ll5p=id14FANC|nboV+}q2d7ZHf~bE}+05+1Lg#;9>>V6b_GToS z%67>%^I6EXjgoy%rOg}rrJ?eSU%=Mif4Qm3rR(hLF3BW zA0JUHR#2qC_L{0^OF2{nP`&gF|K48xGimlTH-C(9fY0zv5b-aJI=ih#**H1nTa|1- zzC3CC*hgx}nQZ-3asTkpYgkQRj?7QhD27@REej8nSel0HnXAwUo-uXha5OtqUP-10 zIgY-$O%>&muUm!ZVWUfoFtf^bVh#y~3z3)))@(t{fU*!S3&>FU;2ijkY# zT}kkGx49$%-}DiDDtN4@Wz2XBTdI#ofsV&zP%!D22vNyGNcQ(RVgv1H^xaMj!!O|o zSLy5as_$faMy*Nj;(fla-_#PU3oB%o3%X2r4{LV!@)Fj)2-Wa;G{>-(2Ub0#Vtd+H49_aG}R9u@Zn%J%g4Z z`JHE0UZr4Aa8(KF-GqU3V?zURM%U5Kj)s7R@{2l9geU$&Q8PXXEoNsb7rK3>i#WN^ zx=&bH4WqaPqv*g&FB$Ug!t)19zkipzH{aKzC+A=~y|~ChM0fJe;bC1oq=lk?<&Wj) z6Kz-_0lX3&$E(-Y&P<_ZGODh>iz2LQwsdN~HzKlFUkDhreN~wQgXbC4Qg9n8O^~98 zf<_<~^knYhyEqvc8CXk8d^oCW7hz=B10mRfB+l_TJLm259Z3i#pJX8)QYEzK(!tSD z{^T*gfWU#2j5k{^dzQ|_$-lTbTyX}lr2a~J^D5?$g=?icV{iyf|LveSpZ_e5C&bDk zn9^^2yJ!oe*Q$DHWCNljRf!uf$c2srMUv?CD_G&J%;<0o+_4<3F@ep1WW}&UMZl#~CA)vRqD;KPXqQG&em^L>zS@w#4(Z%-xYu3>RGHikx&3Y+V{f}A7(A=lz z>FltfPPBg>NI1|?;*>rTorAP^skQP^^?%eBtpz1-B2Zpz;|ZzAxMg-0#dynTNP#FA z2T}0*1s+##2OCEXIOwgB49DWpQC*zwX0CjdZ_f_%gjrxuO%b>8V{Hvwf-G?D7s7L! zn!Ign6zUx{BEEh5hROr033xgDs6%m$FH_u!AFn@J=j3}WJN?A4EpP}|VbFx_rm`gs z;MR#dbHl>B%xO90?xO7M?2b(x$jO_*op;`@r^@OuZ(*FSROT;Y_ZW%#$z|i?q5;)) zMtEOPZLcNw9K7p&JcS;NI3%B4Wwv$hcXf-KH~&o^Kkixj#9Tlj6#&L`h$$&wCnbN? zT_GZ3Ihio;*Lzs%=zx|@(;E7qY1E%*|B{qRg{n)Ly?u*<2?44JB|JJPGw1UB2 zrKEpQaVoYNg*m6+x@b=6FNJ=ow2M!wW3rpvp>bb$g2)^{A9dP}1E@kZM7d{FC@~cs z`V@1zZzU%xsg(Qdb>vPlwKNjQa18uk@k6AZXlZHHjjEsfrby)|ek;W?JF%VTX8pzg zuC}a3%oWRAyX6!d)hjxH3lwuut8tVDX~95gv~^adYW`83NPlwi;;%%Cj&@OiEh{2m z9`mXwgX(6(iN?&FnSo2Puuy3{L#uvD@)>rM?tcdGt4L#UsNRG*Usvv=u2`a=iFM+f z3e=f=4^p9JNg5cQtR%_(?}PW1@erjvO?c2bp>?)dwqa1w?BeAf(ZJ04i&%N5aPj{t zs!>%?T-2nituu-@74wWay?smH!GP3?duL~B@5>Nh$DP1kA;^gY+rw!Z^=cha4#Q{}lGYBI;3EHnP_)fJMq18&x4caOL?>{7x z=5+wuDcqnl9UL5_GdJTyH?-LmV$qvDRn=BsJ^|%MNJ-|xvvttMA$=N%iN*oO{-(@O z{5tzl$Iy_9Jn<=k*8^ERdap3-c4VjBK}#|Sn)T;4Yi6UamHz&y#`r0BBli2oh0acR zsv98@(Zf#0{mx<2k+}Q*Oc);HmoHxq0qAn%d*tn7fD8SYNlZbZD{u7n+7AZ%Sn>PS zb9Q}G)B3YbT3T8zQyt9q-TBI)DikhERtKpT91zhlf7PGI&S7F=_Icx9CGp{U0_-^~HG#O>c9fn}eyD1rWZk3}~kN*!?TNP>j!5MWL>%tS_2 zdJU=iG-n;IlbKGMusn&NfFfc*~)l^jhP!(>*$XIZ2;4n{^sc)%bSvH&|!q{>3ZNz7@ zYJejiazL*fMt-&AeMAkAI>}dh%f@@sXUW;RA1j{Ek{md>kHyTW+EqDJ*XA=ru1Px9zM2I+St`E1m*3!R?^!j=Fg7Xoldq&RAq>`Cv$>aoDJpGampC9-=|Vln0m z+^|xj*V+}_C=>bns9a>MXunkNbt$AMI6mcz%{x|bW^$%yJ4`<$O7v5+9ro!QOkHMmjX*&kb zl|kKa6(DkT58=TY=MPz%QN`?=M}aZma>rDC?UR*@?x`x_m_ ztBtHI>M_-;tgUYQaQ{G)iv|UC3BA~aP25x$Pl60jF z>|kc$?He}uWXok@H-PY;1VFJ7u)#yD$1P}}?eZKP96UE`ZPRZ9N{hWzHYUT>YrCR$ zii~^T4LV(J`QKaPLWKuFZW+t8urlPD-le^%4VT~JP|+ae>ae#Q7N$e)B4Mg*YASi_ zUUvDi1ofcP2|r#;#kL?-)bk`tU}@BG+5f?}yy`DtA6EZ`;yjiKWDmBhsLNt@g^dCH z)zH6YE8Y7LVA_6wO>lTws?Jn1oqBL^aAu3Wp83ZOQXRQU#r%;;KC{l-A5X;6|P|Y2kos z+L3Co5*e5jL``17Ce!*XT^bia#|rzLUl^KZO*utrF4!+Un`zuX7hcz)=6^k2knXh$ zmezRp99!&kbg#T^xC%7IsP_lU_Xkskjs)*N<^BDnN4M*kpwiqj-0hBn#;PU?a{ZKw z0Y{RoTQRBo$pr9s2n1qM|59YXBcxY{)cwk5Nj(1_H%NRRpHMMGOf^R+XiF@%F^4%= zfUE2@X&Tg+upq_UN5b`h0~IK0?Ht86Buz!_x^o4e`)xxxOk3X&tgjz zRDYhPpj>m|d;~>{dzO`?8ROV5u(q~lKu1O96~Q_S-te~r!r2>i-^nO`+)EqtVZ#dn z`Ey8kp7b#i5fXMbS0`eeT;I*sf?NA61mZPAmjhC+C&$t3hG~@rum%kN7euFNi?PD+ zeQB5@0K5#tA@gKZ`v(Wc1_oYxW%cV&N)h)#$kXtki`#!A18N|fm>f-`qN3K+e@l`Y zx3_Rk`KaaAkQu_CPThxf<+-Hnt5 ztDer-@W0>kUx&7x{#H6E7PUL;A~LOke%SrpYsA>h=vW{%K82M~C~Q=riE>~mPj1L* z9%=X(l%|qsF_aSDTLo8n*|TvumuD#*p5cTi&!sAl(A?g%J$T;*DN>(0p<`}H?Pf%E zuGX}SuJ0Kfs+0r(M>=oYpSf0HOgnPefCZLPHKi$qUB*^w@DUqyB7YDo$Nae2T3@1|*z%bF5-93R*D{$$81#w`}!0-oo-y+Hc>|a0aD&4Qk;R7Q=if7cSs33 zeQww3cpmX9Z+30~B?MGfRsHVu;wPX=c#6MLbFaW94X(s_zm@#_eA_7H&lfs-<((CF zy9W^}MMrtMXDFad`$W4L^iHl7g7j1I)mm4O3JTi4t7dkCzYK?{L<X-X=U?UB&t`)(1Zu$XLaqH?tG#94mt0&L%y1oo z;S6;2U%!6s1|AeT2ZD_^Z-b7c+P}%m*qys7izuS&`anPo3j-&-ow3cLC4q+6fR=Lj zxYx|vd!Ear485PsQFp}EMRs0Z^f9pg6OdXjxUZ5?Y;X%2Ds=t-T|epoSbdrB1+UI& zRh-;RnZOYo>( zym(QwMk*SI#-7&c4#$oAhb3noI6N{kzo4P90l1hHroEB!?_v!onn|F?4viu%qs}4m zFs$ebN>tG+Mn#h)?;@>kRrh>SE+?KkZQm55TlZTWaGHFY4tH{_V{fC1bq}PF!M;Bf z#w)TBCp*^%fjp7Db3^I}tGv6(C@5a$qfB*ix2Ek&SH zI}z~tRT;A(`4jWM7xJ$yEiTgA%WrLKx;kA`6uxX`7M(qNUJ((yL^n^*M&{`sZ5<&!!EEXg`_TgZnbV4GgNagP4}8CDCe z0Pgs5x0tLrg+ITrfFVTNr_p|Ob#;ARmKSwGNE&9|UuMoo+W)>UY9dohN?FaAM$_uQ z?b7bsbRWb3h=Pph^aPrw{0(5wqp2g&j_&W?eIMqW&&)4;qvaL_8Y|tK4Ke-?Uw%_8 zV4xtwam?Fy#tT|}weB7Idr-`k%F4?PCxtu?Q7HnyKgf*=MTMCZ>f)F*e;5OITgH>? z;?z&i&#HxGQOel2Z!p$tcE4~E5)$q<1#I}c?Ff2<3)Z>P-qj+T@^V) zkwb&hP}R`TkXHT&RnW6zZ|lrX@t?`lr5Astp7eTLAR6$+&KS%ESvP8`bpt<=v=b$TiJU{2DqSe~z`T3mg;)!Y( zUD?K)(aN(EyHkEZW~>Gn2nn-1D*X^zwtoq=JA+IjWuXpQmQTYLKAk-qTE$2xEDr$9 zxGu{4(!&pRrkTJFz)6+K@$Y`^diDqqlPHziu8^FWSsJhWu;}C~O;+jOsAy%Vy(6_> zjCeDRyI9;aWy&fQbx{s@|9lLW-;i@LNYTZ7V!IQ4%Y6YD5*#947upmeeV%kL2YY)x zJo)|2>nn2AkE0rBwagp-hLi)=(uq%_F%k-@$ND9eh}IkJOWtX0gKWPQT_x5)Vu+1c z#C)dEHh#}nt#3purUPnN7%-tn(5Hs$^*?^h_1pX!jw_eY?fZrLw}bf)86~9$IwpD1 zRPn8otr94?U}$MvtOb{`J>A_Q{X!=+2AJ-OB^WruFq6*}fPGx`%xnL4G$jtHjx;75 z5_a6k+x+Kww`{~w5Q5P?g$(+2=&x7gGm-OqM7H!!*471aG|qSbiXU|dS82EXQ=&K5 zo`s@}Eh0Ne&113OT5-5QbX0jKZWMFE+6lfOG9z!=Y^0&95~amnL!_4J(WAuFe( za&>*J^_tY)k)h2(r{dm83fu54XF0pUjfwWcW@*27-21@%!QQsG$Q>XM$`YJP;KS$z1_ z@2Wkjl7>uhR^ zJ&<<b}mO#5))V4&A{vG zB~XA(bdE=T75S&uTjP$8kLzxrX+fIU1#NhNR=ZxZZqZv6xEWdOlbnPR3d|Zw(>u-j zhA=d+uhaE^o{L$eoa`~!pxA!|y0a>7gO$S@DQ#?f+ejaWrpgKEp!yxFMtkQFzk!~f zlZ%IqBs%b1G=k?`#m^_ul}vU4#8XySGfiZBOitx$QgM*8czN3q7WT|H#ldEaysxXO zDAxeiTY!zYd;sD|YM`W8nY0EWNQ0GgPGlt_Wp&|p$SFH{78D1ZZ1ttRw}VhRv|`75 z15@a|SFS>AYtv{DokVo?@S;l~O}bPZoyjdu4ap-4DLv$ZI-lSuD0 z!TlnaD&q0|c+(_~DnD=y0z_YUc|q}L1(Y)o!5P9V5=q52|t;6 z7Zw)w;luU7lBHw){9O90c#S0BSQb;I{{{)yJf|A8s&+3YQW)1x0*JhX$0l6_W^rAn zQN*>cA|8A}`v>U~fh#&@T39d=Nc|elk#?mQlyTRGdL-Sm7d;MzNq;@{St@auSn<+8gbm23d^MW_3>m4Tp&P z$MBq-99@(>*8^OeY2G{t5l10$sA{eYOK9d6SwV&>LwwxY_5_|z6T~0{*^c)~0XZ~&V_0v1pj8oSAqS=H8%?57vz8f;q=$PPe(MC&2 zDm9>FY#adv)qA{o;&Upa@*hX@fATJ6{=C*07pDG=-d0~++dUN%895U##af*J0_v~h zw;fgdj_ntfQnek*|DYkk!8E2JK;^-woKoeM%uOSUVgJdKU5i%OiOQ~awS6?}XWJtL#YN!0?mzE2dYl__Of^-{0X^_C1|8AV!&+o$qV zlam#X7xR)#1`n^79vi{{3pn!C8~B!}{gg60(U&86_Y-J+U7h(?j&h2D>%~fkmbPBc zK>C$LmhD2vAGH<7t_%GxnpgZ`w1VJtWU}#)E&UypD024i&Cm7ylk`x*t;&V*(0em^ zVPZXBJEn3qgv$C*iY`3ItYntRSB9$2pK?~CvgAk0tf87^R-~=yY|ak6gH{GrpUGx7Ept3r)<6Gd$_0oW zi0td$@>xRjs7qwf(4Kp0J1~wHTe{rh@jnuIQVh1wg*JLluBm@NuH8{?K7`A7` z`T6rPUmuKYu+LyQMMcEFfY@i-ujw}c9buG*oze>zPMe=2@-*831r$q6Mau zx1^lzjJ?Js7b+g`1NF;>i#~s;Wi84WQdX@tsG*{?XIZCwa2@P+yI_a!SRgE?KiA8P zN{P3Xc>z-ag+AS$c=oQ3-$8BLTr_MazVpwQ&1#t7xJEl@MOj90$_g`k5CXI-zGt#M zQ#a>#;mkX!E!#b)fRGEq8i{{jPwSYC7tP7ba0m5`1=RlQv!#45#T47T12zNJaZykO zZ8$W)SD}d|n4(xH8#G1qJtVwUM);(la{j~wC-pJk*v1C6TUzsIC%E%f4cd6rvx{;u z>>&LtwM@jxo;7W48TrO0Bj`idpBInv25k+Z0kN4|ErUc1j3Wlu;3kvV+6$?wcjOiBUr^3 z6CItuwix#9tQx)Zw*w2&ShVHm^7%b_!XkC~Q&8RsS3zsU<)gJ6JS7X_1ASIRBq1Mh zIyhs+rjLWX$b6HH)Uvmu(Zg5fwOzt%QRcq~P*fEZls2e)J53|jI%?&O6ek5bqMFXX ze=FE$swl>ITU3C=OGG_eGy6+YQXtQC=|X-^QU524y*rKB;(60{8YJkpkClwi%|HC)}eU}BLIDmp*nj2*&Zf>dNe#UE=zoz9= zU*;n?PI9JgRC9e-{qIPT-~|BkwA~K0-Tp+z_Ss-HZ3J-O{kqzHZc)Bzl{$6E;r=?b zkwd{zl-&_%cm=qh%~CcRsZuVB4CcADA`~|K!66|B6SMuz>i$CwYkdefi4v%(LnLmq zE~1yb_Smn^!x+h*1+HHFl7{vrM7cm}P&8O)ux_G_Grlx|cJGQ|r z-9O6}8`wjh3n8F0?=FJZA54L+xKb61Qv5c_|0*f!_5ei3cb!T-3>6d|2p^>kTe?ij zCJ=kISDxL+ip<(fMy256Kre|CTh%q13`AtT zDy?Y&iHD}3*J+_1T;)zdJmWP1TcTo|fG8_Ix)+e#*pX6$Bi)USjn^MlV-#p49bd8u zhDsyU>G?icIz@AlBKivek5qZv1GE>rhF_$mwR8yE%_1Q2B8}?*^g9}p)}Q38G1^RG zqM7xqj1U=-hfc+~lO3aEVyrk-cuSZM|1M)&_!Ba2Sa z7N^~5`u2!=UuNzQQg+71Lcna-%|2hL7}4ugh0BftM$MDMFaE|lKJ1T*{w?;WK_2-7~OI>vTuC#MFUTb!=!m;BK7(!0OaHO z@{GNm+9?F*yf->;aqgF>`w`JCF-eEao;)B)Mpb!2L2Gd<5%xWuqsi?(E0fa z#C2!lAkRoCW|x;KJ7=!@t5uij*RT6ml}(^nPA(sD$hi1T=m zXQZ^WlnT&coe3Z>io}S#Fon@G!@AjTa=c_@QSiik8cIr(LgX0+no2kgEsNp;BerLM z{`}e78%k>fj*Z3!#6(IG5N#*kjPq*?$BG;^Yb6{3%H_WQb*sxSFgfsHEeb&lIWIJ9 zAngst#k_3zylu4*Ezdi~qIVU&D$zI^&nq-pWD3Ns4}KvL;;9@!cvL z%cZ8f`wq4mU&xNIsMJ(jk8qfF#Pf2sZZK3{IKe_gy=+;kSf+h}R^KGCS=2M`g!(g) zC>PgpLs2#nEN%IBA`axkXUq>9RJn%f* z8$84$Lc@!{8}Hu^rMfRg$(?2s5li&zBY@FB%JQ^^lZ$y-zd)$$WCUj0Ll(f zxc;|2{@ZG;*OTRlQ3x4HN5^u9C`vU`m`+V}nGuJ)cwfssD?U)F+$tmwp*v^8sI7%4 zU>RZQ2Zx8d4;&mE!uQ>JwcqM2_Gou({%nNaUza~zU$kDd6lC~acau5Zj!WEWAuLw` zq?rJ|w69gLdBd<;5N$MeqSwN&|Eso^Z(dE4euyEslYL-}Ys}}8OxCz&U7JE{$tBe> zD>0GaD6gL=uKA;*&l*{hvHLfHk`r*@c>)#$2kgJY!pUiLhlqvD!zqgYF|@^S1ps!* zdoX01T{rvUV&NLL9w(#dI-8HB(y87^fHL3Ni!8?9`h_jwvl2uE*dKC!dQgt><))He zX%;0c#9`U`<41H^(U;k>Cu8QyZo9cwy%1A)|KG;>qsgoEIFi;xKdAAEyyasDg~f=F z=Sgm=z}fuw@85w0U_FSTmuUA7y)bAK3EbksuWMm()4C#I)GD6jcv~*&)p|>AJ~DGs zO3r}i?wR-?iKf*BMuWT&`A^*E5+pJN8Fh2iw!FN2G|@W{{o-l8P8yp$Bb>0zSC@5q z4E48t9{d)%x;a%x)R^og7nc}TFeoEZM}b6*5ev9IdF{WIJrv&Ov(^tQl=o5?QhN{r z*=IBn)c5+)Zq3m;$Tnal2bS69mBfZ*Ov;vAZYt*UsISJ8SHHNRAgZ3R9C`mO55Fz# zTE8swrU{7@Z#>J+fWZxy5hue_{BSz#xYC#^JHHG9gH+Sk-$h*hDJxf$6hpeJo7>Ji)@$<9@xI+6^e>8eAL=|K5@$La8`O>W6uun*Grsr<3L9p3 zv!|`jhPuSC9&PQ>r>f3orC26_DHN_t4}gM$r-2JBx@uXsdXQgIS;r-nuiKvS4OGzCU$1e8;GynuoVUZG*nbI4;o{G>9`&Z}%Dpzuv~XI+E3mX*2q z`g0ucOtPw($NkA9WMoU_F5faE((rx}b_{-`teYgY#d&Q=N!A4&U6N2v1XI~rW;%*&nX+D)PzC}nW znQr)4X5_%Z8I=lZXMw>pIpDc~Id;!Z=V;IP*k@WKk8k)AZI!=qG=ET?0)R}pk1%Df zV6;1hZ!jX-a}r#Opyn_fK<22B>(50m(0P3bUn#`^t4!{;V&q_F=QD>C zqXRG;7d!^o<@Rq@Iq;mgy~l{hL_zyNjhPBYNP23_A;FPaM#Ncs`4)Q{Z(|XpP3{wi zZuTj&GJ_p3K~vW7lQ43@hp0)kqc7;1yCd}<2GFm3?EO;Q$Ej2Oi04~mapp^Y{_bp9 zx4fDL_0oTZbAH1^LpFA99OwvP6ffD|jv$C?oBfq;{3h398Zehd7}52r2G}K*2Rtel z4oDdt5yNr@!}RNR^>#!NBEZj2vvXTyu?L9pMj8-?ilC#4{-;%nNv=aZI6PdX$R(vp zR~!_TdxJ{dy$cO(-oOM(2nXpD1utY2K9x9C8ZH@;0(loXTpn$R%^dfyCjfoWqhiP$ z>Izkp#w+Xxfnbso78Vwpk@g=XDqM-#qTYU~#YR}0|JKryZm@uYn0Pe%HyEy{MFN5? z#E8%r%^JbnXHcs6J{bRa5QIo3wZrEe2!2+3zzXLomiW!Qyps9C+6d?Rf>h6xGL=h}){FOPiU*$B zl3gFQz+(iUQ0n$=Q3gk{#Q1xFJm15A`O%D?OPUc9VPRw2)v0Q;FN1J`6`+4FFSo0Z zUkl393`0|=`I?b|-PRCGu>cn4rLCSY;{FT_mfg$ENW-_;;zq+Evd%39pvbYh1IQIT z%i>8h)^K7=m1_*1Y_2XFZm;aZ+#Gs!Lq$P>e0u1A_NmfwdjGy!x963EfZ~+0W<@;Y z7c+;Ev2j$zF#zk3{JsM1IHKopv!w%~`Ew5jI|k;^%N?{noN&laJ0@a&2~fe4b=QF2 zW5oT6poH{7O=qi-lP_5h@m==t!MZ!9JL(tQIB=~2^`zaR02U)qH8W;%zG`!L> zS`nD9nV6JR(-6!omV^If=L4!bEUByTq0ZD|4ZwC^X$(KVQ#+Am#TB33;bqPUue1ci zM2dNuK#zU;2aFV$%Y$YtX8ZoW^=mM@c&0bwOq5R9eQCy?0=?h##saNkS>k; zv>bYgXJ>9@tyK64Y`}_3&mR#G{pUfUap=3pZ7ttlR?@lhq<#BlRutbgGozOY64h_H zVTDqD0OJr5*e}xVX678Nw+FskMsZ*S8})JmVBy#}nB9wd6QJI%l~jd8VwM4WoM!Y2 z8}v=o<^&U+!!hF5ObyJUE;FEq%#OoTmh1|0ncfkK+^hlHw`BQnyxNs{rtp5FOPJ1% z!8ue02vAV9je7rMN*@Ce^bb~P@My}BWNO)$Sq6m{%HBN1|IrgNnE_^V0f{%{`aI9* zGyDF>AW&I;&NG=HQJn9fw9iPkqIuR8>^-mdzYC(XoEHW(VDXzvYLY4|O-Y>i|8Wji zIJy^XY7nTB`kpH@fqQxHch`RlaQe~I#J9&ecPfh8*3u$&`$jS$Fd=HyRK-!7j z9z=(Bg`veuXqI~D`5A~v+hg;lDPdL%7w#PKWymp4dO4>q$-Ds{nei?c2gPm3qqI z=w73dB5w@}qonUtIOyJ@0?tkWML<9xJ})2|_b1v7KDf8L7LNAz?9Tt^p}e1lrdSgd z%e0+k(P;Ozg4sDlJr0ekLwNop&Z4-5glwMXF=(TR@fxf1t5fnn=>+)>)Cx-pStE$E z&9Wf?%53IWjkzQq{S~S=K|w+J_wH_PiQUq`6ge#0oEUi0ubAL6>bf%{&A6d9G__}?}s=)knnAg!$#_-7n%prYJeSnQ5~jHC+XG>)0LT{+V1lj#(5H+^yla9u{@<{RSLXb_t&EC{Gd$rY^q3`~{N)@I6T zxsEZNDPel_WC3U;I(oF#`4h6TvhdsVlbs9BC_pVq7WRk-kp{M92u?>YW1CHZWB&pb zl9$Nz)D+gO?|v)oJpU{^-9omT)8RRr9wB4=lBPfIK|$5oy@97M0~ z{=^_MBT>JU`q2Z(PP>nwGmZZRDV8gyjdxsH8aY&^NQxuRsvQkz49@&B5YCYu@UVqT zPC~NtQ#O;t!vOI8Q_)^emzDrCkHPo|yhEpATr?XCI0h>qwE$#g0Ok@+<@pqVYgbfP zO!lPh;JS@wZ2`eE@e`X4hJZ=OZzX1301KbO#OXLK$vnJq)jtJSrLAcClfDi@qIZst z)56;?!M;1Nbfj$i2*}N;+>xu%G=Uo!nVOcL*+rH;g;%U;|NU8WqH6f!EGtdueK3jw ziAz1Do>AeLxrU4`2I9$oPEUF5H0>zy_p;i*55-c|B&oBfsEO0s3QqNvg1Gx!93Whf zKYNu&9z>Xts7POB^&7y=$$sbzjEt=QQhSQW=t$77EUByJ;wx@AB9eHl#qSbgVOXg~ zOcMV^1+#Yh#>QLi3g?MWb%5Ua!$kQCr_Q}_cfsb)v_Bk)TKU;bfOs_44+6kbR!|ky z+|>HCYO@ISkc&M-TpS&|_S>X?|Dv+toZ8~dN0L=jB?1<5C}MVQuF7N-)K7>CQ~6ol zqlc3dZk8GRWF0AwU|*mt$(c{j_YAFFK+VHr*rE0M_f`ZY5X z2dBd_M@6%lda*E5!php3?^7(7n@v|RHYl{jxi?&9Z_KP!-#&uB6bmuZkkb5V_{nOa zNM4+ZKg-_Lb>gNmx~zQsGbYHJw1B?4jmq82C=J0+UzGHYx^QY7(GB{oKB=kXoGS^HHOnKN<2vcFJ}N zgZT}pzsGZiGbEPh=au>~sNf3Fabfj#DiC@hFS)t14VW@$Q-nlczWjL&l9VYpmD>A@ zg~s;{M*(jD7<3^|Q_gJVp9 zwqYh<`To5AsP*O$p&0IwxaVSxH&;y;y#fkM(UV?U57SlflOMi7H>ytv6l}UuR{@#6 zaOfrY)sTbNejBg-{t5X1`3qYQAMm4cB{D}C~2*264NsHiDHW2dpN{gO#7yrZe z85a8BeoXoF>CrsySD!9e(BEXc@1D2EJsZ&84G_UUfY`LW<=mi>OfN(G1pK5(+r^Ui zNl=m?Z2@KDQ}N3`$cUdB_`AKgH$K6ahKr1gzB1i*?{@PGXnj@uE`KX=R*LT+jzByT z2=$YU-l>s-Lg{72vxV#cuzf2P8lsN1o|t(`zq1n4Gj5n(Mh(q*hS4&B3Lc_G4lkpY zFEJ4?i@Jl9!x5aF*pM0@8JAj_%Y-OM&39J|A^43~6Tg!8Kb1!yd($Xkh38*RFpA9yC#P`w?)fz_CY5 zrUFN~C%gB_O!WTqX7hQw4+ofmowphM2c@jfE!cRaLof2uBMEj<7hg7gP2;c;D^(_v`il`>Owb z^#A_>oQqLB4c52>gTe~DWM4f8sO!R literal 0 HcmV?d00001 diff --git a/2020/sketch_2020_08_01a/sketch_2020_08_01a.pyde b/2020/sketch_2020_08_01a/sketch_2020_08_01a.pyde index dab00b53..ab3e9d05 100644 --- a/2020/sketch_2020_08_01a/sketch_2020_08_01a.pyde +++ b/2020/sketch_2020_08_01a/sketch_2020_08_01a.pyde @@ -1,21 +1,24 @@ from graph import Graph -graph = Graph({"g": ["d", "f"], - "i": ["c"], - "c": ["i", "c", "d", "e"], - "d": ["f", "c"], - "e": ["c"], - "f": ["d", "h"], - "a": ["b"], - "h": ["f"], - "b": ["a"] - }) +graph = Graph({ + 'a': ['b', 'k'], + 'b': ['a'], + 'c': ['i', 'c', 'd', 'e'], + 'd': ['f', 'c'], + 'e': ['c'], + 'f': ['d', 'h', 'j', 'k'], + 'g': ['d', 'f'], + 'h': ['f'], + 'i': ['c'], + 'j': ['f'], + 'k': ['a', 'f'], +}) +MARGIN = 50 def setup(): - size(500, 500) - noLoop() - setup_graph(graph) + size(600, 600) + setup_grid(graph) fill(0) textSize(18) textAlign(CENTER, CENTER) @@ -23,29 +26,47 @@ def setup(): strokeWeight(3) def draw(): + background(200) for v in grid.keys(): - xa, ya = grid[v] + xa, ya, za = grid[v] for e in graph[v]: - xb, yb = grid[e] - line(xa, ya, xb, yb) + xb, yb, zb = grid[e] + line(xa - za, ya - za, xb - zb, yb - zb) for v in grid.keys(): - x, y = grid[v] - text(v, x, y) + x, y, z = grid[v] + text(v, x - z, y - z) - saveFrame("sketch_2020_07_14c.png") + saveFrame('sketch_2020_08_01a.png') -def setup_graph(g): +def setup_grid(g): global cols, rows, grid - n = len(g) - ang = TWO_PI / n + cols, rows = dimensionar_grade(len(g)) + w, h = (width - MARGIN * 2) / cols, (height - MARGIN * 2) / rows grid = {} v_list = g.vertices() - for i in range(n): - v = v_list[i] - x = cos(ang * i) * width * .4 + width / 2 - y = sin(ang * i) * height * .4 + height / 2 - grid[v] = (x, y) + c, r = 0, 0 + next = None + while v_list: + if next is None: + next = v_list.pop() + else: + v_list.remove(next) + z = len(graph[next]) + grid[next] = (MARGIN + w / 2 + c * w, + MARGIN + h / 2 + r * h, + z * w / 10) + for v in graph[next]: + if v in v_list: + next = v + break + else: + if v_list: + next = None + c += 1 + if c == cols: + c = 0 + r += 1 def dimensionar_grade(n): @@ -57,9 +78,13 @@ def dimensionar_grade(n): return a, b def keyPressed(): - global n - redraw() - if str(key) in '+=': - n += 1 - if key == '-' and n > 2: - n -= 1 + from random import choice + global graph + graph = Graph() + names = "abcdefghijkl" + for v in names: + graph.add_vertex(v) + if random(100) < 80: + graph.add_edge((v, choice(names))) + + setup_grid(graph) diff --git a/README.md b/README.md index dd148904..3e44c19f 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,12 @@ --- +![sketch_2020_08_01a](2020/sketch_2020_08_01a/sketch_2020_08_01a.png) + +[sketch_2020_08_01a](https://github.com/villares/sketch-a-day/tree/master/2020/sketch_2020_08_01a) [[Py.Processing](https://villares.github.io/como-instalar-o-processing-modo-python/index-EN)] + +--- + ![sketch_2020_07_31a](2020/sketch_2020_07_31a/sketch_2020_07_31a.gif) [sketch_2020_07_31a](https://github.com/villares/sketch-a-day/tree/master/2020/sketch_2020_07_31a) [[Py.Processing](https://villares.github.io/como-instalar-o-processing-modo-python/index-EN)]