From 814b32ccc4fb1ae10c2d8ff6f91b8e47a818ed59 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Sun, 11 Jul 2021 11:04:52 -0400 Subject: [PATCH] unroll poly cleaning in subtract --- src/mode/fdm/slice.js | 2 +- wasm/kiri-geo.cpp | 16 +++++++++++----- wasm/kiri-geo.wasm | Bin 66856 -> 67030 bytes 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/mode/fdm/slice.js b/src/mode/fdm/slice.js index 1eb3c8d3..6195bdd9 100644 --- a/src/mode/fdm/slice.js +++ b/src/mode/fdm/slice.js @@ -1058,7 +1058,7 @@ } POLY.subtract(topInner, downInner, bridges, flats, slice.z, minArea, { - // wasm: options.wasm + wasm: options.wasm }); }; diff --git a/wasm/kiri-geo.cpp b/wasm/kiri-geo.cpp index 259c9e71..f59c455d 100644 --- a/wasm/kiri-geo.cpp +++ b/wasm/kiri-geo.cpp @@ -143,7 +143,7 @@ Uint32 poly_union(Uint32 memat, Uint32 polys, float offset) { } __attribute__ ((export_name("poly_diff"))) -Uint32 poly_diff(Uint32 memat, Uint32 polysA, Uint32 polysB, Uint8 AB, Uint8 BA, Uint32 clean) { +Uint32 poly_diff(Uint32 memat, Uint32 polysA, Uint32 polysB, Uint8 AB, Uint8 BA, float clean) { Paths inA(polysA); Paths inB(polysB); @@ -154,27 +154,33 @@ Uint32 poly_diff(Uint32 memat, Uint32 polysA, Uint32 polysB, Uint8 AB, Uint8 BA, Uint32 resat = pos; - if (AB) { + if (AB > 0) { Paths outs; Clipper clip; clip.AddPaths(inA, ptSubject, true); clip.AddPaths(inB, ptClip, true); clip.Execute(ctDifference, outs, pftEvenOdd, pftEvenOdd); if (clean > 0) { - CleanPolygons(outs, (double)clean); + // CleanPolygons(outs, clean); + for (Path po : outs) { + CleanPolygon(po, clean); + } } pos = writePolys(outs, pos); clip.Clear(); } - if (BA) { + if (BA > 0) { Paths outs; Clipper clip; clip.AddPaths(inB, ptSubject, true); clip.AddPaths(inA, ptClip, true); clip.Execute(ctDifference, outs, pftEvenOdd, pftEvenOdd); if (clean > 0) { - CleanPolygons(outs, (double)clean); + // CleanPolygons(outs, clean); + for (Path po : outs) { + CleanPolygon(po, clean); + } } pos = writePolys(outs, pos); clip.Clear(); diff --git a/wasm/kiri-geo.wasm b/wasm/kiri-geo.wasm index db0d7bd7bfa0db05f424490d639dcd524b0ec1e3..81158784216de23a9bb8669ef9cfd4e3d060dc3f 100755 GIT binary patch delta 3198 zcmbtWd5{!W8Gql`Jv}|sGrMoOvh2di+Ugatv2mMIK3rN#ncQWd3A@gRSxRrq_o1OY88RnAm>?|a|- z?rUcE68p+hJ154@oI*kf`jEOd`$G*@Ye#*Jz@y(g1L3)5)r$`RSkrzfP9j0al7LHrDZuOg?()HzXGY1)E z6?|J|e9Nj+mYfr+0+{UjyzoNNN>u5A(8G#%_}t3Kb+BMnp?w98h)V<8Tss9~ASfwi z^{`}6RAUV?nCs_3!mSoZz6NHJqc;u#z8b5l6?1DWrBY$<0)Q$gmIoc~xVvEVQa+arTDD(x-H&GxCqflAK z2o#D1vcgbYqus^jN$4>gL9wBTAU{eK8^1+RG_pQ#sk|zRMgkU(8knaXdx>x>vwMfx zO_LG%KeEUJo-ZA5ITs^soa8ms}&P+ zJq2k$3zf1l5M6{4sByN6UE_;6AqfIxt0P9X5RDt!vkKL0D?2boePPupAb6^WS;)vT za~JZvtlR`cwE_W!h}wf!e<##N7GR82T5d34Bl3|$J9IHTuwf5PB0xOAjXimYBF}>* zM|s8!DNhy$NZ0M=NU)?gypRgM_i-ML#f)6UIom@L>8=hDo=7Q-1;zz^2b&fYn%dWx zAx!$h^q-UP5T>PvN>5Li?P@MXCY);SglWAU7}R;_%X0!T=>6aB*xo}f@g?~>d0Aj` z7s+OQVBu%5(cW8l5ODpX%1+p8c7W-CAFp&VIT!K-2NdQDaOvF8?gP}T=HqBh08qeA-%t(LU&sFA)dTt`>%bH-o>xZ{A;fnuV;EP7jGLYo(#+`}bkoZn z^xEcb$YM+LH=@5*xF6J94ws$9-kXHIwy7sdrso=*B{F;=u(%mMr8 zUS!${Pf|gqd?Sg{Jsp^-33H8Rb_}I}#uqX)%i&(KNnr$fh$upQ-CyAI>;Noy zv#NSlvr3R5rs-41{H&Qlv$&nGv>=BKz~*wyW^t-m$*Y7Pm8@*WHj@u0Z0Mw1G8)K} zTw+|l*Nv!9ki8J>E^KficOu{RCkn~^?;&BtO{AYZqUiq$DT9#8?u+O@0&)=+RvdtX z8k@DpSP0?u?n*o=;x$Kp$+Sj~K6aJX#E-R{bLd!{JH484Z2fs(9QwC!oW^C#FNUSc z4`DUrDg0x1lrkW*21~NZR+UGzeP(3YR+i1|p>#rSg=3iOJM%r`%yQbPZ=HFn{c+>6 zN*8=Wxt;KXu1MuhJ^9xc=(z6p)|=gTvQdn-w&V}k^F9l0CPb6*yPtILvx8}m{^r@R z>)m87Mz2?K4u3ZAn^Fi;w^i-d*UxsN-8y~l-3RaD{}K4%Mq&Z0KCz%rTAB}m&}+K(LOtNOF4O=Xx$qd^M;9K3?JgIG0#3hJ^9ePU=#MV$?exE_>!X+E7yX+7 z4*gJn;c_iJS#bG9z<*vIasTtvS01{L6tB5*BTa{ObafKopRW3V-n9{cqpy_#&be0a f9X3lo8i<@8j(>IS{kHBAED1-*Bk_@&(@XvZf$5#P delta 3044 zcma)8Yj9Q772a!|bD!s4vXc}E0pq?WAzUl5I3S6&4~`uO5w%jrkt!6!t8znmNDv$z z$9C*M2_Ruhc_gJIXaiU*aFXyyKni0!?I?z)Gdd$MRIyC^qpdTY@rU%==UR+RN1M#7 zz4zMRUhlQez1U>$UTddB{oBfojZ)5(bMuUzSq|CH7IQO%^2 ze1elKn2DJ!tB6^o(?Uc=%qixt5%EBAn-DCbgDe05%l}yxQ`92Mibbpvn+3QQz(Nex zizq{-TGPluLnwqZU{=JoEo^0I)TRGjxUuR8yTUt}koU^NEF9+=QN&k5Rx9BhPK{wvE#AaJ_bl}`6C87 zBRh$mP~Vxj(H9*5`g`HiHOcVUUbP?zSWyj(=n6i$?@)Ld{4QQ?DHZcZ=0H?V75nla zrODiR@tg}N03~^-sJ4vEX!tyy-{BUjJ&EV47*AnwR0dQEhq)mGA8^RnDa%3Bn0Dco6di%)Jk6UjHCg+_$LEXR!{X3Z2B2A+=LICceys@;eK3JeM}QByZis-m?f zep!}C1TN&y*%*x-GUY}g4IVqnlAjPbnjXB>n ziLfEjWV;$AffR*RD6umjGOc1QG+;L|hD%IF$M8^uMdTfWI0rS^CyZZ?vB5F!Iu7PL z{z-O`lf+JTV9QQ%$TqP_HDp=0u68jkUtfI?^qDo~Lovf_7YzfOU#>8D5b_wi=dSRlIotRPDrHAiqqRTqi890iw zob^&jd{)nEE9Z|Zbz560t<$}2<;4Xk+`bS$jRL*Uz_a#jG5>tJ$Vs z>Q_6)f&QaoG-&1SX4o{YH%s1=`DMF#jR{cVE9U^hMdzpU$-+SN8XF^k=7NXt>$|3*jID;|f z?Z<&}aLp_;b@2-fTM(Brh#o3C>g}YQjG$Z1@RCos2z$OtjI4Oh%uFFYlZ`L3O~5?m zvxm0x1Task2;`xc4$JPasYtG6Xu0*Jtbzp{W_-$Bz}f$o5%>)KFC$`8LMy(+2mvEX zzsiOYoWfz^A0LVg z=|n)&(B!8a$D?qJh}_<{+!1LmO8Z&v&rZ>^_xz3;6l1AB1; zGjbVXlb62@gU{`{^z>Qk)qg+z=i%*a1fx7G`7%4sC`eO;foWj%M&sBrYId?y3`?+sG@!4||LCelpf0elRz8vuMg%txnHwY%|)&IOu1NC=Z zTm`!K;-j}-$KM%o3oCfwo$E2`)>W70f^NB#0X=f*QPAY&QqWHP7CVt26g V^0nglA^dKP3VA4)^YOyM{{U$4gtY(w