From 27030eb39d7b4ab4f05cd80a346d7a42326bc03a Mon Sep 17 00:00:00 2001 From: mlamunion Date: Sat, 13 May 2023 22:45:13 -0700 Subject: [PATCH 1/3] this is a step towards something better --- lawn_simulation.png | Bin 19230 -> 20653 bytes lawnsim/plotter.py | 33 +++++++++++++++++---------------- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/lawn_simulation.png b/lawn_simulation.png index 37b25d88953063d2b5430c9329eac9e2d73ec187..3e4e99866abe771cfa3378fca72ff60637632772 100644 GIT binary patch literal 20653 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 R?eL>8gs=Vf+}m~Z(r=P|x~BjD literal 19230 zcmeIaXHZmK)F#?wL4pb@l9ilu&LW}7G)X{$l0lL*AWa4lK?P~aIW!<3wgkyhUI_vs zS#prnSd?L+23%)|9F+7eB(8nOz@94tTMj{7jyEx!g7?J zw9efkkz;C|Z|%KDw0uafxBC zRkCJioW1flLngE2%a{6Mc)itm^I`xE3O})J(8^@5s1PrJ3HX@*} zpv8J^U6h&iCT7)OUzjct*&RRUIJvwIrW{>N9)e67yq(;}p*=uW?Q2Q>hCw({) ziuof%jsSl>Vz%B2mg zQmIXg4fRVGv-6a?my+QF0-;^dUxBI+Db9OXQY;+SU*T|(k(tRMg&+9_STdJJdCKsN zdr1JgMSxNIS)tc?aB<_4l2Xx;I_+0YAK7m?oLfVo%gpp$MBrI+Y}h`+)T62#e z0rj_4S!`zBJ-qKtN~|8${*fR*N+74}>&vrYeZPgyW`#=9{Fac#W(>vc=vU)5yI=gE zjv2yxDV=fYnzPxL&n3JQ5>r3Wl1U#PCVYbA?c9Wf;opi&x3cHw=V&dMl^XJ>2nu4o z{oUy2=OCFnAJvmv8Y{L}fDU*YVO^?2x9sh&# z;|!rnN_f}Y?1w%!?+#?X#Gwlp{5Dd?8@)R29S`{l-Vy!lmv?f_4qtIJ3?CV6h&%43 zFCCMuBYWkRZSID_2#+LUan!S)hDLr+pJpZ|rD>UsA1Mo;3)8>dioX~A&rz5FljKMp zJW+s-@tBB}apU>vur=Rc3mZyO71iQVNH;3Sl@^&@#-kS-~lmGEm!xXt$Ho<76sY$YL;xE2xEqokOUIba0};9s1(m6y)z1tbO;)>!S-V zhr$FH4>D-t(ixl3%`R43b>0P{{cvCHkMSBQ&EZPGTpyI4oSakz9={0M`=0;llObaYI>^KwFCB_{YFiYduMfzFZ5GhG#G9uTQa_+z=<7iUKr+cj84$CK=x ze{xbN!#LgHsZORB-{~9Qx7<*4A8_4x6?|YMOEUBcr3S z{F*c2?^SdV}4NY`3H&&{6cox@;=GbcXrma%3j=`H2)fqe$mg? ztjAQhbbr$_uo(&EPOVCKW1-2x-<<@1h#Oq5T*6K49Y6OEQekdF)(j`Dpk_tY&fjuG z2?*a#eEgu0b#rOr*rgaz-&FGDeJN^qG#79GILius@)`9rmP$tU_eUdQUZcAuic7xc ztvMfVLgqhxa~*RzKf#%QwF&dxo+(2IF7aONNVVG}$2M(ZZJ9-lOHUHNVMyM=0d#tE zE98<&9$PxAcfRXg(4r<&|A>sy2f-F8h)G<#{$#WJKMM)6&3!oA=wB(}HX(MkAD`?+EQsjo zImNRM>II5V`k>QeH^Z2mbIePmjx(tZ?>Hwkl5+o63^WYDwW6A<zTW@wpQgj_C;8c znVi_z%uISsguB!<{r2+T#-~MW-(H6!d`(8M#95*e#)aDDY|ijMFMWL7b)iJNGh}LL9ux6tRFNY};icfKArH)`^gti9Cl|S&RQz+urSvd?^C~`Ru+e8LipK zmK!Gs)@(6)ApLtC|58rM&Tw6-E z9*v+<`1IwA0C*ToMUTLcWXo~i1`hv8ixok#RmovgyGz3GMYZ1Q_?oI_H!m(@r!bRl zA`~g0@e;{;m-oJZ{<2P=q*Hhvr@(O@vSs#F=kxN7Tpm(~-s;Xw_dsy37o`OzrLqkp zQa20(oR#{2QN|g)(K;KfyN;?6rzX^s&}aWv_5nfHM@+BxjLiD^?SC4L#tZ6DFvx3}Kie_x(3M5o&bNklX(p4;Q>|k)^V7wL!o+QDJeXG5K0(1m61{-K zA#Hb03W%y^ ztoYyGMm550e%FnaeTc9TVPTZhTXPnf7c^9_DQI*!j!2w+pW}@G{+Tj_kStP?JJB~) zvg@Kgo`rTb{-Jswjj(J4C+Cu=PGhEtld{lK;>54``a2r)5r*6QlJmBw+5srJPU%*z zJA_I(zhB-egxy+=w}Y0ysATGy6-;CjHCDca7`H{E8jo*Fkg;F$6-bN~5C#v>WFojE zUKYQ{0B-&|K8wCnqj04z&ywg+JNwN_e>MXbiCC;e$_-i>cZm;n6`F?Hf&R6leAy8; zhfgp&W`&jpg}T+!@%Fd1saFSK+&4TCY^}XuB_ICPA^#T6P4C}cWmgh>fj7j4$Wf#F zB)(42BcoI496oog=jS=`hvKdp7TVGeGD+zY{9(<#iot`Du<>8syR}Bv+gPs9R8|On zBo}Rb-h8>@%KLP1!JbAhW@|R0hJrnn<^0K_*KSbFR85!Wo+y@-JRgt9gL*EXJ(flx6Dr7OSRS{3w28u4^_&&dY-Pk;)V|0 zbBh)&FOh}#DcE$$gD{ukjW=e)){q84Q4WJ=7r%(~-RMjO!fhUK`83*ol1UExsL)|+ zQCP9se~FnD0}e#{GJ^>c>ipG?hojs1xhl4!kMgPYu-Lvl;x&!4SW#@P@=p(6=-mkT zjmBq@RaItt{%YZKf;C#FacRgAID@oGOm94ojEKylAzS!zz{(V~*v< z1Vi*n6$3p2*}bR-e}=ex_!E9o+J|Id$b7?|tHpHc5IFIKauNS~4QOg`NHlpfy+6_+ zD97!#qqva4GX&S2Jz#e!E~-LH;zdD!e)e_bJc>S6EmZP_7~(w=2GmI;pAfbq74yI{ zr(gRLH>TNnS1ZV;upFMtTS&oTC_K*cN8EZXl{Jz1S6?j%#G*|~2$4eGP(mddg2K?S zhs)cNu6We!spvnb(y($7LyC7MDLN0rzB`Y3#XOsWh}@>up%^pLz`aGqD0F{}@J6~p zt4(>Nv(8t3et7w$1>YjIQUyCBp`bOt zxFw%IKFp&5`%|yr?xlQ#vJjKVh@!QaY+N=GIQiLk8X^7FGkJ&mK@x>wdJ>I>wZAqL zzR0l<1yr79q#_mY>?$~mYN7C4v31MA#(h*oOETq|!P=&f^4CV?w2)k*0JY`VluCZl za|>TS(YR#RZj_P9GVtTx9QzqsdbX*1|i7@|cc=xJx^kzc&}TK7{2(Zg|y@ZAqah<`qJ z^9gN0)XHthXt{_l6uhIOUdXc3uYO!m_D*;r!eY$S+s{4vIF)9V(K$WhrsZ`uUU6TK zf8aNsTd_0#@%=u$(_g44o`Ho{=#12dqV@%@0w>5H!aJy5tb@ph={^?QU3DG%GLIy9 zpmMN8Y;3Zoede;y_cs^j-h1j8=g|fGiU+i1V)N+MlJagsog9NF*Fu%bxiBK@CAV^? z6l*x0ec@{D4wiE^_FJ7oSqYs+wVDkXOwbFAyF^3&`Nxe-sUZ;VG^+ctAFIgL-?TmY zz5qbNZ4kZr8c9JUp%Ls3x~(tbdP6HVooBIJwb0r|p|P{Ghs?KK*@Qg^X19es+0l`_ z*1^-;q7tTasR?`FZh-g50NDNy)M9NavTyOY)$nOImL1!ngKpLE-jXPM$7#Zm$oRAW zTeL3SC(*=-RIz7Snm4NW4c$Jka&=Xv4Bb}3XNe(7R|>^ufOlDrygG@N*3ty($IDJ*wHXN~W?;Z_o;g548|g&$Fz=8 z>e3LZ^aGm3O_$z)sfL_R{lQZ&a)uZ(z}-k(;8m7ZdL&ii>C=rf3`+JG{r!IGEqj|@ zF!`qpM@x4bKe0-+vqFw~Jd}>foka=@p-B#U7mat;T>1NIPR>Ssa(BX8^U8|SM_V)JXl@9NT zNf@8Bn2?7zIq*m&ak5|6`>9QGIHqa2-`mYFo^(xfhHI#Wvr?Yp&FQK4eqgx>_u|K- zZ0@GZputovGLdT&)dhoc&%H>sO_>r%^m{>(U*xks`uh^PB>o+q77 z5ys2Nx9^3k*?;^jNRvbZc9sNknQi$?0RQmh@)6clzz(EakYuLnwE=iG` zL%xcC!2K=Bt}jjnn32`D4wrSrrM)eF{wu4K5h}`Gb9ll55v3Xlxz-7X!!?i&{aNyB z2ji8FR3Te-7B%k1QVdMZRaI4XK^a8+@L{a~+vS07hWt^&Y7MBzayF~Eb78RArC&*y zr@QXF#)(dP>JH(G%3aMH+Ww2Xe=_jH^BzJTDUX9{x4xkvN)Rx_eh7`@zI36HyOZmI zD$CRqQLPAW$>@iwf@wxuQQptoiOk32UVi7q+vWN-rsgV zEYb^gE~|th#3NS+|-#XF?-rM z)cK0M6R2N(Fix#K@;Iqr(!D{aX4=<+QhfJ_|#2Gx>a@3qc9 z<4L3}KC-

