From ab62c3f9ae7260efc78e881b073310522ec0c25f Mon Sep 17 00:00:00 2001 From: villares Date: Sun, 11 Aug 2019 21:54:28 -0300 Subject: [PATCH] 11 --- 2019/sketch_190811a/0131.png | Bin 0 -> 9473 bytes 2019/sketch_190811a/grid.py | 73 ++++++++++++++++++++++++ 2019/sketch_190811a/sketch_190811a.png | Bin 0 -> 10910 bytes 2019/sketch_190811a/sketch_190811a.pyde | 49 ++++++++++++++++ README.md | 22 +++++++ 5 files changed, 144 insertions(+) create mode 100644 2019/sketch_190811a/0131.png create mode 100644 2019/sketch_190811a/grid.py create mode 100644 2019/sketch_190811a/sketch_190811a.png create mode 100644 2019/sketch_190811a/sketch_190811a.pyde diff --git a/2019/sketch_190811a/0131.png b/2019/sketch_190811a/0131.png new file mode 100644 index 0000000000000000000000000000000000000000..d4deb578364bb331487d01f18072468e8e65a1de GIT binary patch literal 9473 zcmb_?c~nzZ*Ee;FqCi`$R+&T!iZX~%5Sffxu`()ZWDu|lsVD>zAYu$uBUr1 z${=DC3=kkeL?M9yDj)(EB9MSgmr1ygFudntpQq3C{r9Z}Yu%i)?>YPI>9_a3=eDE0 zwSxR+c{w>bg`bWdJ|QRf)o1j7^)fJW`1#RJIk_MBKOM%MywX0>+1Yqj64F0Tdvokz z{pzXAZKl8NiF|bU`29!r+Fz5Lte>3p)~kPzf7tcny5sRVQTLC?Yu`ANU+sBl%jR!; zJyouJo4xNV9jBVzuNkY=e4=)1C1g4Ie6#ufaoeA(0%OKAb`=xi)9SBwAXmd=*Vu~c zBV0p|*23|Hg7RrDEb7@I=Sk8lUnzG0mXjl4*-Xhz<uv|A!3BuIlq#xmBzVB1lgm27w@ zkGT6%twj>8CMqmyPHyApe9zPrqNRp&3PF{I=~$w#C@I~nto!Nn6kJO(oOTL8|7D&DS_G+xAB`qRf%+8CpUNWy@3}6aG!6-TmO+{QQ+BCGQ_c3UHCb zDajT0oK?DRCh=lN$=)Jid)~y+?5-uDuwwTSSXxN=T#K;Xzd^mpq>t7xl;XTII^h?*d@e(1)ntD>rrxm=y1OIyNif6 zkO*=qp&qCIsmv&hZ7;fkgq#;mxr97uf^A?RyA%c2W3bU|UXZkp+h|0?|GgsSWJjwk zbzajgo|xYE-+Ly6gT-BRh%!9W zFF%w!l;r0}6Q}{gvvn4!Rj13Gvi_#Zg^Gz`xf2o3*EG$)Gfdpo2?5aq9hxOl)5cSAnvxU_l^x$Oe`xWl#;XQd~Vq80m$G z**tENUj*3pQ`0b3=rQs-5IbxGAF$$kv`~(L;gX2CQ?%@6Ce-oz1pk>{_+v(e%OdRw zqoVzBfH>2hWymRxN=cHIexqxNVcP>?sy6SR&ATX$wJ$T|#G7%L4Y>UH3YTq5lbgRt z@jg=)zINjgyxATOvwmsX6vOsj@ab_op+0a^7AIRTR$nK3v0UkHUhpp@q9KNT27X9# z9O`F1QL+991#i#gnUKTmL-Eu+)0~wg!$f-f(S<$#3JJ<4;4Q<gsbu?)Z_O-*OecwVIi2%r<04U`7`f7kq=7o_!V?jh>2`d1kfHi>@$s zlD_E?$q@&0pOv29exzV|t}i|F_4DDEbd|MLYlvMF#beDv0)sA3(s`egTet`B%jtRBsrP^ z(@0ubl|T(pzevRrrbiCIB*!vf3rQ=Nm%n;u6#e{R@}#tg=6pnb;5mre)rYA-HPO$n z^xfd)hyJl+$?<3t;;h=@%mTuSnlurqE*3wpb9=Mv zgAbq3HPyvW?q^gSgOwA?*0sp9_mUll#H{xMTz+arY3Z@AZ>CfBT9xdca4T>z_!M-9 ztl@T9Ke{!8>KEe1c^fO3)QX29QIl)73;+% z`_n^2GDd6JdA(#^1ROr`(pu>g(W?Yg@--1}0uRD#)cZC4qaksToXzog8Q;Q#XMJgk+Tz*^9KSd1@Xh`v^*O?q&;e8qiVA-u(@@`Z;Ube0$JVLmh~QbZ+Vh{n0~i z(^=m%vDRF>uhmbQ z3EPE3ofn(Fvk4C2%36+*qRV+6Z-82+Bn`vjuCz9!wGQkCsI}YP3M>LnJxGA?mrm~B zThR9QO(bJkT|xMLFO^=C93Dpw9D#-QaN0du7+1AO27C9t!qRW+%6nnfy))DW>&YrRZ|{&k_t7RBw@@ z*dQzs5}X}5bE)^oWae6zV{piNH->J5mahX0M3@G(*n7Y$Ihi1G+#lG_C<8Jg#!VO4 znw{~^4xVAFNYu}#8c4d_)h~_<0X_HJ{twg@em|GC2O9h`r+}*xXz3@-)?_aR4+H

3*Wg!$(eLHzS|-oi6JcZYv}?o+mj{g((1| zGY&>PYWMSLjnu;I)xof9%AH9WWl(nPACHR8bLw!BLY(gpMB^iG>id94f09@xuRFy~ z6P#7_$yIGWGU06^Us{QJ-*3>ic<@Ru7SX=nfYVPhO_R9*Eb{Ej4jbn_eE&kIKw@bl zLDeU03aVmdSICZQy&E7_7D>^kQYezK5u@(_#t9UU!!{EOH#Pe+`|4AfGsnRSFXc62 zWWS2LsDMqFd2quW(nr&rWbDS_wH~GzAY2+ms<}-3xpaSnYV!$N{5#!v`n{yt0gr2= zNazUdJHMZ|Qew=mGN=Gf38Uqc9t*>bp(O+d>CE_T<=1Rr|H^EUW$^I9ZKgRqoHkM_ zG(L37w_?*H5CrLMlRk9OTA#YUOdY9v4E-3a^&{Y7+DEyyZAhHCijI$=hO0Io_At#6 zTRInxGJycnAr%lew;(>IIk$O{;>_v`#W$cbV_E2?M?O1Sj8o{F4Uv0)&G`xa@~e)L z9R)Pon6&m&zP+Y7u_RUo{oW@u22x2HM8zGP__Fr#mZDhtW-X+$FS97n*}EBRXAk>W zpDtqul}Dm+!7zn>)i0n^v^cM#675vn6?Sd>`dCjE$QnNmP04FF~4H-)!Ow{d0N#w5qEYdwei)NH$F z-nMG6Vt^F~ch7Nw`lWIC3?LN1%r7?Z>%dgHi&JnS*->SnV}2B5cni~3gT4>;=C$YN z_fipc1sA27(Gl}5s^Xw;F}J{6Jw*KT-Qo9zu1zUn554dpuZg;lB1I9bN!2F`GG@!+N@{~`-(HYYYjA!DV~=k zy{-7Ae8!15T5B1JqNGFlJl0*j$G>6IBZ7Sftc{t9wKjNidIcJSfu3q6qzo5%4pG$P zMesWe*F>)pl9f8Qsd{bHI^vr!`{@q$3D<=M(7?dBY%U6?7Tr}QJ@zmWc6WI8@$ zZerp?@#sK*Mi_TtLrJWw0*i;U2p(n|7j>~EhWxX>RU{3(qEFYo)Y|JRu~?h;IusJ# zOotO~fZ0oAdr5N2lakj?;9b2QECn1N>Jzo|fP89xTI`-$(f+8-`W}E&@sr@~>~T_t zyQ0rHNCh&Z_J0Y3e6c0Ku|U!DbC`5M*8AebQFfYsxSlq}G>1N70|xADKlSP8nC2`O z;_^YVEl~Rq7TBn6no|XSL*Vy3VKJvT_Px1@;#zO3XJi6Uu$PxfwQBQJ^5`707!+bY z{ie>B&$VAz@|@ZC1{Zf>*pH!_B>Fv5@))(3#7bUbkO8UG;pQvhP5{sEBcNOH^!7*y z87270$y+4-WR1mq(!=aE0tFaI&5}urV}=@y z9TVXw>=TYt$37mij&ieA?XK*u&*^djj#b8AllGqBODIax*& zRd$wX*aPx&2H|%FxX$fJ6xk7v1(k0+UHajWA?x&kh>KOG)Lm2?8_ibT6!hGRb0BjB zu0w@qYn2_$$1iL!EFU}g3{q0tpO9nW|FL7dV69=pu&gu1Z%2clZ!WP1>Ez8nj8qx3 z*R{J1^r3Zs%b}^l3|eO9u9+tXU_=xuGYKA^=^LGEkOnjsEv`2#YuWhdq15}^g`64Q zIsU5;-TSU}_}=CnY5-sv;Mx21c&obkjH5W5IaV;%(|sW)f;`>xa+x54-0wO4{Kdl6 z@rBb8b?JL1wJ*Y}a`ZOOD8`I~(DnVzax6&V9=KDfra6Kcz7a8-9IQl>n{DY=ex4<_ zA9@{U5j1!*N5NPacxH^cZ?7ddO^9hucW%bQwaf&FNy8E>i%a}w2|CgzAUtHh^bB!T zz{krHNRDXCiE@YQ_U@?k`cBMqyZ>!^Z9Fw=J65(zF>Ls}2zsWa+I{P14ok|o7eZ?} z-`9J)P5c2zW!tZbT-CZIj|D_H9yf$A5X zIjsK7>N^FQ#0QWvO^aaPpBb!$jQ3@tR;QK$VJA)NYAuedXw~-cVwqk$gsH8?zMSa& zD9)W7;fs0fAaiU+p)aRja^p$ed|KXZ#S5XjrJ;{`ckRM-OYd5Ez15%rh zpj6BL?4`#coY#HuFebmDoHF`WXaNcvm5^0u^^h8ku&st0_ppe$lDi>w+waJ{8&rjs zT>#8A_W1pLFz;rVQ8Sa;6O}&J+}+`4Ba(k!s`<$&L+a!H#yXE=2&b5mb5&TY(DWG; zZjCVwYk?_U&>Sl69c>S?EHF+r8*M9`VtXt&x+@M+h^4xPPy043tK*q;&E%U4`s&LE zQ}}*otzJ4E0%;V56eiP{GG4sbQhmx4k8aZqMbfq)oE(j44cPuKy zvFbiWnGjZB>*Uj0 zV0)wB;xS+-3fE?oG@iJpFovgED`q~@Z`}g1tVxgTSm(|dz{5sNFVKHD%eZ)?U^JxB z>e`}gaep_DM$>J-B0BO354T*f1|1JAjtRSbR5@cG>GP-7QjgOg@FD{y*0_uEx~-6~ zb5T-G8hGck@`CULUz1O>z_3Ri#teb(3lJ?uS=lF+V_4r3XJV9?Zzs+S_E&b2Bwy-! zb#l`ZsO%((O2Q9}ckQn6<49ahpqP-G**^yd+rBxX=+lcLuFad7>T?+~h^eUYq(rx+ zi>qW1J+pQh7f~DS^XUAnA48Ss`&T*PdP3OUxkcKpnoF74=f|ftPJgfuo?_~fR63^G zdD17}cNTFi{5G1e;8=sCs%S1BBn^bT?l1832)k7PJi+AqZwrpYUWX1IK%Go%xr|fu zN_HK})LTA3 z0TDf*6WeyMZa_AY%+sGzY7!XOIO=4{?KSb7+q$WRn8L6NO+?#bi^0KONqv}b}o_WiAs|9ejiSqh!(OO>nD@H|OEiS*X#b3Q>P8)g4=SJ<5 zM%HQ}z`pp`Rf4=%p>3&nsx`?_B@wkyHBRG>FTxPeHjpx0f#;L~R>hVyPU9{xQDcC% zkA|+TfvTB*I!Sjkpu&sSbj9XmNBwZsmnZl~1=Df#cK+_#RZOh?#ZB5ALa&aFZJ$oo z(gbjFaFF%Z$gnOu{KfBuNSACvV-DB%P5O=}BbR{WvCQ_}*FiyWhQ$11e@A51jW&m2 z$k}I-^&RfFkb*T1zH@gv>-s#-JzXrHp)3ZB&%XLbU6>MbwxCtNf#&}#aoKw;yca$pk9%Z%xY%+@An} zN^llUuFUwf-$_gm{0-`Ug|c-hARlzMP6*>(S=>c-ta3W{wD*qEgNnQPdWbGf_ZVE? zG;@N#v}ah*RU1uu+bxa6jdNWIQ1c<)(vA?QdM0JWK<3!(xh zS@LGT7;7We>YOVbzN{aj#yk^nPuxN#6Y<|#Ux|STniMv^zf?l3Pg4Vm4DYTil62L9 z*i>tgV?Hkh`aN)?wyFNf>=&n0a)Q+`ejpKvFLNP{9)#7bB|!4g4)A%@UzWPysLN@D zqJAZY3)TVuRRvAWL4xjyg_=e1Z0 z7Ry<_cVK+ETZox6)*;lJgjuDDWSCDiD_PACfI6^xs~R@m>;SB?y40ER_s_!@0i_!w z;C7WzthnBPyeE;6&QT4yxe?Jud}c`RgksCXdOL?Rjki-lvXPhb;f7YZUU|tu4;#&T zTlfmbZ}niN@yveGo!+s6=TIl`xvc#qw{Jshu0kZ@McH*{UrkRCRDpw&V`Yzx7q_Bc zfq=7D`cj94>%K_&`l^2zPKM`6bu?t=0gYjnVrN<1ZnQB@0gk?dLx%*NC-@N(KiwZt zJ2Nq2Z*@jJ9JpLZoD3@ZItNS6TX$jYS0oK(kST%AcM!pnTz$mFTZfXVs&;wSRoV69 zy=3S*POJQ-u)e_-ezE1l_ubRgD)_6h_TD0XGG=@2tPl*Z244lJllA>&OndOfZyQA} zXmMb^FNL_WD#C$M^G^5EP{G~0-3J;!Pd)s_iAF!S_$fN{>H34rce=1E#v@01@Vj4r z&1^_j!dJ(-H+&$9B&T9q>UO)oZTOa3PaEmkX6CV%aJ>-yQ9aN--y*4(&*=uvG}foo*hN;vBkZHGM(zY za)kreM0rITTPW+UZy7f~9-iF}FT9u3-PSr%fQt&j-pV$vogeGgm=|P}r-C>hORDe- zFbG)Br%l;;R|>~d!sg!-=ZlZxSW+Et%cn%q#CGkr86E(XEyyKr2NV4Qh1n5N{O6&!e9v2b;qyX6`JR9-^{AX~g-O z9;gwF#pyFTg;@}@zo9NUV`fAYdIf>a+q9+c6J+2^Y`mHG4uAk&Kh2!eBPlW5fT@Bm zMf=krG0(R{Ah`s(92JCGgU;e82#*3kC^JG$oz6tA@LQ3+vCg8<_)2+$S8~)!JCJfS zy;jkjvlKX1tK-0BF`WBG9Q^qSj~rtI#OKc+K;w(!D$l{eUd)4vIM}9QTU4d| zJy68ef7HpE;U$hbju>HrPP4aA?#7M#S#80vQ<6<~U)Nv3R}*(dLk?DtMZ@)$;cwa2r)G_$B`MaseA55n0 zCbPq&#~y5-l%A&6NC(%FFvlDT9bG3#4&qpE^_4W`Ytw}rxBlq-rubz?3*IBfY}a89 zA?y7qhHL^dJ(BR6mX}sY5p5JJt~(CLdV?Y%znJ%}ZfzvZhI^bgwUV=(&eL-$Gz1p~ zILnt@_gBcssMJl~IU9@}xbr!&X9ZZ(k5i^55-!h31{ypi_S4eGDg^*3J|EZ;*0P}l z$jS4@Y8D85%L^H0s?B-WJGELAPbmn)Xf0)H2fi1bWoS}7eZa{6;Nx*1u#p_|8qM8~ zyU4E*er=k=t!PArZ9oPM+R;0e2jLg1`WW=hDBpJzIg-q31aR7GNyuQR_Q-t$N`E_AG3E7`7W`w9?S<4rky33ee~~zC2~LWi!9f{^QOFxNY&}!UezTUwF4` zw1p2WepuEjj08_FAOOEXallS@ZARPJ86m%tMy~)ntJVY%hce#`z9+VzUXz7_o|?zP zy=rj2b#kUTjDyA&KsU=R?*s9#gI=xhT)re|U`*AuAj|HR0lRy)yI8e(hPQ>{3H1+8 zf^Y1j|2n;Nx8<)}Axrl@l2rU^OeS9tfY#)V-|e3K8a#QHlZt&=$pW?SpF`pJBoMjR z)Sewq1p`|sznqP2;HJxeU3U4` zyC!4CU~BX|U!cPCDk>vz(#_r9dHV%}RaagAV2U*{10-Vm1R$DU>vnqwJFhyBw}g<2 zw%;u6DR;U=lMmjLn+*S-7gzrM>dvna_y6N+)qE+AAWMs H^Tz)HRbRT` literal 0 HcmV?d00001 diff --git a/2019/sketch_190811a/grid.py b/2019/sketch_190811a/grid.py new file mode 100644 index 00000000..dfbae80e --- /dev/null +++ b/2019/sketch_190811a/grid.py @@ -0,0 +1,73 @@ +from random import choice + +class Grid(): + + def __init__(self, pos, **args): + self.pos = PVector(*pos) + self.vel = PVector(choice((-1, 1, .5, -.5)), choice((.25, -.25))) + self.shapes = Grid.create_shapes((0, 0), **args) + self.space = args['space'] + + def update(self): + for sh in self.shapes: + Grid.draw_element(sh, self.pos.x, self.pos.y) + if dist(mouseX - width / 2, mouseY - width / 2, + self.pos.x, self.pos.y) < self.space * 5: + self.pos += self.vel * self.space + if self.pos.mag() > width / 2: # * height: + self.vel = self.vel * -1 + + @staticmethod + def create_shapes(pos, dims, space, elem): + gx, gy = pos + col_num, row_num = dims + result = [] + half_w = col_num * space / 2. + half_h = row_num * space / 2. + for ix in range(col_num): + x = gx + ix * space + space / 2. - half_w + for iy in range(row_num): + y = gy + iy * space + space / 2. - half_h + noFill() + result.append(Grid.create_element(x, y, ix, iy, *elem)) + return result + + @staticmethod + def create_element(x, y, ix, iy, *args): + sh = args[0] # shape + si = args[1] # size + c = color(128) + print ix, iy + if int(si) % 3 == 0: + si *= 0.25 + 0.25 * ((ix + iy) % 3) + elif int(si) % 2 == 0: + c = color(0, 0, 200) + si *= 0.5 + 0.5 * ((ix + iy) % 2) + + if (ix + iy) % 3 ==0: + c = color(200, 0, 0) + elif (ix + iy) % 2 == 0: + c = color(0, 0, 200) + + + + if args[0] in (RECT, ELLIPSE): + return (sh, x, y, si, si, c) + elif sh == TRIANGLE: + return (TRIANGLE, x, y, x + si, y, x, y + si, c) + elif sh == TRIANGLES: + return (TRIANGLE, x, y, x - si, y, x, y - si, c) + + @staticmethod + def draw_element(el, sx, sy): + fill(el[-1]) + sh, ex, ey = el[0], el[1], el[2] + pushMatrix() + translate(sx, sy) + if sh == RECT: + rect(ex, ey, el[3], el[4]) + if sh == ELLIPSE: + rect(ex, ey, el[3], el[4]) + if sh == TRIANGLE: + triangle(ex, ey, el[3], el[4], el[5], el[6]) + popMatrix() diff --git a/2019/sketch_190811a/sketch_190811a.png b/2019/sketch_190811a/sketch_190811a.png new file mode 100644 index 0000000000000000000000000000000000000000..a36c62472d7e4192e3458d3ebe00b0327036967f GIT binary patch literal 10910 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 e=|8tz`@Qi3^JiIa@a|ON|Gxk