From 4d721db8f835b8160010321b956c9c0f4babb783 Mon Sep 17 00:00:00 2001 From: Justin Lin Date: Fri, 5 Jun 2020 09:19:43 +0800 Subject: [PATCH] add doc --- README.md | 2 +- docs/images/lib2x-vx_difference-1.JPG | Bin 0 -> 36411 bytes docs/lib2x-vx_difference.md | 28 ++++++++++++++++++++++++++ docs/lib2x-vx_intersection.md | 2 +- docs/lib2x-vx_union.md | 2 +- src/voxel/vx_difference.scad | 10 +++++++++ 6 files changed, 41 insertions(+), 3 deletions(-) create mode 100644 docs/images/lib2x-vx_difference-1.JPG create mode 100644 docs/lib2x-vx_difference.md diff --git a/README.md b/README.md index 3435b86a..4f72293c 100644 --- a/README.md +++ b/README.md @@ -228,7 +228,7 @@ See [examples](examples). - [voxel/vx_gray](https://openhome.cc/eGossip/OpenSCAD/lib2x-vx_gray.html) - [voxel/vx_union](https://openhome.cc/eGossip/OpenSCAD/lib2x-vx_union.html) - [voxel/vx_intersection](https://openhome.cc/eGossip/OpenSCAD/lib2x-vx_intersection.html) -- voxel/vx_difference +- [voxel/vx_difference](https://openhome.cc/eGossip/OpenSCAD/lib2x-vx_difference.html) ---- diff --git a/docs/images/lib2x-vx_difference-1.JPG b/docs/images/lib2x-vx_difference-1.JPG new file mode 100644 index 0000000000000000000000000000000000000000..e7a5942497d88746356933e3827ea17ee167a8f8 GIT binary patch literal 36411 zcmeFY1ymi&wl2JI4HgLQ3kmKXBnciI77oE#xVsZba0?pT-CcvbyE_DT2>!3^ea=4T z-Fxo6=iK|od*dH(H>2q4?pj?nzpkGBO{wR(=QRL^l$fL#0165U-~#yrJg;M{iMoJ| z0RR~p0384TKm@=-@dKbCH3Z0k)MqdN7E*_T)D@Fce(eEh0073oKGAR2Q6a~IkOCmu zhx|kQRr_=M6M;Vw_!EIY5%?2NvR)P5S7jl2HivJhq&z~~?iNK!-{E5Jy2>gk_-w6P|2oY~At+#HXw0YhUhFR| zAV+T~{xTM4XJ;m7b|z~(6J}OkUS4JvHfA<9Mo0@rdsiz5Jr_nRd&qW_Undv`qqvPZzvoc!G?Usdd8gkhK8Js`g-h!jI6ANdW?F8?5vE2?CgfzoUA-- z#;p1jf9c-P;E&#I9PKQA>)X(P*~r4k(#Xoe9)bodGX?YSgZ|&uCj_EDI{k<6Lu7=s z;d^Iiq~~Dt9#RB(E=Cqk<-a~?CT<>X0p@?xPJsCr7=Jg=|Ggvsr_d4gN9`An@~-py243ud#9Q35iLW zS=l+cdHDr}l~vU>wRQCkjUAm`-95d1{R0z|Q`0lEbMp)98=G6(JG(#j_Rr2QF0Za{ ze%{{wk_!p|^SfAoNcL~!!i2~L4GRkci||V>C}?L$fx(1@BWH!j5>Y_Vvwcay=8K5^ zHY%f{9f^`%@f1hjZXEd)kYk<_{ICf5Q06$T3O@L(_jLV!EI zVA@h>zhK&Q=>M|Ng%>X5*QktbR+)dcDWTd5#lj)m5iUfE^pA*n-ISK%HU_u9d+cG7 z6H;JNZBN~l-?77MQC(8m%z%bGu>HvJkvq8rq3+LB#cx%_igHAbx_2(?PY zeY;Z+5r*jl9dsosw7|t{ne@OBwYU|a=i4wZYTrews_R$R*Tjgo zroIuKnFsCjM-d8)*BdQU0C3T3o&ld;cLI324W9ve2X1W-p>DHL7GBonKNgP~FKUjt zUCXL{10(vE{Tn1KGsCXK@_y3oPwI@9P*&Hdo^$&7@1)`*l7eF+*aWO_7S!>M!b*B7t zq6~)W8)6N@*o5(o$xx#are?V}`PGYaYiEngN;#%wYLjAz3wyLJ)!VV6C@M)`pGx!4 zMM>HTFNu^e3U%;_23)#@#ytb9r?dJAQf^L4MaTk?cONy9>y9^({q6OHfeN{6Ac(N> zic>#Ndwgweif)cMz1d~HkorwK_WOs>c{272alT&c9;pw%pu6nGwM`HX9 z<4y9{s9eTDRM#fN-u`;4(&%7S=-RYA$mm(;!5}Bd=uHOeYJ(u7m*i0aphnA0O()T2 zLy2O`|Fyu24mG-*<$l91mst1)zOl4s5u$httivkUEigbLB5iafJ~1PR4UaLPIxcdx zHUPg87z{}S@k|1t;`9OiWS%mj42@rAk0^o>7eAPT7dG_091=L*QW0I!8PoXRh*LJ? zfVu8Ci!>J`T`Ab(sn4&?^F{#cImRD(exUIs+kt(F8Urrd=1;QsRy?@XqQO>M=GGL< z@jsE{+4L$g3L|3u*@$3(AY9A?cAeG|SH|WqI2Od@=lTL31Ml@eoO)eEU6AnUUm157 zNxDC#Cpm_-$4#-&kt%{O;#xr-H)ssLkoS|(xx>Zkbu1jP(s>Ql z?-F|+i6sntpWn;`Ku&kSu7;r$o5&04;98LTqVYzwyKes2W5f6*6W5WG-u+})YbcH0zvTA1xd}F&&dnkNAJ2@tGK~)ccQTRt5jUV)JXNG(0O-0_g zm^AYiV~hJ8c=Pimcw5pnVrpGKEmB``*OOs&gni#PqyLX3R3o)K(>p60QfRRF`;q-&$zc4gpqJ^ZNN;ZIa*FIohp_ZSR3 zK`Sc@hr2_;3ry_VsQV2vO;7^pLUCH>(yvO2evJ7Fq>|Rh4oYt$?k4fvE@UKdnC)&YpZ8_$s?cml z;FXrU-EGyLH9_Mw(hb2H zw<@Ej*`}w_)E-SwKFZI{H7zw4Ib=utIGYJ{EVsTw&G_y3Fo_i7hZ{4-({CkiV#q@K z8Ai#%Tn2iIrFsa>;t=6C3N?W+!npaF!NS-IqJaNf1qWxi8aJ+TQM;4q`hq-MEl0SY zBFe8A9Tvkzq`)*C&AY>yz1!S2W1n4;^E!M3hG9hg_#-8YtmO6}&A^EdYQ+!&iZ-0R z7i3ZdF%=kXm_DiLJpM6psykG_Eqopy;D`|Vi{rds&&%61h2Y4 z${e9u;1c@J_ghm>-mlE+2(n0CNgzf}Q0R|UgK98#6}c_PQ7d@`V>PN+G3D_L zIJ_TpFRS`6b8(ARbgNjl5?1a7!pBF5N~%)O)D$r>$EnF?ZMQ~7+z19DN9E%or`rHv z0LXEXaM%jMzY4ZdyaK^vwt@&DILwk?>x0}#4E&e(S*ZaZx=y`*Y&plvO%^+R!#k`l z;&&&MsM=m!d|%O%2u!B)ftRG&H>*A~>E>eh2H$Ejl&aqIJ3n|BtqEGOkH*(o+1Tzn z;iG}Sg zZrq4Uyo`Wt`#!inVX1V6jO2AyyRFdBDCxo!W7D0gDj8OJJS)YcBoiwh)8_I*!5i{X zkzN7y+FHMn8G3UG1HTn)%x-K697=f>9N{$pJOGF2E}*1s;hl7=wA%agcH~4VW&U!H z8n|#L9ssnYBD_R83WtIy88U6A&;QLr(NODmKBH+~Z;-lT$U2Cfj}KI2QSn{#Lqp{3 zcOey6u_~jmKpxw#}7*Vd#R27QRaoR?lo``zZ~adXhuhQ-#b%(dCX7 z$ZULvl!6qi22+zEDROJ4qQ{Uv^kKt$u3M^<=4+^B5D zWb?0gjNe_idT93LEhe37W!*|txu7u*K21z;2~z|yDMwWy`; zVlU5ywX&$md34Q)9h4_wSHWexR6@qD!vRZ=vFhwdUhosQL!-DqH(T|I{JhJKv4XoX zv~Z40njULiaBZ3XlR`Nb{KDvTjV{K|LVi<1xw^5-pT|d~bE7QvjrOqpv~Pp%s|U$$ z{o7!Uw^Eu_&VE|(HE)?Cv#0hQSv}N0$m!WKmDcXpI=_BQov^$Y(}CI96u5PF+C?C7 zR!Fr!JYlRh=OwF7y^)U-XOpyb=aI?TZFnr7-KV~WYb=3_&nA6FES0TZG;PLRBpJTFWxoNgJs zTF`)5cJ@-d&d4)h)}Ta$Y9Q{jRd}UX>1Vp{7@i_|s#NPIFR8OKmbgDpbD9KQFW%aH z3RaYWy{&H-WsEag62k)wHJO91n6x<#zO`srQcKv}ys9;RZIJwsodKp`QpONd)$4rO zi}#3*9u%g5TwQ(Q$#9p-uvb4CYX+_vLUAOnlEJHwB6$C$eq|u%9SgAp+|AbCZicgSE_i0o*|q8jSD&m* zusvW!cu>y;U%)tfvc@%g%BR62yNy{ErNm!i9hbKBLfh=hrr8;$ef9mcVnONS<&`<2UXwzM~?Fno<`F-3;ZD7UyKf zfr>esK*J(SDmy+RtT#yMNT&Y-vnhCI0cB9#vUEM%-8Hh8K{4GhN}?Tv;D^XVHcOS` zk~`WtQ>VVN*ss5!{FYg2USW)!li-tX811IY zS~yHZLR&uVFps&VwpH6IY*Qty+-Qd|v`4F*9gSm@7FuJViYfNV8YD@vi6pZ?8*?w$ z)!4?z6mOlgAhgsnJ%}%{PozPO1j55})prCQi`2b%(fg^oR_2L*s;p*xa$stQo0D_IS?Kp~8oVgq(9Uw@#KfHCuvBr}Lo_O7lek=ved7(M(EL2;oB*mf(Bz^qI5?TgAZ>RXFccDbq| zvZCgW+17QwI-lALBanA98`h*Jl;Ij?-aJz zkEq=fV;6V{RuH0TQ|uc^R208#k~$`kh!cfQL98N;m7Co&oUVngu$%Ri;Dx)RS8Inx z2vpLaZF|&?U@h8VLA7TPb{N@-1sl#YMVIO81Ar`lFuR~Syt1r)29$k!cro1vjJ`DI z8t+9Wgs+Ru{hF3&^nx@lEA^SXD_SI+>SHxgT(vYUr;rseZJbJ2TN@k3GKq>WI7rdFD}OW$$uKqK#? z_R2*IrSs{R@pEKCOPuN7BM?(CR>%$TBBSdnMa!tleO3;UiF=x6-jO-es2-ql+>K1^ zC#APTFxXS*we@zqp3)R5cXbV4FpsWu4I3S;AUyV*U>oS&fn|bXUad2_(>>828&=p4mjF}0hr*BeA&kTMIH4Couwy2OqUnQk~6u%wa1RX?8Ug2}x zN~(2zdEkp%jCeP;J4xhtozpOFb?mDeqfe6W50kg6Yb5?A2bIG!XX)-4kn%9fr6$SS zWZ@9c7f_Qf=ulMe4V_%~;WGcwk*91$G)!IUqt9GFNn6@wscf;@G9iCgf{7{5NB;1u ze$>0-qTWO*l!Ipg`j+Xbt-RCHp=mYH@$7@`aQj@E#7rb{+8FQ(VW02doILbtMD2W_l9%NoYF zJf+A;8dPvAw3Q-B!s!Vcuoy-b6gPT`2aRpl#KF4K2#KaK6w7_2@GI2(A6i&zkU(}) z0m4Tybzp`E-c0a<)}3)$7Wldrm%sU5f>D7Y-tNe<51xA}a`7`nyFQTne!(en)#M9WI{x>IdEX}v7k@bXQ0VWMUlnX<_cWN|Gc;;yKj+Tx z)gJGN1&_c5;C}&BAOl7K_}4gY!LI=dq6)3kC6@<9((YeQh>uqdjaLT1z*V>~)M0wKF^LKIlpT8Up_i!qyIRM3Ae85#?|@||0Vpm> zrRaT~YP>aNB307)dXBRl0BEu;Y@6~02VQm>`+K;yBG|iXRjlf1qPC^;v6lZ!7pCZW z%66rC-D@f*dT3$TbpB6K>MJjd%^PZXNv0#kUj)AmA#mWIFV{}vZ$QNb!x)QgGG*m0 z>@R4qe9ITz)zEo+Do3)>G(J^?>WA1z6KSsij<@+xH81W;wcV3+0C8mG;|!%LO2%~* zMuXlPRKwktvxWj-q{gcsu^^BXNgPFsvkfR4?L_*ZMzh|gjKFIL8BE2f=4bw4-u~6h z{jc{*I`6|!`UZmes)(Q@t7GSS71X&&$m$}Xmo*HQ9>;`)PK%4e^v^d*o6miYUa4Lk z=m=8sb|_3RC*FFe_I_Zgp=$js{^qfyqHB__)<)S*e2up_Bn^`tx;D!4(s}Fh67sp9 zVZ^zp550J)D&@6*zIyTupeK&(Pzt|`UecCxxGx2oyr~-VL@)~urtkWi!)q_OoB{?G zL&5_E(5$f1Ha93(NZF#|k+e$#*|D%!WUnmH79&aw%_}6StJZVh8>?M$n~)jO-V=ZC zzr-i=lqhMWmyqdR?JsLllhK9%pdQ-a8n-O)&MZpPwXvYQ(H!K8EM6|aKmKKen>8e* z#3%2EVT@eE)Mb6fbSViE%1NTbUMiV5Ps9+O2Wr_+4hqf>?5_n||Ct6qfpr_w2#jZ3 z@vTx`c+!#~^3{*3-;x|l9~~NOB2)vYS(XM250dD%)s`JUCGu%6P2>-qF?MKH=Tk@F zPq1~`(?#O>PWh`Mz(9#bQ&DqTtT$vKi!Iow zsP;SGI7U&^Z)jZH9g6ZfKf==<;0``U*AigFDr+z;|>M_d_bg zX*2T-K%Ob(>-jOi0_@}$>4aKxE^Sw13sgjoiWE7}b&uY7Y$c7>?3Ig`I~Pb+5tLlE z=*|qLU*!FFv7Lq%lP6&6>+)IE5c5@Lsi`-0y!Q+#qk{}#B-1cL;H6&7SxJ=|V!>I^ z#PQ|wTV}qAb6h`{8=RH!95q7>F%bd(BvTa5;hzytz{Z^TpsZWH&yO#adjShg9+h<> z_lYcv2}csCYn#-?KUL)$nJ_S8qnhoG@KJUwN0g_R zjd!JM#!C&)P-krRLQ}N|b@_^^bhj6_TeXNb5lU^vhEUV~DLYN8&fi4Fyn`Klvmqlj zv%FQVSyVqisZ}i z1X~Y7HZ}+}IM}K;Smx~Nf-$Z*&8GO)%j@Sx0v?61fgjGj&Y{jz-Hg>Z?lrxua6&xd z$`dG3joGB~owi&zObmwnoK~?+SrsfUVjn%cWRX|pKRti5! z69vjwqoP=asI&?iD&k7jenx)R(!9(}9JA&{YMC~rhUcjQOzO(fm3(1c%)>FEhSGUv zuNrIP!TEdVw=?mP*{71#rI(JVd9cuIh-;yf(8I?2Sdd4wszPry6FzgiLp2oH z9fWEj443jg6qguVYQ!cZ46Gml9h{XVn%|zK`L0Bcc=%Fsd)OB5dvY0x@e&}%2UXc7 zI~LBTzvVA4+3$YG|570#Aa5&Sxh zCp=ww9_$zLRY#1~TRt#~izPcAL)@#!8G$O4L-S?!8%Rr079m*I#`sok@fXDfRME!E z3}KW8_{PIr!M7j8m|Ce;ioZRyZjJ@;yjvF$#a4Z-_Yas298%Wk7fY&p@A%po$NN_& zSMx4yuAvuIcq8a{D_H`IsV*g!Taf4>c_5G(7|o(03ImLG0ia!pxiWkXwlIjs>9eWGq5;EER*xi&lguy!_b*BgP5SylV@GTTrXFl5pN`uR z@OTSU&6joaAEg}>M2%T8gJ}VOEu|46%@-vf(7aq44X<>c>VB&7f*7pAQZ_!YR}--i z_qtu$EvZi1B3qkeU9y(REr?`QWJdj=8l`o!j$QseVZ@2T{X#a)0WNE1-98}K5=9ZE zRWq`Jf8Sh0aeSM|y=m@)KWhX4O?&XWI+vB^WFN4B;m!5T-NqKPD~IyC*J&rL-qY&H z+l4h4eYAPY7AHtB=5S=Zvf&thuT6U{4hf%{S7xD*zg_A{jQJYMU}pGTW!c|NTkt^s zX*B8le4{_TEB=*}5)Ag}d1MK>2)T-0&xCK_JHPA_b${84+SW#hu~8Rzd||R+MHvK= zyhdfZhGF#mJ}M%+rVxBDKf?jenPl9WU_$Y=q%JaV=CkqW#2P4tffiP!-S;{V{W!=J zhL-V|##HGwZEy7Xaj_p8op!-F!8z7~El~S@00WU1zktJ~29KjFL@ky7TmFjZMWn${ zC_mzSIbcNzY?;nMGzBFNsz_6)3@6l_XGpOs*iQjnMBJ^I$Mw}bFZ4|%59MIV>MLKqF+THGRbJy~c(E1GK$-@2I&br9!0*uo0GLt`Xx zIY{Me)%*7eBeKKU4$pwN6fxJn>1GjU#;Sf-h7#oDg!G_q1w@v@(gqP)j-_`l8qo^l zUQMkjA5z|zI^2aOG3XE1m=L6N2f;J5(3gM3d0ZFygayGH5L&Kf=%41kF_?%SH^3Rd z&;DX~wk&0M>DZ?XabJSUDi>OS&* zM~L!W#hFz_D*O@i<4ki2=_Y!P!QZN9pT$0AHI+|QH)pjpD^JvhwLX+DVqI^_TQ>uz zGbmKM@SU+a{I$^lZDxJg-?J*Tf2*HBHMTR{Vk2kN_zP%wXqzog$n9U*B9%k^&^7Lt z;&G2oAEH+*MYF)VQs5IAARELllbq^I0fujL~ ztN_DE!CW7ParMf5+zH5Mu{9>o^>kTZGN&o3r1?v$?i!s|e_-F+LO~E}pAG7NWe071 zXSz~jEV0V*HEfNWo}sC&f|m5?K~_N=!H)c4*R4zsua8Te6?^4gc6d`E?T(m+wL-P; zTA6<9ZC6AXfND1%;|@p1Qc6gVS?P&3D^q7xOtf}8Xt*FE-xnq|zVRJq1(QxBLUPeHPPM zcGGfkdrvIa$i+Sz8v4=rCbHKbkpl%@lYjZhV*QJ~{4@Di|3RCE1_7yAdHOk8i6tv_ z!f25#B9dfJ^XxK;)9{QP&6d#5J0ZIfj}xxM{4ekBRsBYy#%hXAe)2 z`KaU4mR??WSG_t2c;p>j*L)kg??EdoY2}C$<-Q?}qM}EXW*X_Bc1z5D(`c}lw0T^E z(li0N#X0IOm`C0=JO$2ZU)4^n6X!efM|I%_pj}jQSZ6s@aI_rMJA#uOUzvpuJu2?R zZ%%@(tyH3y7%NE*1`SBs)}V^PRMBA67=DS}BG!JPFs{so2EUQzJV*ix`3I|LRpg== z-)NV8^GfVZVzSVsZ%clvwFJwR0v1+b%{|=2I56VPByQ14bq13y%P*xWgOBMYrZh!4 z5}g#{oCJ&_Kn6Z2M5()+p$jEf!%GHIlZJ7t1_*I`8gmSZ+F3hL_efP+!FF`!E%ATgG<3h(NmQ1UWq}TxQd>4gHM*l`tyXNcj zJ(~Wf+n$vJzi08`SbD%v_()ei4Ar-2iT3_cotivdZiO1^oT7`TwxL5!Q`OdL=>vSr z>@|scgt04xQy$Ji7vr--PDzgYm}-e`8#xrR%~_($8=lgh`e(o^&63tEoGmQ4*zZd) zdcMSjrS1k1$M-XH#@Q(}vlrBE?!9`VN)sou3X_@jcuQi$;-}^NLSEXMpAdeR9#Ozt@ItyjJx4^#R;f<9B$oc}Ha9bJK)J z3Jg{yjID#N_MD4HBGy(zU!VvRx9-0HcyAM4wIkz~=N1!Cto(?ccZqXp7QvYeqLMCB zYYy+C5W_u&$JgGTb9U-6vqa`Ea>uP|s;sM$mP{p7u8}YQX5(#NAu_PRR`@;OHnyDW zi00B09V41*TDFRPm?{Yz?5h_*X`Hy|zr(&o7t!1Vo$6b6Q4NZaj29bYwtV0RM(eOi zT=%N9)HllUTjARCvw!NtNA{G!=PVOtp{R}BtqE5D7(KrwJdBzn-6PQtT9Ddu-~qb5 zRGhKE^focOk+Uy2iBL*>QB!?%0W5ljPYFEFp;#?P^`o+goYSTg#`%^h`j}#X79p7T znBi=M3?B^|I>KbAXifyiks~sHH&!J>Z{#TAdg9ka>7MS6?YgnvR%fkIRFB$`N69B+ z%dlGvmwFu;YV}c#Kp7I_X1C0NSc6Q7XoHOm#5Nek?~Mn{)i>{vvn!T0>)Z7gr6fxHBo%X+W8PpYbs10Ia)HE$V^dO zlrWRK&_vj3|JYXv6oEB-*~bgXTu>oqJ4T9gr#%5S*H3C&TIIw-H^dA`vdyU|O7(?0 z`LuDtv--OI4>B8an}Y~&qhhfgjd`GB!1NX2WvPc&D?NAg3Ae1Z5?92%8*KDTR*s8m zA{aZ)BP`A6qYvy_FX98M??sh>-lma`U{_++8#jZ4q}$L%;?J=exWncvtGgAefjOK` z(_v~kk{Ocv{83YE$&Ls)f=Pw>zL;+dLm_z^*!#CIww~MCvCO|5+jTQm=&K9FQ|&uzJE8fK9SUl}~#+ zrBTivDx8}PT4F?ER5mNejU_|uoA$$yR`$SG1yM%~?0)@lQ=QjQhGA1hS)qXl`IPl} zC@W*+u(Vhs8xONv=WjRQrtC~NM!S5B^-4!VNeCR=-H zcc#3=mx7BqW`ZP*o>1h|M>npPB=HOk(r3w7?J$6McH$yOAd~1mm)ss+a(k~CRYuhG zhawCYfo_2-V3#<;ajLi{-Px{&jOf70`SLX+rs6`8Rzd^xp{=C}aaKS*URvqix!s9HM7u0Ox1FTaXSql{c zqJ?{nu~#)c5xXndpAF+dGb7h?fXEdWUB(7NG`y5KytPdd+LKZem#ulUi|xh7A8F5yf+-vmd^m#-f!{m9dKKz+M3`f^{f(w_UkQ7LhF9&R|1Wl zm=4twwxaDMOWc`X=q~%5)7E{6xN7ENAHjXF)lf~v4rF8k)q$xRR8Wxwh#Ub>tCO=t zR|P7jiXIhc>e3*E)7-3U^Gz_lKJU}99Mrw@$>h>TlhpaPlenrF-GCh)5r(JvxI@#` zl*5lwcy7$k3J(l?5eJtP4Yt*Xx3fx8b`#wY{@Q#Y|5xK0vWLkUvlci|f=NqdN_?aG z3@CZRq0YjM^0bC{1RldDdhi35?77HX66kTQghB5JB6rDNM;h!b)&DPA-O;|?+S`Px zWk^A5QA-$3HN?txFfvw()koFfDuS=e z(lp~L0)lP6g(?An0gW71Q2g3>I7XwW*-k}Me<#mKrAq^Qsee_9*DmK>kqHQe|D}^u7~gQ+?5Oku256Mh5S8tfA!@} z@8*%Vk?Ux8#OBYLHh*zBd?bJJid@+)s1g*(Uoy z+EYz`kto_-U$rQ^zy9}>45YIA`G~m&#*x?S?KburD@j`*0^XiRwMvhjf3q4#>bAQy zp*h~Q#@h=2Sz@`Vt2d^9;{>A_hu$#36{1WgUgrC+KowmYF8WXFZEi(Y8RgQ+F(YVz zJ9pzci)Lm63#j_xAs_#^b#cM8&7_6Qx>V}yySV_wthh5!LVlEvW)F@s;udl}z#D1J zi!`#B{{_>%a{M49m|Op`U9IO+!03lmANMq=%eNJ+u;b!vhA)Xi8Z;3E!msAlN-EX5 z81%#OSigpIBI63ABETd+aUN}B$Gzr}0&PEpYrRi-qquZo$-QnleAV!@630Uxv+e#d z6XdwXLUSA%anpFtuZo*z)^_UqGkW*!%x#TE;zL@Jo(GoV|rYmlfwemE3R!Z zpp5xvXQnIbyi4Vh!J$j_6z_r6(K+uH`f{Ir>L4(%#q!%=cK;xjT zIaTL*zEGmnkd0hqJR%ez4x7?RJNhdfVxG2ot)v} z<(PhRtC{mxUApFYa4xsk{>dMA!3*zTW76=+*6oS*hyMi{;}E z_MYASiT1L&hOdy$|KL^N$c{Vi(-_x80x-BQNJ|QlM7_PER$^oWdY3^McAP?Y#WPsV z-|Cnt~!69Sy%cO$aXPO>w9MRWTf@os^+g_GXq8vO)b*J6$f zDw3>z67L24tC@Dc>{6NIXh%(t2UjKsBEXVrTxXGj#pA#$z5GtG>6MNqOn7fWk6yv{p4JXk@c9l~$ej_0KpXr7F&b2b$pB2vl zmb81wr=?OgOEvjH?HQ0D_XtU9n5PdRemY@}-w88)Fx`4!&G(E@#%Oq49>KWhK21&i z`QTa9P{vU9Zrl<5h>?jmVMp{9_zZAy-dpwmIoq)bo-h1zwKtfN0dYJhn_>T5rnHEo zGu&5r^8#3Kvf)L{>^FB7pGy(()G&M6C=Wqs~gpo*PzMC ze$I2ecQ!^xQYZGbb!2~m@vZbXa7MUMK&C4t9gtLrEHx`?a;7D;2(3W>rH*&h@Ru|W z;*q=bma4ib3nqrLO!bmdeN*G0J3f}q*VklGO0(S00HmI8?!AHJ^=JHO+SUFRnAj9i&&$TvmGSm8O98skf;+xHahJ7F2Ihddnq-x_wdK zRY7xa0x)$Z3lB7O0?g|8c5+N|7n{D!X!g%w84Qh5}}zlQS43$P(fXN=%Ue2AAptk z{q_qG6$^^Dx5X(*ypwP+K%FxrwpzQBr3a<~pBHu)u!$$ct!ts$KlZ&rXu0Rf`&90& zqoPLDXld#;D*OUxl)xA@!U-%{Xc?Iy*M$88c}0w`qH3+$PfC%BDtCLsIzjzdS1Umi z%GA$4<=&_gBe7mlCtd z&pixlLpBpKZsm%urA#~CIwh_1dVDiNUtPweYUt>oUz|to+m0~Pf-BvoEiN0pW?+lw zNZQev|J3%Dez)Q`epi`XU11kYTP85|_bGfoE(u5ZroQj)hUChrJOd8A1I$&44IC^^ zu=G;W*L{xpXFvX-#L8OwZM{~}`x!U$2J>!7Wa-j?$F=(7qBuv%zW*RL^;bUiFYmRu zyI-(rrjRT=vBy@~0d)iq)~rU{G2n$3u1j|^>+6D#XEfadR`?ae->@be_XH*3^&UM_l=*iHXg`a6{c_xtq^kDL;k6OjSpvm>9cLf|j)) z*hNAtzrR_n1C>9$ABzfxS)0O97;n$VjAgrgSfIn}1ulP>y}nvZECtq#JA5lD`m&VO z?+^jD`b2Whx82^}9%hK&B=% zMxMZ z3$Dawf$yk_H1|MJkfdXyulbOqV*ozT0Frc!+Jx0xKwYM~+JTW<0%y=`*`nU_V})qE zSph<<-45eZDPB^8UO4LOS#$=5m29d67>TVEFQNuJ7g*Tv)9oBS12*1mzP`LTpEK7i zJ>q9@mJ;&D_yK>_HIT(H#FU)0M>iKv(;d&+xp_qJ+TmN6o>jG_6pR6^#FGu!;s*W# zxd+$OBK{-#@^+%~%;}UMeOsU>irTDDCH1&RJ&L+zLu1ohpKg8`n@?<&abgr08fu2* zJ_9eBPHyQmNFRM`NFRxf)KaO=oT74E!e3}g)IUu%R9-ODglO})=JL3b4Q*m}jQ6n- zIEyNqCmZf!*On8D#jbnOh&7rwNxK4@4Os~X2ZNYO1)BZ0gN%%A67lEImbNy5NiF$i zAU>JU_{Ng$mauHK3nnHbwapKa@akV+fWB9p!;9V>;Id)*70kqV8(b2-_Eun ztsTTlSQD%HdSgQ0c3cN*IMYUsxLLvXN#S`G-(IRrZF8%7JA=E*;^ggm&5pFHKB6Y+ zq;t_n99rW_8a%~v5Hx2Rt`t^i3~twMflLTHzewNO7O~YO91Giq`))~$HHYSB6|sKD zf!j$l&v%92XFRfG8$}7E8*jWpMWiH)rOcvdONJQFDdI{ry##S-?9td_W5;iVoEj8H zH+`SR%Y;ZnT%<@QSliy2aXe->X!13sxGi9TFeX`^PEclN8f0WgMnN<2DlJt3$1_Ws zR_*PftRInM{6uJALqn4dXxJ5WF@uL$c~XFfO_Wo4p99_~@{nTetgKj?Wc_#AK8WN3U^7)<_h4ZLU zBD7_$`*GQ7bMbj;+xq%eL&wX1%;$D~@j1(mzgzeQrA^}Rx~q{u^l;|Tzu)#~eOgL= z&_&>w&zt;Vu20R&;^JWPD*Lo7h=~&&S6#Cg&kq;98GcCq1M#q>Yl1`TDyD`y=t zWO_cVtSK~fl)+!BcoN8oUa{}@%M9%xHGXk>r${@^-#l2&r4Q4btvid0C|!}eueZt!zm_CKF2{#jaRXqsTEqm1eZ47rJ9Vh4 zFu7gFvm_>;wyrn%aQ9Nl^cjF^DUcJRmBP%8A=7L|fU9+0Qct|!iH}Fz%Xx_}%B`rg zF>U?BP9KynG)*3!Q4hx zEUx!Mg?MBDOVk0ayQU^@9Ad!EgE&O5?skR2&#G02Ur#%vhz>V*Iw)dtMiNdQ*W>r0 zBBJ6{#KJlX&CdwUd(WpC)ZHV*Tzgl#N^iSrI^DXnhBdkLu!cicqY|2BZHW0b5;r_M0$*}geIywO?U2Df5i&^lN8zeaJj*KQQ zO_%YH4h=OW{F>#hUXx6#Y*T{SRLSV@@f;SWYP?BZ+$Co9#&m9u+_rnx(c%qr!OMPu z3*T)?l>G?ahJ;27!}>$AT${5t;7UefHW9DX7U}J9#x6U_kRj7cjK$sa(5Xx`_&}-U zX)MgbyUL@u7yM?Cq1F6hwfTJ0`pVnJM_cRRd*R2Iz8jDkvtYJ@Xi1~q5~EV@^O#A~ zf_a?SZkZ9y@}(11*~o^+swio#SLxFaPHuBEb1@mYcSu)Xx@VI5=KZeJJPEgZY*X!{ zBD~F}OO01MCM7Mg`2xny*PZDq43k-iM`guqBXl+PuyI7;LNHj=HfdIaAC3!ii_=HV zxcB)o8ft^jm(v?$&RV&dBu3EOJ?YHou@{_0F*{+oekiU0gCzTv<+B8vmA@*8twHRn z-xv3-KZw|RHGZABVQ&cGeUE^w#7pGdTb6%ax>4?-l=qm~r7hMFjo#whFZ{W*4}o7gK9kU9)8 zp|w94jymy>O(e9LBE?dnNvbXQi;)uYy>Z3J+!#e96i9@7B`dw0p>n z3*6&5ei0wF{*t>}`0_lpC1KMyrfH#Rp>Osoj8wMfRpZdZDrGNmw#50UT|HEntr%*A z&pf}#0xu5?XPB8(4L7_N)gXN;&Oat~L;F~(xizji^NWxL{%kRV8TewROIBfBfa6YP z`EKN7|2U9*Z5%UduKTx!QWK*ENz01-gMd&Qc(<2vy>MY3Ic6jW0WzcpApl@MORNHMSF&INEoXytf|n zJhw&mQZ3xIdddED#ASNSTzyWoP(51HK3|n++@o?)q*6y0$r-!G_%Qp zMDSvyp+J4F_9T0swYV;(n0Cmxl3YX|-Ug|+qG^ zbygcqUfwgHw4%#cO-nE)t|hMQ?urT9OwRD_3U2)rc3TK%{}rCZP#gwXbtTW{S4Bfd z`pAA@X;?#L{lcqOU*h#BgwUt=uKA{ zJ(Q1j2$2`(q8tKuaY|^4=-B_)+jobl zM$BkYf&|e=bffngz4u-dJ%}Xad$RX;&e`vI_q+E#?{|IYFVBU!t{I-^zSq6(wbswG z?@_V_S7nBUOcShi-D^;KvnBxV2ME#_aas8TG~%e^RqYKQef6p2U2PoqYFw8=$j6X5 zq*2K74-n3-pH-D(!7djG2YK_ptW!W7oPZ81EIrgekWuD&u83xIRGkW4A~eBp=poR# zcV7zse*F8p*BlV7Bkiy^3tZ@uqM6wRJ|emL58_KaP#U3UdtoHHM^#$7kywh5N zAd{ZYq>LxltHRs13w3r(OK5EvH^b#KeG|j)Kak(J!6y=Tpl*nl8Q~Fqo%@;4oN5hK zvOZ$mDeY=p*Q;Jh|DLvqq?Mbp_q~i4*V#ET|3+NOl#Ddp(hFe9P%hN~g)Rrk}%u5fgtM6FVNcPs(SXlaF@HYN$$@-KPfhXe4f(?D&8ljnc&DPFU!5GauDW zpAshl37GA@rjdDR%aneJ54cuDz2X>)3&TUKB$411n{5IaISP&6cz(>Kb+;sV*a8#% zWCHSl%64->UoU%pz?os8OA+#d|1C&{yM?vyq~}9mP}J$mB(QQ2>8zA4npr=sMU?FB z<94v8Wf0$!`}Nr(OoqWrKQ#)I`e~SKz$DJ6%!vj};(WT1fJt0Yuz%V#oGq-V_2<8L2y-46z z`lsE~uUv`dsTk$B$A#nIgPRE~UvvOjo#gY0KDN%<`mFgADs6ezU9E)W(EBnuB})`L zKNVlM)zOg50}~g*gq=D#Jy2eyDR zzV=*I^SndOeAF9Jnj|PTYW9{x83J6|j=%A^k8R`ro!kpFs>n{t^s2x9YU-QRw0QD2 z_-yrsk@i?~;J(n_pnDg8YR4h>8|H%u@f7CTI%T5N(d!Q_1B}~hc~#LZG~Te@I%%Pb z2#&;AMF5#%F70Oh>4P3maWbKvHahUE{z5G9UZDlD?8&R3Ro+bmo+sn8&q4=ob@}Pk zCH2em+1JHznJjLneuv_B$mtA z{K5mrZ`D#g$?CSMibulP^tJmob%y8|k7z@oL3&=~nvi-+5fOZFV;X;+ET^ z0vwqgo^r1p!SA>Tw!^m4j%S)@z~(Cfy6zS~oM?DV=H%9XeerlAJI zOCM(hDXpWqt?FO(yK^XP)iY$Y5BqCsEs#*ayY?-1CBwtBOAL2y3S7&~pT@nYrP<2x zJcm+Kb@CGr^to`{Hi%iAER zmS!AmjN!hfWxlTqNzK)|oxg+?)Pn@_Z5*XOo5SVgC{HO?dhr-~mgDOkfSaKF;lD$= zlnFk=-#yTb&=?iu`PARcT;c>JBMO*S#;3*&*<>QZ+P%RQaxp;`6fPmK=?Q&n&ITx(o%*S(ifqLBJ>S_Uk##$o zTSc1&QLx@5A9z9dg&Oqmn?9#k_bmgU{uTTgzTybsq8$42*BHw_D~seM`OeebI)3hq zkn#Q)}3S$>e8yN7#e~g8P{7p)LgIvhu)_#@&Pwqn1$sRk%{JTI zFFTXQR$$04@|Llr(T z0ULBU)JcJihR$V%Jr7GK1FMtg({*F*i|=yid0Ft~o|uAjMF+tXl4ajdEk8iC;xeHz zU05deHg%pa!y0s5b8RQR&P0uBu9EHI9+h>|kJ}V*N`okz5D=s$c1Ldetzg!2?4h{; zcu`P~luFIvXXQy11FmuOGu-=16l^_WA25B$jpgv{D>B2o2b)K?XT{~&HeyRzUf-0! zA$GwfYze4G3I0^7bo{h~i!@)`HIh$Rd98XfFj3j?_TqTczFxhi53{}>P;|H974c?q zunV4Zt2^Gfm9lPj3gsf-NUaGCbrH9`OG~I2nVhQ>na88FC!?nY0X>|K2J!_9dh?aH zI*E{8qUFKT4+j|@e%xr~8sxL+JDdF1KEsH4BKx!oAoA=+Oy1Z~ziEk6edVXJ1=h>& zvRUA%TkJ6v_v_s3bBh16etf0goTJ9!O~HE+UQF) zVWcv3%of3xbD~T)ou^c;snN&e^Nx#n>fuoF+9s`5x~-|B0qYT+_8Y3;yXkXWwl#Zs zcDx28djzD}UlL9kr*`rDXzS`YvhlTPNJwQEsy46B*8ePFwq?K?+ahd#{rG83;DSUr zM;eXl(Uu``9+!jj$RBwL7JOP=c zQJsxPa)|eLmmct8!*2gV2TW_>_Sokg$>)#TL?nl3w#yFvwhlap#wf?sh&7&Z%BHJN z8`@DNNnaMOK!gWJ-8!u4MN?ZEj)G)Nolk9>ld!(JXSQLYIO?c{#aN{B-k)<4ZXH}G>j4rdpb_eJTzzGlVf~` zqqqzistAPC(8CD3LE$XoAb)e}T+26U4jF&!Xt0BRvski?^@yGE)v*jUJctc6qXB6M z3tvQ>1_&WLNtBuFBO;@VE9eJmx41I8Hz6^=S+F=!K!pz3hw6_9>peayU!TWLBRgru ztFeyllZPzb8j({rzs9cY?~C5jaWqBQ>Wi5plzG?0vGxp|(hjHKbtcY>VCr)+8E4+F zF49JXLySJ&-#znSx$u3Ccs7_=MQjN@kMx9KNw-P`%F6D z{n9=nJonmT7||L|W}ZX|1-w)#hP6A1a1(H-Oaqg30n@*ltpDKq1Vn{joQB%<1`}6j zm>b3!Iv2q^r{KKI-lzbMd025k?X~wXw~(8r`~eND^b2zCj(8iz)l)9r5)D1(No-H} z6mm?8a9VNc$n0d!(qLzU$Ax?!+ID);s5ESjG#ef+ z%j)`Yk-be>x-z8@lpF+42aw(_hZ#)$61ebAJk=`iERuvDELWfD4u1Qhgra_kk6-$U zmB@$f%xrGTODlTd(x^ zqC~vZt&`HIZ)?xXmRF5yP-{$NdU+*T;;<#=yi=zzCIMwL%J(!X!3%g4pR#iNjXBRF z@lOESJKRcb7T`nRC*MmcxO}Tyi9x(w7^+RH4K0%6KItz*#EF^Q5VQc9T$}sP$Ws8} z{3q)|fOjPI=;V{>Bom`V)7`X;e6>EmGxJz{)dRbeo8$1|sXwT(rT7z{0kCHEmtak) zQeDoMMS5~iE!4MUeZiTdqr)V@Ea#;v8)6n2cnZ#fT3Ng8cc#QDvOrUnw9N7#^n~j; z<7TKhqQ>6|7C)=}vqG^{)M+9&`=h(9GT&VyDw(+A4m@Y$qtlj6Oqqb8&Q2XS`G()? zOZCP{P6s0W$cR^1l6r`NG2ye1OO)MzSi`5p?;Be6d-~H;E=9i!C`lkDTX%M^{YK|O za8fLm)*oH7;LhLYrZ7K)BjF+zNO_$bZrUSOe&4-I?C1jS!1ge+?Wd7SiS=z2lr^_y zT6HB(dTvmy`QkJu2MeHkI(=;gtNISYEo{~ekQjwl8aiNKq*FGwe=7FI+0>c2Bkzm4 zdq^Cgnkh;|Tnl!7?tSZoRc`LMq zf3~4 zKD>V`o00Nwq;%9NvHkS<{bykHn;#$szwS%ErptSPR%{0OEcp0RuXMtH&bex)f$4jV zutk8id03)@cRR>+iDE(YRFIgW_N9$jstBdNSMSXzQEQC0wsBiUlxw^pAd!?hxwxQ~ zollF9FT4z*5A<`;0~Qprfb90a{Qdv^8h}Jzky|sef1rn09MRRzDSGN+*`*5Ter+?z zCr=$q9L?`Onp1oIV1LTq!!)yjcc?#e!w`);>>6B1QZd^=501Pt$0MVo3w1~F$1o=6 zHF4Cv#jsg^w*AOuoRU+dxcBCRPjp*qK+~6f35 z?YpK9;3J-^S3<+hW#Wn~s5D3J3Ql2a;>?EZU}1>}X>E)VO17CMB_%o zv7u?7L74&G(83*(WiMz(j^EUsM!Uk%*KBSBcC5XMhNQq>?=CRp00NZeciVm$=oZ__ zr>eP82gJ{DNtVl&>HIQQ>wE%kZ**A$=Vkfco@{i!l@cDs%0GL*e*6$ExbV3fv~WAM#TnH&5d z7{P(+rxm47ilx6!x8-*yxKE$a+9Sv(m2Gu9ybcQIdI=$jQR-M|+s6B1va-k6g{>cz zW~}vflJ*rgY6)@6Ci(A&;BE#<> zR(#lM9SQ+SRa5qfonOQ>L>#OlumyQ@ogclH?(zf%XF*BZsm#gRJk>B5MJa#XuDTTO zPYo~2+cDA^=V1!j9E!j7;NTvFk)37HYn_A@iX!j>e1=84Qrszdm!bSU_2c1gqM`4z zokY5sK3KX5Ln(_=1ChYXO~*d1glu-dW-kR^F2&yryga=Oic<5dR~pzimS7FISr0^= z^ahsXO?Lqdl_!tL)c)o~$okxe!lXVm^$pf`ZWrk|i~%;On~E{EEM;?eZs?*w6zi#q z9J#=g!YCdq5J(gx2A4PZ0Sf&ATE}q*w2O|)KS0WP=vwG|K-xeN#73i8B8p&>5OZkS zcry%Oz7JOav5fz-uaxnnU%dJ|yvk$)EY#S}bC8ZC!mTuS4t>_9{j{qn`C_av7L~M) zV%cKK!vc-BUB?{Oen}Gv)P1pr=w_iK<&PS98|4~fRzhjw*w{DwOAKwsYl+0s{U{IC zd6Ji|8Oz5v@=NiX$}%61=attPmbYwx!@~CYr(V$`~6g2SC}ThB-xF z({)s|m$+_e#9`je)xhgfS4ovRheqO7^Dm{Ph1Q!#-J*7DcbSz>kJ#+O|Ma=j!%rnC z_@>kf?I^dnKI`%>)(EH8iK+Uu2TA(Po&nFQj~cB{a!b(P2Yt2DW341^8;!r!ny8W++0%M>{edh5 zEK2DgA-zt9PohkGZ>pg+5;K%N52UQDoyv8_NYqhObgOLcL?rcrv7TGWGYXLYiVK{c z@%imv`)bEqe(p6WwCFi>Dkk^zwp4tXYe>~CZ4Akcux`+p;J%Q-72VJ;6a0TL&JIj` z2GjfZM#Eq3d8zO7n6nqjh|xLPlD*7yBBl6_5qrUz4_Ar;mE_F;%f;z#J8ma#ZO-SY zO_gKE-r3x`YW&;omM>_`22c(oza{9)x!)SH=Tui?uITwi+a@$Q1{vI6OWCu_M|g@4 zkkq)gHA&|c^E39d;cr&9Zi!1d#V%cP+ghF&t@6_;Jo4qHK*=63OUuFH-~UO{cv`NH zT6-Pkn8CIme)79{QR-QJG2s<24HU#i@beAGx!u#NJhxE#9}8Rs7B=Eoq?(+K<*xsl!{KGAy&kc8uIc>Lgt zjF4Yyv2jf#4SQ+Rt)WR~HeX)qREz{dZTOcOf+gegyXjooPLw%(C*|#6!S(6*W)yVn zW#ZU!2YXV$ExKK2`0Fj|b`IyXgyg&0ykgcdG2Mt9kH_H83)-8ADsBD%tq6}f`y6&W zU|=!ruZ}ZELFrpxFPP5rHP?$otRKx0zo;? z7hE3SYFGUS^gb&4>~T{G%cSbYxR%F&3X;g*a0IL_)J~ zyt?(RHT`Cs2#Skgkju(Z6Z+DZkMINP!!hAhOtD=@v1xUINw5=pZn?Ce->(u=X$tK} zO_0iXScJw1B;Gh`rB5HhmYtvk^EP|fCWvEiQGtc5B=2CW;A+agS3%MnM5pIrqpX+P ze83!!JW};#{*1l*N(La)X6=`r2fSdRZ5pa5J+oR`p>%2|IeSfdoLYp zR!V)tv6K2L+E-Z>L}r`Hh^j*j&Y&OoQjNgI)FkJfj#s4(&q9f2^Kjxr2HdY8W0{&? zkXdu+H@;?>Goq0RGj-X08J=;xN$k2ZLyHg5_piN2hbbKHBeO2L6~;>TENW++SRP&O zwbHaJGhO63Db9DG6rt;>C7^+;$s^LTW1Cd@Gffs`P;tIk!f|oZNYhylH3!GT-dZ|d zk}Lol@B!zUY(=5>f%8lbT3t3ckETqjo&x8Y^gg|V?Cwuy)w))B_)Kl_18 zO~?|^56n3z%z=LJYwR!TM`ZDjev9XS4*>gmtqo$opnD-Tj8qzG;?! ze9XD@h8|Zmq-i%{YOB9_+~0Ahwy-?$9w=vkZ^3Se1^2)iY`M-g(Mg$kvpd?nGt-?L z?FI!kD1fdM@4dRI%v~t>$~=5<;B(hQD-1ATA~7pw$9?a=H6+uk z(Ye#t)K;^ynwFRHl2U_92=WGf7(84W{{}1QC{GJT?-?}CM zuZs2eOGVNW+tyj6B05r4vuV4^a}*h@%G-NBxRH_ZX^OeGJy2@=>!m7B^Ll|z&>8-C z&}Yv?xwRi4#+@Ki0YbrNZi~kNWtlXgJwTbxt8JoSr5?j{u%n6Jgj~7gmpw^St)3I? zT9VwHA>=7GCDj3(dacWkA#jOzJy_UT~R2`#psLk2r6(E z-%G7f){SG1v};@oy5^fQovEuT%*XI3Qs|Y|1>BUj=h8S3Z@fNViUKiGvHeOFKVzgM z4I3+!ffy;pwtSEUDiDZ~ntD(S9D5MoDMY(_T6{s56x zay-*-2ehKwHE9h+{b5^1WX0w#Ox?*~ClamxK1r<))~?rdNW1=ZeEWnW_gDYz{lF

0d32m>7`Gqe) zAX7?t4H>hJf*<8pB!GgA3PsUXx!c-B z?r1x0Kgar7gk{5PQ`AYt$RA z3|-eWH`0Zu1~W}bQ_SgeE9S-3x9kn(d&MK585YQtmqzQ$uES4oH5QGoTY(ikdV!eY qUcr;TXj)G&r5g}a?8AQBmL(82_FM4szYu8uQv}?vzlZf>=KlcT8E3)( literal 0 HcmV?d00001 diff --git a/docs/lib2x-vx_difference.md b/docs/lib2x-vx_difference.md new file mode 100644 index 00000000..d458873f --- /dev/null +++ b/docs/lib2x-vx_difference.md @@ -0,0 +1,28 @@ +# vx_difference + +It' slow, in case you want to create a difference of two lists of points directly. + +**Since:** 2.4 + +## Parameters + +- `points1` : A list of points. +- `points2` : A list of points. + +## Examples + + use ; + use ; + use ; + + voxels = vx_difference( + vx_cylinder(6, 3, filled = true), + vx_sphere(3, filled = true) + ); + + for(pt = voxels) { + translate(pt) + cube(1, center = true); + } + +![vx_difference](images/lib2x-vx_difference-1.JPG) diff --git a/docs/lib2x-vx_intersection.md b/docs/lib2x-vx_intersection.md index fce6d296..1bd4ae1b 100644 --- a/docs/lib2x-vx_intersection.md +++ b/docs/lib2x-vx_intersection.md @@ -1,6 +1,6 @@ # vx_intersection -Creates an intersection of two lists of points. +It' slow, in case you want to create an intersection of two lists of points directly. **Since:** 2.4 diff --git a/docs/lib2x-vx_union.md b/docs/lib2x-vx_union.md index b68a7acc..7ea09f68 100644 --- a/docs/lib2x-vx_union.md +++ b/docs/lib2x-vx_union.md @@ -1,6 +1,6 @@ # vx_union -Creates a union of two lists of points. +It' slow, in case you want to create a union of two lists of points directly. **Since:** 2.4 diff --git a/src/voxel/vx_difference.scad b/src/voxel/vx_difference.scad index c2535e8f..8cac16a3 100644 --- a/src/voxel/vx_difference.scad +++ b/src/voxel/vx_difference.scad @@ -1,3 +1,13 @@ +/** +* vx_difference.scad +* +* @copyright Justin Lin, 2020 +* @license https://opensource.org/licenses/lgpl-3.0.html +* +* @see https://openhome.cc/eGossip/OpenSCAD/lib2x-vx_difference.html +* +**/ + use <../util/sort.scad>; use <../util/has.scad>;