From 7c606d36b01ede3625a6b863cd1b7df0b551135a Mon Sep 17 00:00:00 2001 From: Marius Kintel Date: Thu, 27 Oct 2011 15:15:04 +0200 Subject: [PATCH 1/3] Improved quality of linear_extrude with twist by forcing all quads to be tessellated the same direction --- .../linear_extrude-tests-expected.png | Bin 12143 -> 12351 bytes .../linear_extrude-tests-expected.png | Bin 12466 -> 12785 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/regression/cgalpngtest/linear_extrude-tests-expected.png b/tests/regression/cgalpngtest/linear_extrude-tests-expected.png index 4ed436117c7710cbfe6b2a4bff0885aff4c4492d..14867436e59cce1200bd52a7635ed7d2b5ada462 100644 GIT binary patch literal 12351 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 literal 12143 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 Gi2q;WPz#p; diff --git a/tests/regression/opencsgtest/linear_extrude-tests-expected.png b/tests/regression/opencsgtest/linear_extrude-tests-expected.png index 579479e315738f4aa4556b6e05c685af1102e278..f31b22ac861b79baf2c290f10600ef47a13a1346 100644 GIT binary patch literal 12785 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 Uj=7A3|CIwU);HIC52MWg0UJ&eO8@`> literal 12466 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 From 6b8fd15ff79ae90682992ee045f92f28b136c34a Mon Sep 17 00:00:00 2001 From: Marius Kintel Date: Thu, 27 Oct 2011 15:23:55 +0200 Subject: [PATCH 2/3] Improved quality of linear_extrude with twist by forcing all quads to be tessellated the same direction --- src/PolySetCGALEvaluator.cc | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/PolySetCGALEvaluator.cc b/src/PolySetCGALEvaluator.cc index 7f62d0a7..190d75a0 100644 --- a/src/PolySetCGALEvaluator.cc +++ b/src/PolySetCGALEvaluator.cc @@ -181,6 +181,7 @@ cant_project_non_simple_polyhedron: static void add_slice(PolySet *ps, const DxfData &dxf, DxfData::Path &path, double rot1, double rot2, double h1, double h2) { + bool splitfirst = sin(rot2 - rot1) >= 0.0; for (size_t j = 1; j < path.indices.size(); j++) { int k = j - 1; @@ -197,10 +198,7 @@ static void add_slice(PolySet *ps, const DxfData &dxf, DxfData::Path &path, doub double kx2 = dxf.points[path.indices[k]][0] * cos(rot2*M_PI/180) + dxf.points[path.indices[k]][1] * sin(rot2*M_PI/180); double ky2 = dxf.points[path.indices[k]][0] * -sin(rot2*M_PI/180) + dxf.points[path.indices[k]][1] * cos(rot2*M_PI/180); - double dia1_len_sq = (jy1-ky2)*(jy1-ky2) + (jx1-kx2)*(jx1-kx2); - double dia2_len_sq = (jy2-ky1)*(jy2-ky1) + (jx2-kx1)*(jx2-kx1); - - if (dia1_len_sq > dia2_len_sq) + if (splitfirst) { ps->append_poly(); if (path.is_inner) { From 5c590dc26b769e5732f1f1c4a4686fe157833b28 Mon Sep 17 00:00:00 2001 From: Marius Kintel Date: Thu, 27 Oct 2011 15:27:38 +0200 Subject: [PATCH 3/3] Updated test case with recent linear_extrude improvement --- .../linear_extrude-tests-expected.png | Bin 8648 -> 12023 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/regression/throwntogethertest/linear_extrude-tests-expected.png b/tests/regression/throwntogethertest/linear_extrude-tests-expected.png index 59b61e76aa7811ab9928375f7dd2cf0570d33537..b672783117a0f64aebd4e2d46a06b1a10708408a 100644 GIT binary patch literal 12023 zcmeHt`9DkQf>Ng|O^_6SL~GDD)x zl6`F~*=5MsX3V|c>+|{P`wx7-zkGh0`?}Bboafy0oacScocFnJYi%aLC&dQTUe$kB zgp<Qhm5buFPAJV;?O zz{T9DW8?nSgdc$+0LTa~HJ};6g#!?|@Kf%61>fzr5`YH)&n4R-CCHskqFUSI{A6_i zUP3sC;3xQu^Ga{aLenH*fjG)j08PPB?#M|1W>l=HyiK3<79*y8kT@j zJU~V$TIpRdhR11u1ZrEGry?}qsr<__Ie451#Q#UBle|RWq^M2*_BgB_Ea89Z{m**; z^F8=p{qJi0KL(bV6+~w{&voTqWCKVpJ8wNtcXD&7J zo#g!NdD8OBX&+3ogj^Xff}be5Fs%8E#!;|oIpbIHazWs&R?w@0J_+(GPf?|9P|E_) zqg@nNal`>OUIjTP6_Oqvhw%O$a<%*c9r8IO$8?f{(e|9_{rnS1738^}>0|>Kn4c(W zaKQ_XB%3)Tz&I*p@wDFm$`Ev6CnX?00IQBJixQkM%mTU~1JO1D?ihj}cg#-e7L1}D z=$P$5Ff?=UQ@6?J)YbFh1Gx{*JKUHVeO}lmY{fZ3v&i#M6RmIQ5a7-^0-&S$=4RV zW!z79DI}E0FWtwJz&WiCJ~Vo#A*bpaA~e$iwwoo<>&=SGP-HT%5@{_z2C9OiMOx;u z9Fo?%86gJ)j@j~S4T~>Ym@;lnRht6p zENMaD94aoJ!|%gN79DA62U6tc;Xq?DiJnbteE+sno{d)oYjc)oKfqySY%3cyc-@;1 zDb{CMeg6)>i9wKAJb)uf@=K|~iQqsDqy$YdJcpVnPiNxCK%ob8n>}7QHFE$Z(ey5k zwO;eb9s)mI&NN*18hdqwYY&2-maXGN;Ix-3+RfQOtpTy;LuS8tXqzp!d<~RER=|c~ z2g-5Sfj4=Etf8y+TNCt%evgU|H)pOzkRGi(P2E}Z3tsn4kqRN%DlUv z=rY5{jT7@Y7%cK)g=}`&W5a=rj)p}6e!`` zumM`!{a3Zw_y&V+*O+6`tpnKshRBlwz^u@t_(rjxdq=&ZS;VmyhwEfsQRAhviXM~g zP#X!_2HB0C-MzUk_1ET-Mh1^p8j@_c1Smm2_Hw<)qZE-f-(E!V%zAbVK->f4uJ^ZVL_S_$o8E#GL&m3@u2`2t^BKyxNZfk{2t0?R0%7O_S7| zMk%sI76Z5BLwuao=dxDY$*CcFTQz>u8)M*U6!Ht~uZoX8j!QQekQNv7-MBWowubfd zqcECggjv2(3mYBiH`}hh{Y_2Nx~{7ohi9F{ayu7z#|K1uN17Z$oB^)bQ&pFq%uyN5 z#yl0f5#S!|Dz@?4F-*KjM>X>1pBGfM@5Yn2i@Ndhs1yuGfBrmQ)XX&=*D{-H2l#{) z%?Ym&yPAe*CEwpbBks|c9zQ(Gr8g}(4XWKt7%zP~OLX#bTslGO59)}k` z6(3pBnh=;^ug)OV&u`S+)l`txTOR>hY5GH_O&}Fs&|L=c65){gTrWN*8%dgW)u8hItut_-_PmZXIx6 ze*Vu(!dA2901RQLSd)xTV@#4tKc7BLoKx-}B#T61W{v_YS{TIU3$exzbMygdIpTaA z4~`XWs;DeSvF1woQ;D5|2N*U2URU}%$3h8LC3vr}DWTjHrODMdq~|Bd_|{TGj-!B4 zY{_E)ZF|8^B(xB{n$-_o`*ryr;LaTRqzFg5I{+FNDbY;o#-L;1y$09r@h|QMt!2$j4E_&<*0*9#TUD&VS=YRz+O(1R`$VkoKJyR1oDd-Sn-YwkOkM{mm&} z8NQvioc$+%V^Lm?P=_<0d+EoBF(CYC{7fAwLi`vaW{|f)i#(XDQ9-i$dQ~(t1I^f# zbr8~2eA{aSpbGG2r}c~Nokze#tZ}B>YDB;4K30@`#!fgJ7k=E7Ikms?zTouksAz8U z#`g0Q>O>$xAu#{^DmDYu9X1rY`MW}>=KB}EniEuK+%N{I4x2{e`|dTH1Okq1q-G9Bn{N6>T!!kpBJuv_TLfRfo## zDXfZK8+wmuR^=9X03Nx4X%9Ly|H2TA=r0Nn^(*^x|#_*X&NEA1wn;D{h{0yw$)J6zPIV_Aqv_m#XF;30s(0{ z{(nVB`v_4|N1qKjlFYgW$-40>%tLbj;?BO29I1jXf7+2?OyP&^&Od!S)W@1L0@^5y zUXtzb@%(HYOfudWK8}ThK6a?`kaj-Uh0vZxSTn6I9M^nnL^+MDeTmRyMm=uqrh_+| z@FM+7EeETHR{-MYKiB64VKkJ%IquOa0zKGxnLM$>+-VD;*PF6M;6H*-OiBebz;?37 zqQiY2osq;@jT<;zB7iQlA9DJveVmiUt|(98(fQT>sYgQ`vnpr%lKj>SnA~jpGh)-&~q2%#k( zlV|E=bK8S&j^=}+jF_1PC|Ir4jW5`seoStKBQQ4PVm4P#x6z~J@3e0Q))Z5=u53(o z<1b5C^_{KQmF9o!Z%^^7cG1zVo`*W3sF$|qsdxZ}CI^)j9Y_yLr*a8rMr@9S=TueN zv2rKAiD1!>x#x+m|8KiZbTt8kcR^;gW?z|NOo^P%{z$ zHdrk_`Db)yWPM;9VUSS%ZZAs0_%ZvV!)jI?)HUYXj5=;KJo~x$vwF$8w8c$b>RHLj zi=B+XF@)e3X9P-OU-A?@*TzVJ9?}sm_b4d>+sM*ol~^cefs-YB8&P@RJbPft{+h+XYywXaxcqu6E z8aO)Zv@j7iQ^{d}>E#o}6##;fQ zK>iddLgNXt(rW00e7)_o9j;{2aYdN56L6d}L!p8#bAz>SUC7l0LOBvwJy;7%B1;vO)Nd!9zGk@jST^R@BY zanAebXCIosABmEfcz0dgJe!r6lyRee$&Oggv{A0#5oXI8apda}QL_$QsO5PC1D4ZP z=W0*LJ3DhRlL{jwKSD=ym@;oDGOqNfZyhk&o0CHOop~nZeP(O~B zPh)S+RkVLZFkReTHWqF02MeDe)jO${%YFgV+n~0kBCgzS7nujis}2fKDlnKw4q1Xzmb&m&Ux_-UmOAbx_ZyAAflnE)3w#Xg{nAM3 z3!MH3DGdO5SfE;6rUv7Ef-}wcX<}5IH5af(+TzR8yNt@b66AJ))j(F|d=sOuMSfbW zfVw16%0l+{!SDX}wyHf*=4oYoJ^1?_rDnT)P?^$Jb+ImdTfbkZZjRnvuP<$!t3SQP zUc`_1D2-)ZX)Z_Y3kN0;5b7{0Ttgq12DuFZjHW&uH{OSNS`(Z~G+ zYhxX^ifaRElTNazL4ApbYag!@f<>eaewJ*E$$FQ_^#Xg>NwHz7h2UgmJ+|JS1lf_G z7V6x03tw908Omdm^@N$Bw^Fm(P(7PdwRleA*eMZNx0(n`@~0qM#_;PrreDcHluA^x=JrdPU_2&g;* zAI%JzCq<_&k2T)!YN_8ET{_Tq2F?U^Qn~6dW$ps_Q=B0YRuCd0_x&70>TL`9*(^wz z8Ja=oW^u5o;ZD`#C&Zs$KcGbe6MsBB^i`9bA_O#dyOTRYI|GFBd+`4dG~$o7KOeNz zoLCAb^g9}g9MQ3$Z^C6-M7|Uqghe@*rxa~`A^imH6FtJYsH4461X3m>wLYtgxj8HJ zpgv*eY~s&VlS%<`E=!0V)&Q)j*UU|0p=IhI`%92MWN8B>2igGgq)D_ZtIW?~W7!R52n_kE5rAYD`W}e%w^|<16(DEEW^EmIV2Mb&RqNriSiz=J!d3MWZ@0n(h-)oj)(BBGLoNzG941qWqwn= z9P9Q3o_>vG>oR9n!s3ev$yqaw?pgDjX=}?sB7#-e0I)1|L{HEL$%TUh;zzvr=A)@~ z>egkJtdhkSx~y6VoaxJ3tNZ?30{L+JnDdvfXp=!EWJL|S-;L+KN8frbtC{)6->|G^ zG4%LlL7q(FTc+->(7)_ChPB;SD`L68pGD`ozYmX)F9`vIR=&fC| zsr%nIdrWol zi7CpN|4oU|VTl?1wE+*Sc(dQvF1aL4&HS~;p15%CWgv2mbp5f=2gz<0X(M0MBSB>& zTjJ`;<}f+5Fa!|3F-g6Is#;YKf{N2!$3oLvII0KF*HWVi} z^A^XpT=f_H!eG{r9&Rk&NdF$1c4ppdHMs`Dy@l(Ltt8aNKVZAcY5>zu*kdknQRor4 zU!f)VL+Muw|El7oa_hra4}tbs?3st-%B7{pv^WgNb!(o=S!WILdK>of5eSX)Ml*@m zgGorIqEps0314fk7d6{gPJ|ZcNPZl@Egm)2%wvC|yjVtyBwy`w7V$G3ls?~D0z|Hw ztt*)7rA8uaT1UIfot_V+ER!2%p)^(nvg|YA3m@?F;-3l|b4J z^8KoKfem6yH@)=r$Kj6%69YgvV~R2SXrp%aQ%l%_*89_~U$Fb`R%|r66_X zV5U~;S);`s!lRbP9o^K=C;wg;LO=Fl(VM(=w#-roqQ|*Xrhhm^QZwp??$WOp)_h44 z8mSmHJ?n=n;h}&#{>>Y_Tc4D$gU)`~?AjwR!PUl}KL2q+P`XC7a3fBwM1cQ1-^=$} z!o?pbvC9D4^Jarr9QOI|P2Ol%NA7QEic(TPL4Wo`EwzTJi)%*h9wHbBsg1ZW5OG~3 zah=;ZL^-jqDsBpzY6jDn9>w!N%;8K5@W4X7*X1tJ{`2EenL9;i$|r=Gk&( zz{296$1*hDho`F!^^lLofsSqa;vAh(}qek$hxHk}+4?`zI z;boLumg$psJ)AT0poLM}UqoJVg)DFNEY%U(udd{qJg(6|Jdb2QLChRmouMQGkR#F8 z4w7qju#I-#keqGLJR|vcy((_F!d)8Y0x64*m$LB}MVNOR#7yK9{UiiesFSp2Q^k0ujZbNOgV!QFY zn``_ODwOQQ3iypKAFD$8z5@Ntead2<)G}!4u%kpcQ&96a=pm~W?mC-qsQ)~ocisNc ziy9urkBzhj5nJ8)J6qq9WK`rISv76oN&4*i$L%*nX?LBb9W?QVH82~6xlrBxA6j1kh_|f)!0H0Qi zjD!+(x#|2rbL+A3Q8NASRHJ8yqm}}5nJ=`2&MznG>N*K%)o*wjt@i1yS8WYx0byOx zU^g8)=oe~eTf<~OcB`4-nTmws-(T%j=XTfkmx48NSO=g9P)O@?(r$t^=l|`Gb=i}K!jE`ZpjZHmA z9|GDO_d?JdBF3ION^T$y>YrWdB|R>xMA-X%&Tld&saeH|#n$3C3jZne72rGZNu|&D zY5IV$7AN2whg0qtZP<~qhy^EpJlgse8s$CtqvT$_+(aJqLs5=n=zmC(EP!4WlD{#; zcgdG>Y&O(FU3T>QfmWi+h&vpgx=9U8>};rqZ!LUsmMzI^R~GT;-Ea!y(e8=*I~R>j zIu^9inkx8m-9~nENgo^|ZaS*g-(31g`ZrT4v~kyCa_}Y4?nufZsZ_*G3oR_lVn5mr zS=2%H(X1?npYVJSgu;fO^Yf8fuzBKzI+6p;{Q9vjcN|=*|6Cm>9dPcS%W-9a(ZPAD zOkZ8$xn-)*m3*iG+SR(N&l!eV~&ESsHtvpS6oh(ecyU09}N|GJ<{mL3L` z(JX9G>foG&Lf~cLg%?TD-FWlD622)5g5_N=D=2{p7mFQu<~1vj1P;$i-}txL7Sz4y zhsUgbPp7qFgGu^pT4#VoaY7%@$FLp8r@^QNP7h!Y8XO4oihT%ZaDm$v(J8DKtcrqgY)@VG1 ziNu{;=xOjLt77UyrWiRfyD}H(BH<&R{t&&lrCfGVW?mJ^s)K&AcI3RaLa7l?{>416 zGAy=4%~3@tX^Ei_zq2Lr4QkdG#Btu-Z`SH4M)U)3-1#VA`M#v^@0g8;033w$v!0-` zE4_dyEit?pfy161w|vOe8!2t6_S+_s#r`1JiS6?%(;n2xJG- zxqbvRg`k1EFuSUWxP~U~E2W`d*$X>f%UU#xiaojA8-nDzB}GmMf5?0N-z>fpE79l* zcbhyD5%vSnCkJu~MsS!<74$Kv${_gBd1~}T3?$76wFqav6VH$q-Pn;t>8kEnfJ;QU z;{t&0evnJ}>GZkOiIjtH2+ZTf5Qu_^qiAAwaajy+(N%bQ7VzT$hJaH>TtXAi%8%?k zmj}*7_g=7?fHmYtq@ankKWF)xgw0qUiiHJ1TVwK#Dr+~0Rvp5<7A0t6SM?xzJRh2= zFU#7~7()h-wE{Hxz}ZK(@vPTuWVCq^-&pet*`gwRaGnoLLB5`SLEVKZ!gtb{Lg>u9 zWHelWO`V*{rQL$3%i2DG_w0d-nVi}C&V2DO9#OHA@vmPyxr4B)8BCxYZUbC)FgJWh z@zD^$o%4$$7n_l6jGM1&_}b8YdA|hh=I?M_qk34@#Ar1Vfq8F8=oN3=@8z#I`m2Ww z^(>jPlUA`n4&2WCUSS2%$rew z`Rte`SfwU{kKi^Xt_(k)IdTHO-Pp5Vo{ZR!J{ctJ{SGdA(4VFeZ8z;6K!JRI)D~V zcd_zfCGxA>e4FALYH)EEf z9(#CtX0-sG)2TC8wx+{u4rA78Gbz4GYt9OBj@Jnu8JSs5oI` zxU`&YBD1X&5;hJp`K0;wJ-7&y%<4}Iwv{5_;D!McyUmlpPM_jKn0kK7hxq+4d;fUP zK>;INEN%JjKBd##$S`*TZ_ z?5EKIv)EVX!e9y`Z0Z=p+ZPb}%6s$7kU6B{>Tnn?cPqB*t;n3^^F;6I`UuQY*H{59 zCMPrVV5W{T%S;IU-A}#|yR78sb}YOyBQ!S~bQCyrT*DA<1K`S7Q!U@;pmi6SLkBz- z-9x&4!?d?K#{-M4k8F9r>zd&=nVCBd6z89Y_DJ&J3pdlyM z^N5xpKkk{s%BnM8j`i5DtI&#Na*KO%?cY~_2ezxo4~0BouAKe`-@I=Ft+FnwT4bgd7Bx({ z1Uuf3fj2n}$3=`BCna96_Ou2fdPl+3!uu}m2}HN6O1>?kVRO4bmAL5exUeBF-IgNKj#&*Hf`7UxXWA`OLV75=Y@t%$VOqmIo zos+~pCYfPov9z{>7!%P^xj;=NrNcO)9_=l9ccd0`XE)yD-n=jdMm=GmX_AY}jsfe$ z`@~38cvLq=5;cj*>ECI@`Z4)X_aKhOM=*Rc&wK5Q9WYy}kidj{F8K+TN<+M!Q}CMr zg-Ygob@xqhe$&LgjgxTg5d(}L*@o3Z z_;3rKA2__N00RDWKsa?9%*_vw5$3Hb*R~-D1BWdnxq7=jm7oOM>wl{M&+7kknE#*G a6cVx!;4&CaJcoxH+5w9b)+TRZl=(mA1(mD- literal 8648 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