From 91b285143d9dd436005321c0d8156369637d9185 Mon Sep 17 00:00:00 2001 From: Alexandre B A Villares Date: Sat, 10 Mar 2018 10:43:44 -0300 Subject: [PATCH] day 69 --- s069/s069.pyde | 65 +++++++++++++++++++++++++++++++++++++++++ s069/sketch.properties | 2 ++ s069/slider$py.class | Bin 0 -> 6641 bytes s069/slider.py | 53 +++++++++++++++++++++++++++++++++ 4 files changed, 120 insertions(+) create mode 100644 s069/s069.pyde create mode 100644 s069/sketch.properties create mode 100644 s069/slider$py.class create mode 100644 s069/slider.py diff --git a/s069/s069.pyde b/s069/s069.pyde new file mode 100644 index 00000000..81c17bc6 --- /dev/null +++ b/s069/s069.pyde @@ -0,0 +1,65 @@ +""" +sketch 69 180310 - Alexandre B A Villares +https://abav.lugaralgum.com/sketch-a-day +""" +from __future__ import division +from slider import Slider + +# slider_object = Slider(lowest, highest, initial value) +i = Slider(PI / 6, TWO_PI / 3, QUARTER_PI) # angle, changes number of sides +j = Slider(1, 4, 2) # depth, changes number of recursions (fiddled afterwards) +k = Slider(10, 50, 25) # offset, changes scale +l = Slider(0, TWO_PI, 0) # offset, changes scale + +I, J, K, L = 1, 1, 1, 1 # dummy initial slider global values +# ^ I need these globals because I want to read/draw sliders +# at the end of the draw loop so they draw on top +# I should 'decouple' reading and drawing the sliders... + +def setup(): + size(600, 600) + colorMode(HSB) # makes it easy to cycle colors through Hues... + noFill() + # Position Sliders (x, y) + i.position(20, 20) + j.position(20, 60) + k.position(20, 100) + l.position(20, 140) + +def draw(): + global I, J, K, L + background(0) + poly_shape(width / 2, height/2, I, J, K, L) + # Read and update sliders + I = i.value() # from PI/6 to TWO_PI/3 + j.high = 3 + I * 1.5 # change J's upper limit... + J = j.value() # 1 to 3 + I * 1.5 + K = k.value() # 10 to 50 + L = l.value() # 0 to TWO_PI + # uncomment the next line to save frames! + #if not frameCount % 100: saveFrame("s####.tga") + +def poly_shape(x, y, angle, D, offset, rotation): + stroke((frameCount / 2 * D) % 256, 255, 255, 255) + strokeWeight(D) + with pushMatrix(): + translate(x, y) + rotate(rotation) + radius = D * offset + # create a polygon on a ps PShape object + ps = createShape() + ps.beginShape() + a = 0 + while a < TWO_PI: + sx = cos(a) * radius + sy = sin(a) * radius + ps.vertex(sx, sy) + a += angle + ps.endShape(CLOSE) # end of PShape creation + shape(ps, 0, 0) # Draw the PShape + if D > 1: # if the recursion 'distance'/'depth' allows... + for i in range(ps.getVertexCount()): + # for each vertex + pv = ps.getVertex(i) # gets vertex as a PVector + # recusively call poly_shape with a smaller D + poly_shape(pv.x, pv.y, angle, D - 1, offset, rotation) diff --git a/s069/sketch.properties b/s069/sketch.properties new file mode 100644 index 00000000..2456b0ab --- /dev/null +++ b/s069/sketch.properties @@ -0,0 +1,2 @@ +mode=Python +mode.id=jycessing.mode.PythonMode diff --git a/s069/slider$py.class b/s069/slider$py.class new file mode 100644 index 0000000000000000000000000000000000000000..2dda702083fe0c9e0dc95d9b6f47cb38829a1fa9 GIT binary patch literal 6641 zcmcgx349z?8UJ2)lbvk0Wjk#{)0TE=101213Y%{yF z&dk!LB5FMl54;t;5Ks}kN`Y;p6b}>;4-~{(#2fEh6czk`Z)P_eb`$)mKl|&qGw*%x zeaHVh-kbKmC+@h5h*pV3fD+LX7Y`2}^RB_B3u?wk;?U4#fBU^-&=qk1v4vXMaTC2#-&EeG77^f ze_2EK16GV$C>kY&W(qpFUXR2!LbC+5xTZI3*@K29DAhp6)ChO(iqT0FkJ4 z$`wpO;f`Kr&82zFnlDJL*B_yi;o;VN(F@|`3R<*xYF#mEqlGQBfRHlHek2t-MUdjZ zx33Zu)%CocEmore8)Ql zEv)x$Td9!oa&{p?8UP;BeSG2K!s$Fr(ux-7Nl907g`B7B?W+Zy7i#L57;(^&Visy4NIZTf||A&mTM}s1+c&( zAD0+y^%35NFlDS6seh&Kw_->CNl!Jj50r_#}2J`l!5v5PK_Qa4>9 z)6wak>a^2FQYG*x2wS9ORoTkk+i}Gx2 z0WsB$ENnijUQe~7Pb;ZNFJMV3l(|^@~>EON7CMyh15PQXkEP% zwO~!_hea=EKVAW|*pD4ZTZOJbx^CIpw{z=&LRSh(PcMI(44j%3Ba2?cnqLdphH@6_ z^(sO6|5Ve|ik`;%H?R$Fgukxm*rV|M&9H}&Q0T3KuKVBHGqt5tbDqYBx3dpd<9zdd zxY$G=g#GV;CwxLG^e((*b1vrI15fjI$u%!g=)INq-3ncg^3^RbM(^`;_x-ZW3wGg< z>DXM5p^nZyF}jgH$hvMqws_`2FP%FC=^ui09x3z@tb+{-eN505|4-c=M$IiaXt3RAZ~>a8w>8KRdCp90!)NHT++Xhz6qgsel9#hm zn;pj(b0c)GppK5cH8;KB?5LmN)8s0;FG`=MF9@37!0^spf|gEwIoW9pT4sd4EOSX7 zO<#%9{q$92k84^uHfCwq~!&-r^cTtXL|SSX#jBLZY9m{X(YRWy55FYp5RXK9r`W@(U0jT{PxQRS4bAO z-8S&O5}{usx;XlA5~XwbqGg_I+a8xlvEf0}KPFA7&p@88ZbdwQOTUZKZ|L{%%_$Xp z-`3Xmh{@X;K+AdfNBR>Z_-Et>aGJD5(5Vdoo3sRbf8oyaE4ZGj?mu(bwd8O zoMrM=ev51srHp4g1Lly0GXnRg>T*G=YimLlc!Lk7$(F?E@AQu-Jx>1=G)vxnhJvd+ zpSrz`((%9gNad89fg})uJCb}0@g-HhHSr}yzD2nA$+wmU$IzDDo?x^WyMv_J{YmBAbm1nI>`F&+YaST>GHS#q#rHGh^lHv#n zI%zvj&c0H9&~#+wqv7D605YRHxDKLeyX0g{HcC(%(D2~IuAG}g{%kH3Y+R1vxJ##^ z-0mj^yBS}`=x9J<0av|z;z*EBd?UywZiw=UV+YSD)*)Ef-HOpZ3K2k}^E5TAHjh)R zOsWz?Yti_x0ev}sXsY{Ya>F#m*-1@MlE@=ywsY|R6C&f5@QJZl)?Kn#PM<7Rt zlckOs_zi=ap$iESXuAnxp1o32Pu0}rWjX_5w73%JI8NQWwcBVVG+m^g31g1Y?mkW3 zn`C8uT0CCA?lSfH)peIw*0t5IJFdR8y6!}h_29AD zhqQPUqNQnoW+vV>0P&1IErefn9pr9gI{{*=)-=J`RAJ0w1`w_6IJd%>%?$OtGCeDh z)f;f?ply}mio%+ipcrTtXg2IcjrsP9<^bl0wfGzemJq>Sm6g=kyRV{sE;DNE9jq|s zGei2euS}+<4#U81RTQ>X6%Jx^Jc{LIIvA`v6s(#8lR3aa1R&&_fjA7=|`$@r6(# z(*c+)Vuk9<*sn6Z5)+H%#H)BhQ(uionO=wKC35=pJk8$3v(mCRfwNR{-csTC%M)_) zZBj}VzxW2Z$@Rfv2j|dX7B)}LUjt#w*vH@XEx>PL~3%l>*f3@X*v7_*WWSf_aM673@1S5fB&q`=r%Ly-XhvePz1&8oEJ? zqnv@JM5)%&4mtf{RuqJk-RhLHANAEAkq@bvlL{zKnBl)k{mXre%5*CPbV&iXW2e-g z(Bhh$VOJ(6){PXxUoDOVf_=v(bg`Gdc$wf*KfhHVgQCfjw0KI&kRb|JW3f_B297^j zon9rUYtmpsUoD&xl$tD9Ew??j*m!SEv9Xy+y;^LwRws27o$uB!qSP=A4E z)h4t?s{J^lh<(%sGKkJ1pgH?GJXO>zg0K*+nOxw&@7KHf3Ni!YDI<>Ka=#g~P{6N@$V zM7&KdiPS7PehWN-!+g6A{EK5GFc&^bk8l(S|1|zn`dPqDz<1`(J5B?;)klxfFUs_* zar#5oIQ_+!)k2TaUxU@ET#NHr9T=x4d})H7gaH3u@Fqz)N7;RlmK)wn_k2e|=b