L;83IUf}+;PW;r4z|b(_^|sZ7Azpk>(=(CyxoP)k1}yjXL~LIsV2g z#s9~?kejv7klFfk?`P@j_L#uQhsjuIcg|w>;PG#QZ-txsOBWl0!d*DJwgl_kJwDxZ z0?Mv-KM2Ik*tbiYgvw+|FJe_pOGUk71SC1#% zwMq{bt8uzt!fk%$55oS#URvGw0_>t36vW@??xVB|DryD@+q&N*r`UM!MN`wplWTHk zk5gnpqeGnq4Zn@mWsXT-3lFntKCdS11wAQGR%`7NIj4&ZkFuw1)XRYpFuzJMspt!nOE;^Krx3aU9VmO6yY+f#4Q}iBT)YhGAB1G>NkWq>_yhZKt zr`&Kp#W4a+5Fl@gq(AJC5%`sKFJLK{+DW+CPN?#-V}NW3wD~-IM{hekQ_=pLFB>n7eJ)ScxuLwYG*ooT1VVTvE-moD z3w^~V=d6F?`7b^taEX^a4fN2QL6L^Exfd_w4CV8Zb8q+R;XzN-(&SC6?d=}NraV%? zP!+)HT~D(|M1jKW_2u^h>JHp#a5H+D^g)l=aZiTkO>qUeO>V@HM zS}}=Q^Fi42biT>7aT?E`u2&aK9h3i<4$TnJRozi(3DKqU2(a=VoEO}jQ^v&bqSTqZ z92%8~Z$j|iaml+sv=MPatS^0}E(&i*FF@MDR2zo!d04D;0^%Kix*|l9{8EZ%pUJvx zzhYT6d+~aUuKqYdvI~pd@fj0ld>5_`Arvwnze$ZxU7%8?viC;O<+}!I{JB-?ntz+S zgI?uX@*a6)iwdl7YbpyH@7k7QA}RJsmAX-SqPi-i1-nrx%|QFX|1%z;XGw($hY-9b zW!?XF)$0NDkd_7EE0njOysvpd{=9d}wI78Inh) zFZ>b}0>6HT^AD1^y->z%+@UZ$j-P=nQmU-@`Gf{x@9VfdiQ+8^Z@z3TISXs_c|if4 zUt+#Jl%IcaZKRIj&Id2hMWg1GeK4{ioGwJ%{!9F=u4K>`Ij8U1t8a!CUG387s4I~l zEl2<|Dzo~2s=d@tG}O$gX_nM{6zi9wn0*FyUBxx*>sH#*a@l}u6`2m&`-Yql>+mK$ ziE2g7KH;HC=@>zdN7HQ}>zB0%jHQ|M@%AV*iih}4W0SN1c5a$v*j@Ho(H&DyUs;VY zE`{$bV&;||F!NCuf;V|eU~i<`W^(ge5U4P^N@bS2x)~?@@)9TBVZqcc^%jLKJtO>Q z20FFGo=Htn!atMqB2;Wed_C+}^HJpQw!5iOK^!h>$84bm}p5J zGtzD*a}wGzp>=8ANz_S;Cj0cSSi$}uwvCo~wZE^?wPGKO$i6y1huOuFhK0@a;@-+m z4{t}yk$PjYTzyFz;QQZSfnu9Fc>#~xz>O!|M^>jrJsEwN{_bT42piX11|cb_N-aj` zg`_UgFz2r?mK$DiisAw)kbfQcEw(rADfq|lsj*M;;`)*_<1{O+7|plUkJ8_@;Q>T` z9q&eKum48}o^pp8=i8zmEx#M4p2){@+GjPmT3uv5-KfH<#U<#KI3=(7rMd8Pl(l42 zuv~!xNUGtW+d~@=E$Nc->pdLq;Oo3I(QGzQ&8 zEn~UwtuAfe`VqP91W8StVSjR7IL;@c&-#PYzuBeg;U0O=Iehe%dG+FUV*Rr2h4fqF z2R0?SyJW@l{ex#k1>~Qt;28mfCx1Yve4o#Pj8QbP@xt6NejP15*7VmX`xd)H zOoc&6tvlK47{Ven98d2rGAXV%o|K@-gi`DIoP{+owfOvz^q z^6wu2Yx*ER^U7#|JMj^!8ByG#8>2;rO%V@phGwUhe4cQW;Oc!Pjy;OMQ+)Pe9J)bV zjS4dt#aRtFoSYal2{}p?0mDP9^V#Y8wxQS;l88w_W1DHX3ePS(M5)9@yz?Cq>oQHe zQynRPwf&c5zmz#-bYD`N6}J@!?$^)Oh})r98O0un^|NI~cH>QE#tSy?KW*|ulRf_gQD{BKT)6_y(*Bq`1M?zctjrf@PEkj;uf;` zuKm^ZOg!B1_J*({A=Pl&DCdvw)x8~QPJam3UT?x`jma3Zr^b?*MO^uX*}GAI?)|i5 z2niLvb-#EqMQoef@OVAdcJ$iBsD6Q`jYFKr_;SWvR>y+V%ZzI&Lg`%M=*f(`sGYE4 z^b)VU!$d1vQ0n!`FMtjD0sN5VaDm-{_4{YjUXGjHSW1S^60(m^9a4S5F2ZstScl{$ z`2X-zjHYx97Fedz1#SHq?MiJj(d5|{+w|d?V7nCSF<8oUkle9(?_B*JS^-L;PXG%n znt)1Q$aO|&{bG=B(x^x?4muw+sFX?LEMkmK7<;80vOQd4GE?U7%|^M=S{k^i?-*u(KKaZce~%!9r%d)Fv>g|)o_3r zmy(8ZZ(~bK1^(_%tQB}u#$0o=nfv4s_?Nzd&vkeS^rYd4$6c>c{YDEV<^?B=AFnfI zp^B%BH$N_)8MvI}i>;$onl^ZPPns{xxvgB%=;MCOI+}kcAGXJ$MOmxuJElxI8M6gd z)7Zyh=hg*8dYW%T_{A>=s$O)%k3MRD6_9r?OcLf+XerCOhvg*MqqwakwdLj!kPZ;< zEQR&q@liFO3^!Vu0`;QB=x_on!Tgxpd(;zJEB=(X7@`kSeMoNEy5PyzfY5 z$6W=n?JCcV{uM(Nm58BsrD{~816lP#PO+zb9%r_Fy7Qn-+&F1EIXTg17&SRbNuT?8 z+gG+YyP{t6?}MxkL(!b>qa+S4j$iqQ%-NSDho-n&?ioH?m3uauLmD_A1RFP~ENA~? zi$AA5hSf10Q7GQbWVkK~Wy&rK!yBUPSocAQwf2I>X|3eUOBEd*9UgA(ffD1=DxY61gl@ zk7T0$4GXTE|6b9T@R`%SB*H`!DGz@TEe|j64H{&2Lz5yZUN>76mZVZ9&3qc~h57y= zY*LD&Sxs#8ubTO?m*d|=-0mPlOTBmM_Tz8iT^p`NtkV_Q{oR1q^vf^-m0S+HR??@Y zCQFOz=L2garMREG=udfh3kjzl)Ah#SmtHoglnPWosGa4cXf9q%skBQv2^4gqG*cNn z%gMZr(n6FpiK9y3D$KU_g)S+3X(cIc-9}XW)MWettG0u$`jpVe!1P&}n=o;^y$sID zI&D_PF6iO9cMvI3D?!kx10Jgm`pE7_{h*UP^fQrH++#-We8W+3NPO&x_s?@lkD1Rp z=@JyyagQDVAyjwwV__m_i`o8N_r9sBZEd0epUqV3p^3L117|8B3XsJ|AeX@fsT&%lv&O`d?eNx5gqmDt<7S_i~HKxe5lN_i?>om*wsed~OB_B_+Y z)fIQP-(T9?JcG%7TJb#fbw_ll(PfEIjV&VR;zer(TehByhaZCNIKKjBUO!BzG?^PK z7WoRe6p<@X0z@$(x-j=`IABbbGlG9ybq~2hEA4rC3t}mqZIpQUf#Dy|f38F&TOsS~ zQ7)7u_mVqVafh<kEEpjJ^o#PQtI9&TD-Gf`~pqG6I)@% z#rCaQB-5{=rb)-Vs!KcGwn|Bff#g46XZ6*xAU`LJuL_?E!g5|BY>Z6OsyU~p!M?T- z;t$5$c3@rNx(wwDIz3!Jlgj*ZeAMK8SjDin=Dj z=OYU@p&sa={BA)bhynSv(9p@c&ue~p`dwAw(Vdx0&|t*rq>gLKsEH_!Gy)g}9;h)( z0b_jj!~`d6;9P7*q7mu(oGA{w<)`JnqIr5CEuVJQ>g9RWCv0_l-lKhZAfa)gFf`V$ zYTQCi6yYEf2a#%yA;aXo)!xbV$Qx(xJG}nyRj*sXs$el<(5%|jt<3$-+`?a5#V48X z-m?_d*n~OX2wJ_dK0Daih8Ov31q*>JDt*?b`z*rg-;4P1su^FdU6TIKH4$lElN81_ zAmqvPdcBB~k$>Pwi0?42^x)}t7X4302ShPujYf2zlFkTVo4VYMvuF3(HMP_w!jFJp zk0XQ#e{lBf{qU^d=7jyj9OKqbJl*7eM|>MGO~|9CKoP;E7M(-mER@)?CRrdYsNsXA zzUcVieyy)+24idtbsf{h;Rdthb>lkjVgAldDcp|z4ywtRNPg}+NCX|K?JJD}OW$z> z$hfc%a8V|SaP7X0@xe6l!WU~D`{6^KZ3AS)k+Fc1u21OPSldixWsiW3C{)(j9`wMR zlR=Sv?Kxp;+VOrL-1EUxiPyE!vwFbk!)}u+3_5cRbwN2QQ?tgBVt8f_j~4$HtR9-+j&!1 zJc-@XGt6#su(DsXIKjy9FZNSKf5lZte>b19OTD@m(fqhBbq&{1FlY<=p=`Lh|09Fx zslo1PL9+t)9ae~L;+Sjf+x=r8<`KF7^~*1efqk-l>Q7Gnt|J4I#p{#Eh5JMG>`Na3 zpYv6#MBZ-nC=uRp@=xq@&FzhMYC0CQ+V4AA%gpVqIytk&lJ_lyRWM} zpYH0E7A2Ga@%18pQmYbwUPHLo<@twKc>U?l_>JM6$2S9eP*x<$kFBO^B%d zzyr))PeCVhvQ>yB(1l`d+MCorV|cI0&aN9re5I!SKuZ0(Nuko8^$+jy342J3*{u2! z3;K@)p3uj%G!#|HpAE`j40|!Jv7CowaLYI$;D+z>W?jZBN&HDND{>6z>v(5yH;&Y+ z+P?4wX#i2*y7&;HD`W44_wy&V`Pl51uc&;F_>x17tXD%S>G5zPPfvZas7xjbA$dZj zT8mk}ZhA2{Q@d0l&eK;mj_H!TyiW_A<%Nd=`o{#1^O2nH0yDHv(XB-IRR>+faq5Up zS(I*r*6d`nsmzPlH17PX`^D$MhWv&1#K`Ueb>^KJ-s46f?MM&-vfQX}%kS9P{f^fc z45En&_*Mpc$Dbe$hCwP%WcG!Nah9-2|3RB!qaJzgq9_S_D>TMWL)7U?1~yf;<R$NXoS?q;go9#Ovp~IIT=4E< zJ*VVXH*aN1W4NZ)1sddBC-Won;>B7cUoP}z_E8|rV}8pPF9lyMxOOEgKrG}UFfk#) z3G^UN+LBxND7)KI0#5~ll*PL{GqjvitrrSgF+$Y~- z8!cKxjlUmbZ-58S2+?=B$geuP6gF-fv>n`49o&s9>_#x{o`U-6>lGm04!Jz7KbUa! z!Ht-%f3EyBc-2kP=Rz@`ud1g8Anjl$3wPNk6$;*JohY_t3T`BErhQoGPPNXf#(rP1 zrz6igo9(rA51HS0K+yV!K~mK531EM-3knpIew|#Rb`*+%0;v9RjER)I3^d>GJwYUw zqU*Zn`^S8RcdY{r(j`5Zn*09lUiEiIKwC$*E<}vZ82hTsFJ8m$g&yGR2Ez#c22Zd$ zyN76(hE(Y2=^?Px{&A>r>cAORTz``JEPo$DoVEYW(7Md>$bgqZvc?U_eypIt$o2;p z>*V_7)NfUtchi6l2xw@uM}Ff4w_xa{rJQu-@W=oi8!Pi-@eQ&Y<m;_otWsI`E z880sXd;MgY*IJxhrFx8sh7|(37(Pp{Z>buIA6Bl&d`-jN9_Bpn!^(ZlCs!u%NK-5& zMa^a(g-VlOrmee>p(dtkFIwg;#Y}Sd{Vj+=3Ya6{0!uJj zsFVI0t^VNVx2md)i|h29ce|SRE@#U6GedsCqa-&9R(NrddKnkNmx%T#_zY2q=--ug z%t+*#n50|}=4tKd)XtO5vngFhOnxtH)!M z1!EDaeBsVFfwo`@(ncCtm@BS%gJdX0K^PeW(CNs?NcTFfq_Wa`coX!PKu1Vw>7va> zzs<&TO|J^^ZFq{0QBLZBA=@6>*JqAca_p1V6NO&{Vh+;vPT}>-d!iz{a3$pw`mEBr z`MT7ARtM-xn$XMD5673I6Ffff6vp}i+vOH-)yTS64-04i+EGx(hDg}ddr9@>7<>XQ zYs7NnH)w8_a%R1Jm~0(f$HtwgiHYXS`n{rXSl25bKgK)llMMfHo3-?OXz*Ndt5KA7 zzCWyp;0cJBsuvwbps{- z6X0g`PQrla6d#8!_Ymv2=uiXe-MJ;11)SAfeQ>ZWe2sn?nGCMs-%ZHIWhbEbgbSJv|xx zBlXSM-Z@RNCX}2Nl9#g^L8DZS#o>wro!)wQc%Z?hMfPgXrXDKfTn95n|Eoq$fM($T zd!t5DE*EFV|1vBMv*%xi+VLSdpN@fG%5&1K1~cJ`W^A@HFqofnf)6JAA9DSwEe6HFI1%px)obV5AuSJcKU_^J2!t*u~@Vy8y zB)ExX(Vt>^IfrNIH|+x??{q$==wKZ0`R43J*~G+zSir$^=)b8w-MtFza7vf zqo2+4HQ4e@t%H1e(a~!8F^?YP3qT+?E+B$ytE+c@+TnCQLVzDqtSbS-7TG>OuLb^% zc9KGr%I`y-X}UKbJD4Sj&)av#GMWWk^rcIdHZ%krRfJq#e3ripf&7TkVM#&$_oj?u zD$UJR4moOPR+}CjAD2F>D<_OlCW>f-$}2!1wDfp43}M#RXb{2Q$&CVT54-6RVi85j zIQZGDk_{TCcu~v4%j+|0=4iht4W=TC0ojx`I%)zEzIItznI^}_3E%>3&btdgzygff zCtDU){*uwU+@ZS6ne=F}WMpJKnHXy>d`~Y4TOxq4yuCW#!o5zFO5td32UppzV1dLg ze$-pbdn-_)_;L_mkId5EZxyN~-yE)DO?++l5E^>U93J1VPB2gqvFKxb`0=BR?H}^gXE672& z3|qSh=q25aEG;ulK0nUALa-HX0aO2SyAR?GfL#fR8v)AfN|CW0v>kApED}38dts6d zSWPfYQ7RZXf8BN_WPP-(Jy8`LEN=u6W|y1|+)tsG)NS1OQ*JvLcZfrWSZ*W68sG=x zj_ZZ#?t||oXFkbp)!I&-ddxJMO;1m^C!e1lIxe7zAfcuDc>g3!dA3v3ua%T?H1>aw zyk2yEbVc!k$p#(Od;?&A<|`H8~`d_wm6adC5?@{}!WY7DW-{yt%>_ zjg3!`!(iO*obeO!N`+b*#Ib*f5AakDJ*n2 zIsu;sXw18mQHszjd7|&uRPo==xVU3l02M%$H%tT(SsHijqzXX-ZtCKEIaujFFjr3B z&4~i$vpJFzAmNe^v`|-%`d6YCj9CYv*jC{e5GLNHjEWNE=jR`%7lVvBd-QLdhX$%b zfX4;y_W|(ty{CJqhJ=b~7--LM@o|BV#;gK1-(`jDFZZo&Z80@(%(jH6#gRZbU7q(| zo%)00hITiF$X698MBKC=-dRBJ$y zHhNX&fO$@9FmoBce--gY(80#LFP{K+L}HKr#<_MQ*}a_XINS{-%C^ZADYUZ^wr)&uyP)(Ed`_c?XA2B=g?Q5&6wBM??|1w|J;)jKP zsavLNI$0|{!RUpQG=O2&bP2Z?o{Nwv_jAP1n*Fbgff`B4A$;N=5fVaOF(9%kfz*ym z$(G%<*t(j^>Ud9&>r}ij@bU3EIa^Ug0}SCj*smf>1Q|zar%g9+ZaVbMu8pJ?pY3{I zKL!(C;T=>kNaX8mi!KsvJbI?zo2 z9b$dLO-sIZ<>o@Pa0Hj(_ge3_SBDe7h|*#C_duc>0A>6?zk6X`^D5vj_h+M#$XlQS zgk7PU45q!B!jYG2=g>^A=NQ!fJ9*j4^$Z46@2mse{Ay=JSMBJLbTUHSK3^8>y;BULnpN!Imeo zep?Ja*==pgZd0`e-@bjj0y|NPXHP-?kP&-kEAqE_HSevif72x<`=UGdW?U_Z3*VlP zSIoceFEuF}1fa5XzJKNKI>oyv$hEQKD~kd+|0>{(XbCoQ8_yKMIg%NjhxyY&5J%3FPch!pf+wmT8alC>9PQuF+w+=#~p|$nwPS8~b zJ72il^1DCe!dw0vI|O=bLnpX(Mh4s>xYCvPe;PYInDp>-`iC_wJsmf_9c(Jte3bXE zO0;P^2z{k%UK=sBPE5!~O9~0ld#2vzHTeTD1w(U|HpeEgmH>bbC}Ulo)yyDDo4|N> zQIs${azmXt2!4d%Nvxo!quaOw14q?hicyx9d_wWKTaSTu{*NwGjoah_ke_Z)1@A<} zzH_XgWR$Vfs>lvLah|O1b6r0?-ORo`TWLS^-~2ZA9C`qvW(M6d_kWxhFtg8e`qug^ z&pRS5985Ta1bsexeHlkQ_zCje_*r?1Rp73wB?42>UIUEy>Ia~aPLE)fZTioCw>cPu zy|~!Ev;t69m&#f5U}HQ#Ha6A(9VEpt3VOTy7vGZq9n!6I=o*#9akR&Ze^m}HcBO5rYVuvbS;d8 z={LB6;hC8){1(+txU~@km?ky?)jD>EqX6V4WJloUPes&vHO$}yu5K*Z&T3nUC8wmM#Ne>6Xe{8fm)0N%YF?oD z&;yD9#PL$H&ybF!^UAMG#A3WU14G$va?6?OmC?`5<^1gF!L8=Utz9vs0GRDx;D~h} zfhJ9Bz0dmV%f{#9B3FJ4GRshZ@PVkMcb_T3?IBk6@M1c8dY^9gWT(TeY4a*4gD+9iKf#Jr z1)chWN^N~Uih1-(#tb|`R))hyCI$a>>F~e2T~>uCy0X#`5E+#3UDm*Z0$IJI6L@cc zE|vY@Alf6h9=&gPLc5ra?O;K5MKtwG~7Sb zdgQYp0As-qP9r78l(ElU0H^US;Lsh!D;fC&s0A2V2k#3|YdQdkLa=e?p>op!5^3tFu{~912y8gEd8UZ|@Nu=r ztN_&i_&iIqfabm0{sE4-qn$?RiR1s6*^`y8@(RLeSr1-C)vK+)%I~;QizOTaR~{GC zi^+Wt6a%s)npcAd|2bEEl~}(tY{>+zTg(nx%_NA?e_KF@AF?ZwX^_? z@#zyEa{_k_gz*OU_5});$NjEg`D8B7_V<0K8vM3L<3i4CL5SKmbaN}S3O=^C3^~Wu z19Aq$W|2-1-L7b4V2fgYTTgIU?CRAAWg*tM&zB`zx+llzX_JR0Kj3i!Jf-**Shy<* zK3>3&nA->Y{fgVz4;6QQd|-vrJ(*=F;*c@e3#0TeVcvQ7aDUWbQ=lgXC8sg~B(9;fHQ0W*#M2j9l5 zT>ap1DVgQ+4&LtO%Zt;fZBZd1n~;Ob>~E!|rJMR(b|I@O%oUT9lbQ5YK_^}{)zuSV zo+a1P(9o77LOB4G Date: Sat, 13 May 2023 23:01:39 -0700 Subject: [PATCH 2/3] this looks good --- lawn_simulation.png | Bin 20653 -> 22615 bytes lawnsim/plotter.py | 45 +++++++++++++++++++++++--------------------- 2 files changed, 24 insertions(+), 21 deletions(-) diff --git a/lawn_simulation.png b/lawn_simulation.png index 3e4e99866abe771cfa3378fca72ff60637632772..370d3092ba33f6f5d483aa802f6fef63d0db0690 100644 GIT binary patch literal 22615 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 YZoWZGO={(>0N6(G=C(&l4txFf4_A*Xr2qf` literal 20653 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 R?eL>8gs=Vf+}m~Z(r=P|x~BjD diff --git a/lawnsim/plotter.py b/lawnsim/plotter.py index ab259da..fe1852f 100644 --- a/lawnsim/plotter.py +++ b/lawnsim/plotter.py @@ -39,16 +39,18 @@ ) hydrangea_sprinkler = Sprinkler( location=Location(x=29.0, y=8.0), - spray_arc=190.0, + spray_arc=200.0, spray_direction=180, - spray_radius=8.5, + spray_radius=8.0, + water_flow_rate=26.66666666666666, ) tulip_sprinkler = Sprinkler( - location=Location(x=15.0, y=15.0), - spray_arc=190.0, - spray_direction=270, - spray_radius=10.0, + location=Location(x=12.0, y=15.0), + spray_arc=70, + spray_direction=330, + spray_radius=12.5, + water_flow_rate=26.66666666666666, ) walkway_spigot.connect(sink=hydrangea_hose) hydrangea_hose.connect(sink=hydrangea_sprinkler) @@ -60,34 +62,35 @@ length=10.0, ) corner_sprinkler = Sprinkler( - location=Location(x=6.5, y=7.5), + location=Location(x=6.5, y=8.0), spray_arc=360.0, spray_direction=45, - spray_radius=9.0, + spray_radius=8.5, water_flow_rate=80.0, ) side_spigot.connect(sink=little_lavender_hose) little_lavender_hose.connect(sink=corner_sprinkler) -# lavender_hose = Hose( -# length=25.0, -# ) -# lavender_sprinkler = Sprinkler( -# location=Location(x=0.0, y=15.0), -# spray_arc=90, -# spray_direction=315, -# spray_radius=14.0, -# ) -# corner_sprinkler.connect(sink=lavender_hose) -# lavender_hose.connect(sink=lavender_sprinkler) +lavender_hose = Hose( + length=25.0, +) +lavender_sprinkler = Sprinkler( + location=Location(x=0.0, y=15.0), + spray_arc=55, + spray_direction=335, + spray_radius=13.0, + water_flow_rate=26.66666666666666, +) +tulip_sprinkler.connect(sink=lavender_hose) +lavender_hose.connect(sink=lavender_sprinkler) spigots = [walkway_spigot, side_spigot] -hoses = [hydrangea_hose, tulip_hose, little_lavender_hose] # , lavender_hose] +hoses = [hydrangea_hose, tulip_hose, little_lavender_hose, lavender_hose] sprinklers = [ hydrangea_sprinkler, tulip_sprinkler, corner_sprinkler, - # lavender_sprinkler, + lavender_sprinkler, ] lawn = Lawn( From e912c8b04f6c65f3cb62cbc7bb3439148181f458 Mon Sep 17 00:00:00 2001 From: mlamunion Date: Sun, 14 May 2023 11:15:36 -0700 Subject: [PATCH 3/3] maybe this is better --- lawn_simulation.png | Bin 22615 -> 18571 bytes lawnsim/plotter.py | 127 +++++++++++++++++++++++++------------------ lawnsim/sprinkler.py | 10 ++++ 3 files changed, 83 insertions(+), 54 deletions(-) diff --git a/lawn_simulation.png b/lawn_simulation.png index 370d3092ba33f6f5d483aa802f6fef63d0db0690..ee0eaa6103e77a3c3f97b369ad5b31004ecc9c93 100644 GIT binary patch literal 18571 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 HKK;J{T0pZY literal 22615 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 YZoWZGO={(>0N6(G=C(&l4txFf4_A*Xr2qf` diff --git a/lawnsim/plotter.py b/lawnsim/plotter.py index fe1852f..27294a1 100644 --- a/lawnsim/plotter.py +++ b/lawnsim/plotter.py @@ -9,7 +9,7 @@ from lawn_area import LawnRectangle from location import Location from spigot import Spigot -from sprinkler import Sprinkler +from sprinkler import Sprinkler, OscillatingSprinkler lavender_rectangle = LawnRectangle( @@ -42,15 +42,15 @@ spray_arc=200.0, spray_direction=180, spray_radius=8.0, - water_flow_rate=26.66666666666666, + water_flow_rate=40, ) tulip_sprinkler = Sprinkler( location=Location(x=12.0, y=15.0), - spray_arc=70, - spray_direction=330, + spray_arc=190, + spray_direction=270, spray_radius=12.5, - water_flow_rate=26.66666666666666, + water_flow_rate=40, ) walkway_spigot.connect(sink=hydrangea_hose) hydrangea_hose.connect(sink=hydrangea_sprinkler) @@ -58,40 +58,23 @@ tulip_hose.connect(sink=tulip_sprinkler) -little_lavender_hose = Hose( - length=10.0, -) -corner_sprinkler = Sprinkler( - location=Location(x=6.5, y=8.0), - spray_arc=360.0, - spray_direction=45, - spray_radius=8.5, - water_flow_rate=80.0, -) -side_spigot.connect(sink=little_lavender_hose) -little_lavender_hose.connect(sink=corner_sprinkler) -lavender_hose = Hose( - length=25.0, -) -lavender_sprinkler = Sprinkler( - location=Location(x=0.0, y=15.0), - spray_arc=55, - spray_direction=335, - spray_radius=13.0, - water_flow_rate=26.66666666666666, -) +lavender_hose = Hose(length=25.0) tulip_sprinkler.connect(sink=lavender_hose) -lavender_hose.connect(sink=lavender_sprinkler) +little_lavender_hose = Hose(length=10.0) +side_spigot.connect(sink=little_lavender_hose) +oscillating_sprinkler = OscillatingSprinkler( + location=Location(x=8.0, y=10.0), + orientation=0.0, + width=15.0, + length=8.0, + water_flow_rate=80.0, +) +little_lavender_hose.connect(sink=oscillating_sprinkler) spigots = [walkway_spigot, side_spigot] -hoses = [hydrangea_hose, tulip_hose, little_lavender_hose, lavender_hose] -sprinklers = [ - hydrangea_sprinkler, - tulip_sprinkler, - corner_sprinkler, - lavender_sprinkler, -] +hoses = [hydrangea_hose, tulip_hose, little_lavender_hose] +sprinklers = [hydrangea_sprinkler, tulip_sprinkler, oscillating_sprinkler] lawn = Lawn( rectangles=rectangles, @@ -133,25 +116,61 @@ def plot(self): # Plot sprinklers and their spray arcs for sprinkler in self.lawn.sprinklers: - ax.plot(sprinkler.location.x, sprinkler.location.y, "ro") - total_area = ( - np.pi * sprinkler.spray_radius**2 * (sprinkler.spray_arc / 360.0) - ) - water_per_area = sprinkler.water_flow_rate / total_area - alpha_value = water_per_area # Adjust this calculation based on your needs - - sprinkler_patch = patches.Wedge( - (sprinkler.location.x, sprinkler.location.y), - sprinkler.spray_radius, - sprinkler.spray_direction - sprinkler.spray_arc / 2, - # theta1 (start angle) - sprinkler.spray_direction + sprinkler.spray_arc / 2, - # theta2 (end angle) - fill=True, - color="blue", - alpha=alpha_value, - ) - ax.add_patch(sprinkler_patch) + if isinstance(sprinkler, OscillatingSprinkler): + # For oscillating sprinklers, plot a rectangle + t = ( + Affine2D().rotate_deg_around( + sprinkler.location.x, + sprinkler.location.y, + sprinkler.orientation, + ) + + ax.transData + ) + rectangle = patches.Rectangle( + ( + sprinkler.location.x - sprinkler.width / 2, + sprinkler.location.y - sprinkler.length / 2, + ), + sprinkler.width, + sprinkler.length, + fill=True, + color="blue", + alpha=0.3, + transform=t, + ) + ax.add_patch(rectangle) + + # Add a small rectangle to represent the sprinkler + sprinkler_marker = patches.Rectangle( + (sprinkler.location.x - 0.25, sprinkler.location.y - 1.25), + 0.5, + 2.5, + fill=True, + color="red", + ) + ax.add_patch(sprinkler_marker) + else: + ax.plot(sprinkler.location.x, sprinkler.location.y, "ro") + total_area = ( + np.pi * sprinkler.spray_radius**2 * (sprinkler.spray_arc / 360.0) + ) + water_per_area = sprinkler.water_flow_rate / total_area + alpha_value = ( + water_per_area # Adjust this calculation based on your needs + ) + + sprinkler_patch = patches.Wedge( + (sprinkler.location.x, sprinkler.location.y), + sprinkler.spray_radius, + sprinkler.spray_direction - sprinkler.spray_arc / 2, + # theta1 (start angle) + sprinkler.spray_direction + sprinkler.spray_arc / 2, + # theta2 (end angle) + fill=True, + color="blue", + alpha=alpha_value, + ) + ax.add_patch(sprinkler_patch) # Set the aspect of the plot to match the real-world aspect ax.set_aspect("equal") diff --git a/lawnsim/sprinkler.py b/lawnsim/sprinkler.py index dd688e2..e84f0ce 100644 --- a/lawnsim/sprinkler.py +++ b/lawnsim/sprinkler.py @@ -18,3 +18,13 @@ class Sprinkler( sink: WaterSink = None source: WaterSource = None water_flow_rate: float = 40.0 + + +@dataclass +class OscillatingSprinkler(WaterSink): + location: Location + orientation: float + width: float + length: float + source: WaterSource = None + water_flow_rate: float = 40.0