From d53ee2d03dc3eb9817f74b77bc3695d1603acdbf Mon Sep 17 00:00:00 2001 From: noah Date: Wed, 9 Mar 2022 15:15:22 -0600 Subject: [PATCH] Remove invisible line function --- .../HLlib.dir/src/HiddenLines.cpp.o | Bin 39872 -> 42040 bytes build/CMakeFiles/linelib.dir/src/Line.cpp.o | Bin 2720 -> 2840 bytes build/libHLlib.a | Bin 41916 -> 44210 bytes build/liblinelib.a | Bin 3246 -> 3392 bytes build/main | Bin 48376 -> 48600 bytes src/HiddenLines.cpp | 58 ++++++++++++++++-- src/HiddenLines.h | 2 + src/Line.cpp | 5 ++ src/Line.h | 2 + 9 files changed, 61 insertions(+), 6 deletions(-) diff --git a/build/CMakeFiles/HLlib.dir/src/HiddenLines.cpp.o b/build/CMakeFiles/HLlib.dir/src/HiddenLines.cpp.o index 98ba2bd07b79b107f70f5c859e0baa9644fc1d90..446f9348e0804d8e4d067405b264be0dd64cb8f9 100644 GIT binary patch delta 13284 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 diff --git a/build/CMakeFiles/linelib.dir/src/Line.cpp.o b/build/CMakeFiles/linelib.dir/src/Line.cpp.o index 661e98f179e2ad54954924b5228d3d96f26fca11..f96f2dfa5e71db0abf6ef7dfa4b33f16c806a47c 100644 GIT binary patch delta 268 zcmZ1=Izw!N2IGy1nj0lQ@e8;KeBzIB2NDAQ96**Ikcc~Yc;oF-MqUvH1_l#GAOQrD zlM~sMCkJq_Y|dd?!zdUG6c%D&WS9k!Wsuw~$P&dU9v|gr;**(|YLT8=5}#R|n(P`B z9M8b8Ig7Q8QP2Wv6cbPn2+x}QlI=R<=E(=y%^5FD{>g67_<3?5ll0^l96XZ~I3yUq zOs?dx2a-EE?3vgZfl^|V1voXBI2b2eaoTahO!JuB$Z5{Wzy@(h#^i%QUIWN@Ab2pD Zk;|Mjfd#_Loa_kXWw1kdIg=eZ>i_@% diff --git a/build/libHLlib.a b/build/libHLlib.a index 4307d524b2f543855207a96582f7ff3c9058661b..36a817b49e5e5fbee6d825d1c1abdf1c19b4d733 100644 GIT binary patch delta 10258 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 k*Pk53@qQTf;<&(y1;UCImc2MJ@F?9qu=oZ;Y`a zPj|oizE`iRURPJw9RKti$ImY~b`19w7Zkdr)J7SG(bq5{PW^u#Z=CwbA!5TbI(CIP z9UUd%d5*Ax;l)KmMN4F!@7Z?hk`j-+dW=%TW0<7J(b1a@*89+rsPrVdCM%srWAsyc z3SCo`-k+{%N*_R1x6;$;nxXVe!zeehRAC@p2Pr+9t~p8{OxIkc=g~D^=|ku`ROv-@ zE$&#}?OM0wO{A8!-7RbTb6MN3>%8ru>D+*~ZH#+`n3I|4IN4V`)jxh}S^Kicvg|_d z>3gBx6UUBP;&r}$$GdeT`5QO*=ZI?O6wkhrXUIn^!tc3qJa<4zgmd~@k& zkMkFQ_O@M-?zakbu*$YC#EO_q-&@``9Vw-(J+JJM*^$l--6_l7cIsxGH{0s8bHmCI z!>DY#>V59qChEWwvr1={&MKW(1uO(XIdHUT0_7Bh8V{^|wg-A7}Fb z=fFC53@M9ZoC6!(F49_D&VjA&eA3n!&VkedX%om=>7GQ|EV9mY*ZRkHGs(dtpW=?8 zyvlCe+ODm>Zx4_L_ho}K_r|J}rG2%VVU)JXY*|St9e#dkG~2A=tz^GnK)P@FX_fALXKaF>SZH$H&-gu-6l@UYBzOv zt(_K1$*#X!De?FEhQ2dV>Nehd@oq;#-#3zqCe$yPx1edBYmTe2zM<7Me@!f zh`8jrN3*e`=h(}R9+N0V7kSMjIV0W~mlbx(3>j&PJLO5?ybS)_A)XqaVO|s6y%mo9 z5K-;TFsp^nTVWm$?|6&Cz2tK>M0`?Ko{|&FK@6jiPo)pVtaB`mdML8AdnFZ*ga}W0 zmE#AYVn_KP(=C2h{~#MJV2h)p*2p7I1NxV2cAt5o|pcU>u86!)D;=iRe`aYXsRLOF@=wHQk`Q3z4EerAD zv8n{0%orMtxt7)77YfQeS%{}s(fzVm@%sC*(W3aW0KQU|3oJ?tkS&&8VAR^gQZ~p- zfw3ciTW{n7<6;2+2U(6co(tf+6yFN`an@f_hG)RQ>MOGBl4m>}kp-H^0rFc}4iP`8 z=-s0y-Dxdfir-C44NIh{&hx5Q*hsAnn?@RY-d3*vsjl;hr^$VV1plY$RzM?XvRzo9g0Ry7qVQ%ioenbzQ4#hV8Po*KF;$t(~?tCrv}E)oNR-wY3&o zTVrc&wzkjKuG`w5Y^^sv!B*q}wzfdG>l;NZP42C%uJ>0Xcq$0rFFEf?EYbcKgYetL zIdg1h`MbLE8b?t)rV45L=^berd> zKAa>j@4~P%(j(LMP|vFoL6axV;7zC{$*SfC;@17!X=`t5tv-@Qk|tL=tCmC6dO>pk zO7pJbq4WVD&ERdUC3=-Amz=k>mW)&WpA)xQ|EsNqch_TyCyn#DQ{9?_s&=O0Bb*l4 zKy_Ij)iuMW+S)U=cG%YbXls3F0k+y7XKR~n?QL7Tp*68&TAwg)4_)gCTf3k&@d0^U z(WNkx`fjz5Z)>}$-xjN~S*@)#+1egkyJTzEZLOz{GQmY-=RBR^4=^N2D!T*7qbr`P z_^0YY<8iV~(-HeMu|`jEpgf~J!i3V|#P6#Yn)#w?dcVX%Be!z&(0o1*DVFEq@?6xh zcKXFI`iPd^t9f|Mgqj6SE%i%U%NCCvJNfbEDdN!Fda)~{qvLMP7bbmt8)tS*ubUcX z_7<-%NHF8Yg#|T<3Dl9hot8AIe(|M`C|Nk(OcWaz9;P>a-lFkla>w#T^Gvg^xYAfd zAxakWi_~9v5Iw{!T)D4kUR*=lgkLUBF#Cuv7IUDyrtK8yttJi>(Olv%lg0R_$D2tV z+n-J~$?Nqc>(cwF>BcemqoMAY8~AWh(vslgr9)fG&i|Ou1Ud=a1N=PjGT`q5e-!w~z()hW6Qwo@JhCxh;K!7O`4l?z$Q}#A z7XqIO{wssbc;KV#AHVc{8lzuK>>eK5f_-V9@+! z;QX;%^J78yN#K|{{Qw7K)YtiOkP4p%;i0r{v2Y;FL{H$DIbQ!**dH^oNOH=5V4#&y z0RtTej)6V^j<0B-?ap}2$F$JEW%2E}#iRszRcunih$g$8y4$93}{aQ*~m zuL`e$0TI{8s?~ zFW{xXzXHym8ub9W^`e47`R9?107GwSux7Ojc#`7mzY6#u;M0N629BBA415INf8C?2 zV8F?ETXD`rfAIeX_;BF=3vuwJ9IhTKj+3VRef-??00Rc zybHV*{9}7lfrJMv;A?@u27D55-_MkRCk21R z(+!^ij&tGy1j0G-UJ(D^1mT?)_sN$BHV_(5y&wsk6WxJ($gVru3pmb+T;Mn-yo&RH z-8}zvpow6>4o!hTIN}E2c<-Bo#AyZpQF;JAy2tCF0)Lv;9cqUP*zga4PX+(Iz$<~j z4)HU9A15xKKTb6^a1H`ZfeM#_V*`H!j*qb;fhv=5d=DLZU{QYVGw`0d{f7HC>FX8e zd&b`;=s@kj@s{m?I5@C_;LqQ|+*SLJ&ZAJ_yU@VbP=Qt5@L#}x8t_8?<&K0qiXAEq z!sq#d7#bB1dUecV&ra-C2H<~%v{2IO4`v;-RdHSjv% zp8{_HeiQh!+=L#%9cAE#pQA%J9F|B063)c;=+OSrinBlNpi%?4j`JPh{v8wzaUwL( z3Juf&$NfPI@M`ey04~>dUcX8H6?g&oKb%AbPBD*cJ{Z=pfrL3WEP`%)d*Ma7T0K&~Z}u*&+$#gMbevJNf%$it@maYZ)XT z4O~@_d=hZe54gdY#WKM2CV48kLME6vXzk8CU*dIU+*@a+*K zrEvv|!w5QafMc9dz;R&pz~@r?cEgvzfUn(8gYdrq$9+Jz0kWTRV91Ab!R7Nex(fq8 zXSKlbEw>*yzAfJbj{X;cqyI>`|LP*86W#t1U`poz$CR!HJ{L0D1{`nMZktp7v4PiY zgJEC;7lC5~k?H=9;tCiC92c(sz~#av^G~Us%o{V3P&#l8pBIF$2ab>Bz99Sta9rqo z-vlvq2I1X!|3$(b#X!lxaRB*2_ymjlWFQ>DLa2az3Ghd$as9Y%1dbhg892VQ4k_-S z7$HWDKhQryh3BDxe})Phfxo5rAYz+l)5#wX6ElFq>mX|t>~V*K{y<{a_X_B``R z@zwSOI!EltGwVcWdxEIi(I>GUYGy&)2I1RL;Mkwp@zWivOt~@Cza1{+WRdVCj1FF% zSWW>~Ut3Fl1GwIQvEktmX_j$%SgJhF1pbi4d12(gU05ZK=d@ILz6Lx7cs}Qlg#FbQ zTC!XTTzwxT`BdOMutrJgpB$l9`!Wy*)4%%Z-*%btp?~%JRY0IEDo|gJN}~PsuVU%I zS-r|mB$b*Ervg{fKZ{M(24bw*lo1$!%#} zG9CRr{1HpMekX*{po{IS3Z#lJc4G0H3Ir ztp4!o5iCx*^5HF0FrUrJhxg{ed@d=U=@0OUdfDm^e;pGnPPy`#`2e5I%BS`LK9`iw zoCo+s?XmhZ_W?fT%IC=k_-x)2V~!HP+mjddC-P#slqur&7WRIBhE+VJHb6W%Vnof} zY{xIM#2dTg#s0lntX|$biZ9XoO5#>qHN4iv;2LqFW?y!<2%Zfj2ZY#H)a_MO8Y4d3 zSLC>pEu#0^b=Ai{S+|d<*`Mv`nIpDzZBG(c$o_DSh<>FcZjIGKt#y(0`-+-ZvK{XY z7F+ywp583nw-j-O?2)-5`oJhhTCS)(&}EqZV$XqWM@qi9?6+f>0V4Hawxc>DW1-wQwP#c6d(tNi7iJmW^5-jPjpX!+4ZdD ztHbaR^XLc+e?3U}-wqSeKhE%74HCXsh5y8AMUHSt7vVRCTfHBu{Pe|DWNG&_P*>eO z^@d9}c2fX;yQp`E?d~cTTYj7|V<(yA@NI*o#5`wRarh4t((yGvton!V7p|FAETWHQ zB>jsrhXiD|xL8yk&6x31-FkpItBcloz=5q_SK;+M<(64I#p3eOjIi5m=Kqa39xvu+ zd63GAfW&oM|_01b1Z)9redqY3A&dkx;L7|QmC$S>CvN6_kgF; s2yx|DcC3e0k~?a@P$H6F&5O#fu;^Z=nDT02R`q(Tn8`f_2^`G-0oPfdCjbBd diff --git a/build/liblinelib.a b/build/liblinelib.a index 2f9a1dc25461eb8c8625c32c09e496fd140c78fc..4d0b3e15ee90c9249f366a84d2594e60977ed498 100644 GIT binary patch delta 385 zcmZ1{c|dA{MTm)!i2?*9a4|422r@7*zM&LvHemB)6pfGaGx5pHOSMQ(Es4)8PEB?V z3XY$Afzg=B!elZllOf}c$>vNOB|q^CxCwmXk8uYQ0{$F8mLHIaJ9v2WOQuprUJ;<9 zOc;R#5J*lgH##K6cf3nIfHxmlhqicuV^oeT_{E7;o@1udY)Fah;| z@T|$-Ij%Eqo_wCuobkeBb}oCy&p->rC&zJVFn*cb4&;BCe4NXkiJcKBEH+t=TZ4&% zak2-u9Vg5rkIDVq=9~;{5JzN8J`dzIfQ$x$2b1}E%sCTSAiT`U{y<&^JA{`r*`G@u E0C-4Q<^TWy delta 266 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 JDEC&+{{y)Amd^kH delta 9759 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 diff --git a/src/HiddenLines.cpp b/src/HiddenLines.cpp index a36763b..87a04cc 100644 --- a/src/HiddenLines.cpp +++ b/src/HiddenLines.cpp @@ -220,9 +220,8 @@ std::vector HL::construct_HWprob(){ std::vector merge(std::vector lh, std::vector rh){ std::vector merged; - std::cout << "Merging a left half of size " << lh.size() << " and a right half of size " << rh.size() << std::endl; - auto litr = lh.begin(); - auto ritr = rh.begin(); + std::vector::iterator litr = lh.begin(); + std::vector::iterator ritr = rh.begin(); while(litr != lh.end() && ritr != rh.end()){ Line l1 = *litr; @@ -235,6 +234,8 @@ std::vector merge(std::vector lh, std::vector rh){ if(isec < l1.get_vis_end()){ l1.set_vis_end(isec); l2.set_vis_start(isec); + *litr = l1; + *ritr = l2; } merged.push_back(l1); //merged.push_back(l2); @@ -263,15 +264,25 @@ std::vector merge(std::vector lh, std::vector rh){ if(isec < l1.get_vis_start()){ l1.set_vis_start(isec); l2.set_vis_end(isec); + *litr = l1; + *ritr = l2; } - - //merged.push_back(l1); merged.push_back(l2); ritr++; } } - return merged; + while (litr != lh.end()){ + merged.push_back(*litr); + litr++; + } + while (ritr != rh.end()){ + merged.push_back(*ritr); + ritr++; + } + + //Remove invisible lines + return remove_invis(merged); } std::vector HL::get_lines(){ @@ -286,3 +297,38 @@ void HL::set_sol(std::vector>> &new_sol { sol = new_sol; } + +std::vector remove_invis(std::vector &merged){ + std::vector tmp_vis; + tmp_vis.push_back(merged.front()); + merged.erase(merged.begin()); + tmp_vis.push_back(merged.front()); + merged.erase(merged.begin()); + + int num_vis = 2; + + for(Line line : merged){ + Line last = tmp_vis.at(num_vis -1); + Line seclast = tmp_vis.at(num_vis -2); + + double vis_isec = last.get_isec(seclast); + double merg_isec = line.get_isec(seclast); + while(merg_isec < vis_isec){ + tmp_vis.erase(tmp_vis.begin() + (num_vis -1)); + num_vis--; + + if(num_vis == 1) + break; + + last = tmp_vis.at(num_vis -1); + seclast = tmp_vis.at(num_vis -2); + vis_isec = last.get_isec(seclast); + merg_isec = line.get_isec(seclast); + } + + tmp_vis.push_back(line); + num_vis++; + } + + return tmp_vis; +} diff --git a/src/HiddenLines.h b/src/HiddenLines.h index c8eb947..36dcab3 100644 --- a/src/HiddenLines.h +++ b/src/HiddenLines.h @@ -30,4 +30,6 @@ class HL std::vector merge(std::vector lh, std::vector rh); void print_sol(std::vector& lines); +std::vector remove_invis(std::vector &merged); + diff --git a/src/Line.cpp b/src/Line.cpp index ac40f35..a85a089 100644 --- a/src/Line.cpp +++ b/src/Line.cpp @@ -81,3 +81,8 @@ void Line::set_vis_end(double x) { vis_end = x; } + +double Line::get_isec(Line &l2) +{ + return ((l2.get_ycept() - get_ycept())/(get_slope() - l2.get_slope())); +} diff --git a/src/Line.h b/src/Line.h index 87542d6..eb67ad0 100644 --- a/src/Line.h +++ b/src/Line.h @@ -21,6 +21,8 @@ class Line bool is_vis(); void set_id(); int get_id() const; + double get_isec(Line &l2); + bool operator==(const Line &l2) const; bool operator<(const Line &l2) const;