From a2762f6b701bea4b0c25fc806ab8acc575eb1a93 Mon Sep 17 00:00:00 2001 From: Sebastien Binet Date: Thu, 4 Feb 2021 13:02:16 +0100 Subject: [PATCH] fastjet/internal/plot: remove old plot code --- fastjet/internal/plot/delaunay.go | 36 --------- fastjet/internal/plot/delaunay_test.go | 68 ---------------- fastjet/internal/plot/doc.go | 6 -- .../plot/testdata/delaunay_golden.png | Bin 30681 -> 0 bytes .../internal/plot/testdata/voronoi_golden.png | Bin 22752 -> 0 bytes fastjet/internal/plot/voronoi.go | 74 ------------------ fastjet/internal/plot/voronoi_test.go | 60 -------------- 7 files changed, 244 deletions(-) delete mode 100644 fastjet/internal/plot/delaunay.go delete mode 100644 fastjet/internal/plot/delaunay_test.go delete mode 100644 fastjet/internal/plot/doc.go delete mode 100644 fastjet/internal/plot/testdata/delaunay_golden.png delete mode 100644 fastjet/internal/plot/testdata/voronoi_golden.png delete mode 100644 fastjet/internal/plot/voronoi.go delete mode 100644 fastjet/internal/plot/voronoi_test.go diff --git a/fastjet/internal/plot/delaunay.go b/fastjet/internal/plot/delaunay.go deleted file mode 100644 index a4160c1e5..000000000 --- a/fastjet/internal/plot/delaunay.go +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright ©2017 The go-hep Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package plot - -import ( - "go-hep.org/x/hep/fastjet/internal/delaunay" - "gonum.org/v1/plot" - "gonum.org/v1/plot/plotter" - "gonum.org/v1/plot/vg" -) - -// Delaunay plots the given delaunay triangulation and saves it to the given path. -func Delaunay(path string, d *delaunay.Delaunay) error { - ts := d.Triangles() - p, err := plot.New() - if err != nil { - return err - } - p.Title.Text = "Delaunay Triangulation" - p.X.Label.Text = "X" - p.Y.Label.Text = "Y" - for _, t := range ts { - ax, ay := t.A.Coordinates() - bx, by := t.B.Coordinates() - cx, cy := t.C.Coordinates() - pts := plotter.XYs{{X: ax, Y: ay}, {X: bx, Y: by}, {X: cx, Y: cy}} - poly, err := plotter.NewPolygon(pts) - if err != nil { - return err - } - p.Add(poly) - } - return p.Save(10*vg.Centimeter, 10*vg.Centimeter, path) -} diff --git a/fastjet/internal/plot/delaunay_test.go b/fastjet/internal/plot/delaunay_test.go deleted file mode 100644 index fdc37418d..000000000 --- a/fastjet/internal/plot/delaunay_test.go +++ /dev/null @@ -1,68 +0,0 @@ -// Copyright ©2017 The go-hep Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package plot - -import ( - "bytes" - "image" - "io/ioutil" - "os" - "reflect" - "testing" - - "go-hep.org/x/hep/fastjet/internal/delaunay" -) - -func TestDelaunayPlot(t *testing.T) { - fname := "testdata/delaunay_example.png" - ref := "testdata/delaunay_golden.png" - err := DelaunayPlotExample(fname) - if err != nil { - t.Fatal(err) - } - read := func(name string) image.Image { - raw, err := ioutil.ReadFile(name) - if err != nil { - t.Fatalf("error reading %s: %v", name, err) - } - - img, _, err := image.Decode(bytes.NewReader(raw)) - if err != nil { - t.Fatalf("error decoding %s: %v", name, err) - } - return img - } - got := read(fname) - want := read(ref) - if !reflect.DeepEqual(got, want) { - t.Fatalf("error: %s differs from reference file", fname) - } - os.Remove(fname) -} - -func DelaunayPlotExample(path string) error { - d := delaunay.HierarchicalDelaunay() - points := []*delaunay.Point{ - delaunay.NewPoint(-1.5, 3.2), - delaunay.NewPoint(1.8, 3.3), - delaunay.NewPoint(-3.7, 1.5), - delaunay.NewPoint(-1.5, 1.3), - delaunay.NewPoint(0.8, 1.2), - delaunay.NewPoint(3.3, 1.5), - delaunay.NewPoint(-4, -1), - delaunay.NewPoint(-2.3, -0.7), - delaunay.NewPoint(0, -0.5), - delaunay.NewPoint(2, -1.5), - delaunay.NewPoint(3.7, -0.8), - delaunay.NewPoint(-3.5, -2.9), - delaunay.NewPoint(-0.9, -3.9), - delaunay.NewPoint(2, -3.5), - delaunay.NewPoint(3.5, -2.25), - } - for _, p := range points { - d.Insert(p) - } - return Delaunay(path, d) -} diff --git a/fastjet/internal/plot/doc.go b/fastjet/internal/plot/doc.go deleted file mode 100644 index ac4fb93a8..000000000 --- a/fastjet/internal/plot/doc.go +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright ©2017 The go-hep Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// package plot contains functions to plot the Delaunay Triangulation and the Voronoi Diagram. -package plot diff --git a/fastjet/internal/plot/testdata/delaunay_golden.png b/fastjet/internal/plot/testdata/delaunay_golden.png deleted file mode 100644 index b27acb237148b31e2a116aa41f20d4f156e8db2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30681 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 X{JrO_dK0ef6>;!I%Y- diff --git a/fastjet/internal/plot/testdata/voronoi_golden.png b/fastjet/internal/plot/testdata/voronoi_golden.png deleted file mode 100644 index fe69bc8e40b29600642ce6dd7e2f53797558f6eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22752 zcmY&=2Q-%N|G!PP2-zbeBdZW8TOm;yC0o-j*|Mobij0g%Rv{u}&x8sM9Z-#P#D>zwcTc0Tbu_kG>h^?twB`@Ustq{l$ZMN2|L!f@=U_DK>FQa|GVXvpwi zlA9^oNk}a6j%jP0_DP#h_dR#VX}f(PCHHcweAe}|ISEfFMIOg{#yw#@_Jo=DYrat; zqmiaE%NfS|JdOrBj-$c}nwnWL`l%nRKgxG4{I1FvJ(M1o_-bJ;Bjw*_l=-!qg}J}w zZ!Z>4`3E+z?MsSg#-B{4-4!HcWMn2GCEWPGI|B2O!NDZL;w6;K8__l13x{uPa0a+I zI_?kr>$&**7ONO79UTjWoPt7GWo5hJ32W<-Qit}fjbA5r?6?)%@9Rf$TEg_qnSl=< zPMVwliR#{YQ>t~E%EmBR)~@v?OVHMOUUD*Lw-Yl(imLa|e}5J}fBKYbm=cfBo>`gN@B-oquIRL(uW#4CzMH=2x#>D=IA9 zzkh$mAzw|=_!^&8|4)5=%V&j|58v!y<6BxJLZGavK1l4PEreMzekmzI|H%=~#@Umqj4 z;@g3N6hqO5pzW=Wc(KmT&cVUK9XocseEIU{&!3qQZX-6QPFmv(ydEZt~~xYW7|wt^5TVrjLgNd0j&PwuV0el z;#F6tXv3PSJSM4V1(<>hWS zR1K2$9Y1Kb{=g%K=b8{v}#*vp!Nf8k`+gqFF#phl*w8!p} zG!vk?I@c$?5@bT57FNQYHnFfEBPh5u^HFSHQffxV&)M0|sjCk5_J4oRwcD3As?GHk zkuT`V3fFti;KKvAHV!6reeUmPqN5|A{2R z9@|(QKSw1V#wbJ4?i7XZa~Eyu{3z=eS698<-N&xJ+PilzO(+`&N7!5#6~o|*^Ib{} zyd!0KCm!YYUK*Qwm#W0g%^mjqk(xghdtQ@4U|`_bC5oz03yIgb`@=3SE_$&%8q9ly zgzN`iVBMbN<;~5^gj}Wx6=;cK3fla8AiiUMEwiBDvV+6qmr6GVdius)XU?3FmM&UZ zSuwJD)7cq1W2m&S!1&|G4<5$vsdERatE;;+)M|WxT{w2^n7_Yjr~tl&Ce&S-$DKU7 z?eAX=JQ4~GdIkn;#D$T%e}8{FEjo*R{rXjXVJzp)9YX^H1DO@pOj0QbC!RSItk$rq-PX8dq$r6k$0i6pkUqFMy;-a4#zV@ z)w4PyF;UTHam@eEPY-1t4-XG_4^)A_fB&j_&Eq*A_L$Hcp)F5 zIpdiZ8TtB;%IwUh6*E8oiJX%SUNM{h{@mqL^PB2?5HEJ(f-L8l&;xy|N>?ibgRb$G zs1(C*sED6FeX4i;)f_>WlaqrA_DIoXu*9y#FY7jm7_(QH4a%83F8}LSM{jR$_w#*) zXV%x(QBz1{WUOnaXJ=_E(o}^+MZZlRM+CcLZE+kGDPuL__HEjINi{*+Hz+iQhK6vD6t0poGW8+v_8J$Z6xRo2I{KR<`#6BGFqF1(!|C_|y4 zV&L+ed>!-muOAjPHYi3bl74+<=2V_r-isF}wY0QQuzP!ZM@MZ84W)#Hgd`=qUcc5g zF_9AzLID#J5FlAGH8W%1wJWEv(AmXhbE1uoKFFNnNF>d#mIK%VhN9QT8bf$xDqg;P zkeK*1KYwG^oS|LmEb zo?Z*PW)Jz}>}(u_+X8QFf;J;g)vWVHMn)dlTwxteJ$~W@|A8x?788y-nIT>D@sbrU*Fz^6-A8I7>lzp zTN(xjVb@}H@J+b6YuBzdtsic7-HLwx{CQp7CVJ+rQWaMg4i2$-T>+eX9LAKCl%}R8 z4jJpOR$}wtg3i6V3M_Dbyg6dbLVq4H{^+*QqKHg|iHV6;mg8w~&YjFzStp0y+|!shF4;H8pihpXQ>>o;`bL zYMR8*s9Pc#qNAg)d3bbmcHU1&*!boWJ{%B+Z`{3mx65Gp%+}_=l9$XIOaKP<_oKB? z08LMyeoGFl0oBK;!IvKln*zSUY0^o;JxrXa&OAaV@c3pz%!NUOx+wAWzU%q@0 z-#^#?9F_L_yHqj9Afu#xR#&~eMDHCne{Q`wzI4{!^Owt$oSgXk_s?2d;>0po(lrI$ zOGsc-uGuRonR>v9J>AIW)zzGP_j*y(fS_!nC%CzlTs=KK=lh@A06=)hF0*?5vU>aW zZF6%oE>cZR&CW@1jS1VE?4pvSdGR6lv0&7tr%z|Ycd(+2?B?N-viSbEp?ziMV^~<& zaYI9W1B1_>KiB-Cu~V`dUsyPD`NNZGnMSM@f6ch*Ef$(&Ls6Ws0G0IY5fgJeSLje&k}ntFU7E?H{IQ621n34?q-P0e`^mW9KjP08DSrH zSI)@DKpncZ-MqFm32a0$w_ttt?AeleT{E+a+}zxPf?M7ZE#rr7Z1|v<;;J%$${6?$ z*A^B1z_}H8dE>4CK2etQ4o*-vuva>(R`AWccPq=vQdO=?_#DJ9y16an=Zh1n{Tll( zr!Ji^Hjb;Q@i#GH$?yJ-b3Z=byE#BzY*FbtjJ8Hi&$+m@=`Shy%(`5iaJeaK= zo-^o7luD~Id-q-*EWgbA-0FKYseO|IndBQd0D6pU+f#7L=7K zIGfbjO|;&!taLq~q=a8IF)^9364o9%?u{bR2$-PcGU({w;NarIU}v$}bfVdL4+m7q9B0W+<%@gx zP(oN(;e2Pp^RBCt{O0EUsDWO!J6Txd{8ycQZu`-{Ng}ihiB2&9UUF{ z>+m!)1f`_|QI--D+3D!$2xtA?zPTriV_;Tjaqr>7zi1psw$`%i>qp+dXRIjZ6OfcN zATT7Rsa)@T`<7nH4NbLbf#I=oiXYllh07Q9U4i%*et!Oyzs+|{vUPtDN*&P7@sPnV zqNMXK0%A4*TYShdkYew`o@{NUsCb+~`g8)Qu7zD_=i2)EkAX5h6z#TX4q95;fXl2p zH62}DmSq=W(0HAk=Ej=BfMD?8dgmAwz?oc!t9SA8y5L{N$4M=Xx;d9A2@-xgN>Z_X z37X-6fC@J@)^PG-xRv(p-Fxe9o0oB#;X!5PJDhT4X@ws@e)RwKjlnO_?(OfnexQ1e zedmroIoZBbHf3kkw06_ur%&~@v?hDA_3G>EnfMNkx!K9E{fN}f4w3&YA|e80plNpJ zfV4D2>(&l4i#m1k&SlvYLws@K%8DlgL(Gd8FQ%ubhikll)dhMgHK#s&7!Vlv=#cLV z`?lLzT2afzNr{PDTmKfU4q2Q#cjswIeRgp%A1kYZ!|OXcSVi}Uh%_Y%?|jqI!4kiB zMLA$?@xF)wj#F;Erh7qtDyfc}({Rs;bs7@gMG)@m%?<+3Ok_8tOwmd-dv7 zdV2bvIXWR!Owhl0(c?mjmwKtBEO#2T1w1J%G(3JBMOj)_cJbT0)Jxt`6N3yXh8ahK z>QhqAn3(he+o?p9(=zPm`T>5z&d#2#8{_xqC$ICt<`eDYeH4M?IPYMk3ej!1V`8p* zcr<0|vHcKLR<6Q!K&3z@4ZW_Imq+6{|HxKDH2zjEgAJk5?GXS|jIRIIhHtwI&uIbza3~z*?Z$E zY95|8{sla%rBCQB^O2GIp1!^d_Vzn@d4Eh#C#R;;8P(ZS*(n8t8H(oR<;5S}gOeb% z%EX}POlZ7Nrl6p(i;Zpd#}{hL*fA3ei~OfgAEuX%a<=r55QraE?*8YoCJiu?BWtp#L^!g8F~Nc9+mWr zq$Fw+Tywsyt*yGyJt8i(yeVsJY^i$}^Idk%`*F?v3Wb#H+G@-@f;4Z6c^IK(EDo&926zty^*_Z&5^= z`h*%mgoK5&!9$$-i)UtL0v9S!fAey40Y^b`tZKZDo0@*^?34fwuq>?-R#Hl8vaJpL zrwF-0QIWlZC%lB4ZTEpIr!QT)WMuRnoz~8Y<@D=2yH8nIaPHoH*~#f&ODf9IbDIWh zQ_}<2zP$y{5Y&oHe)upqFVEpIoAW@krgeOW0()+iIixMXeB(R`exw?j*~ zJ?+W{&?(tyb22kYD%drMPd&5N+=dJP9n67huikF@*U&iD#h4qEm6Zi(pfrTG46E47 zN9@y{w~b*{5xju8~2iv^Ru&s z9hX8N?BJ?*?%dhY(NXf!lhRI!pwYT@{kVgJaJmr(2S*SN`Cy=km>Bo&-8=LGuoVSD z1;7hH@Je28klIgq?I%?_|SVfxZnLZuE2=ym6fH*b}}x03rovqIXTzSUQsGh zMNW!Oo0*Q&g%8`_j)-XME3yP3tGU!GL^$gn9u?J|t#=m?lzggP=;l%g5HX5yTU#5t zH#H+quyo#+#*BA?+*#*p#))?rE+eS8@z^0C6XFk$lC9)lD)1{u`7`?Z5(f_Ksz}Vx zATUteBpl%r=zn_a)(&UE?a+4@sHvzr-@FN4YXk>wHd{GzJNELck;O1`*Q<-h1Ge@N2%PNfeM3X@KYt#!Z6ujq3gKaF@9eyS zy8uxIV8`Qg|Gh%C^En$^ak84f7brkpw4k7%oSYo?e&n9p-4NcqR_6zV^*C zIQsI%^4z)F{QT*;w>zsQfYWdWQOI+8FQFx-D!NR#Wo`X5HZ?tOZx2j5F*ipyyynL= zKmNIrqu{-xoZ*B;I;!EE-fxHv$D1b;8_{|YX(|MlD1@LVPV;|YieQwxJFP+Eb2-FN)W(VL3#NKmIu4u z-p_%3iPwVfdSrwSHqiZ zGkb^8R2g|yo)i@kNo{!`1NqGy`(#xAiABOb#qx>@&F=F9PAaddaf(j?5_fjqZV*X5 zBbA6Pf*w9UKaXV%Z*;{ryUEa^qe5EYF-t0s6up zTiY@4q;)}d4rVX%_}SSj<7=O0DWUiXl<4%#KtF+|2>Lzfj zOHNMarlxJLU%P&(h$4Sr!kL%dvQXrMa;iLu6U_i&$K2?2r3>gvA$diU?&AMW5M{NJu9 zS$Jf3t#ddL@jQKc`_D4Ek@1wR#@@PTYqfoXsCVL?erIt^yh+t(&l zm5^}fGY$|0bvo52ag_M zV|d}w#o*3E$f=w0h=Fcn6;1_)80A4PZ88ht4Ifqy>u|h1-|p|?BJI4R3U{Q#CUn-9 z_-hpviU1RM;ypb*!GYB_JdcZth6w~3;-@xTRSv%EeNU~a=hLS>qM}rmlmXB<3C>*twQ8y0|`S_fQSTBm)TbZ*)(4 zYXU#GWhqTRsAg+hzjpcZ41dr@@6eE;(7pWAvnc2X_V1VN6X+D1xS z*m)O?MT1R^my3r-X;qbSblce)uOByAgx9`AycsyIrPcDhVaso*3oOA0 zs8J<7Hs{WXM~83C@1Ua4z{%EDY%OI)NB6n8GI{kC9e(WPmCvA5P0sxvKVCz3-*{&y zaW!lmCGFq8f8@_Kn6=NGIVdhZ-55g7*_B^h%s#+MZ|kWQ&PM*}^Jm|J3IXWlMKF2D zh(CJvtO``cf2%(>e&~Fi7gbQWHcu$!eGc&H&|ucz(<9KyzW`g&}7Ui^}^wKeqg3uOaiB2g_nXla*MS6^G`qQdE$=1`I;rXD9SG!6~%Xv9H7 zYkV;N^{Xc|W1zs12QFVK-lZr+HPqc4I$2s={B!8lwTti54nhf#PYHmC36b_r%a6t# zRP&WBi{z>A*r#%y#d30Sg}!=Q>-$TfGqd;7mkO6uRqtYe{MyIJ+E083!Vtb51Kvi+cHH5(uh8fP~_+Ki24=SS*PWn|n?`q^lw zfL#G+&@VZiNa&OVKGUsQO|rspgFZ@-*a}NdPR_{@@%s@yG|0f`v%RIZD#i(_20?cD z&uEaPg#|dL(Ej}iy4l0Pg9Z#F#*rb(hD!k4;=sa1WOO*h>gZnhH9)3BY0JK)PM8z; zd&wsflJlH5dl{Ih!UToZUlV`u*s&d}FApahUdU6v04Yj5#VmNZkyaI=_0Ws+P`;v5 zQ!SmHrPvtKIrm?RyZNM6aGr_`kgxd$_gdbg8`S~pSKB3(T!&ycHCs@LYmi=GCU{%f z*c`d|o(FWgs;UZ`BnSr)(y#ySbWTNQPPk9k498KYXil4(cXf2w4b9xytpEys{r9Zt z;xY;!uuwF+G(NA}HS=`f4h9AWT3RwugPfBP#w7OcT?Z$af8a^M!+Z4Du@Fgea^j5y z2CA)|+JPOhv9>fcbS_C|2o3^jiGHl)&G>?}G@g-Cf#CS~j{tKe<{wxDj88eQhXP2@twy;pXKKlt< zT2QkE1a9XHZ%g+MOIC{-)y06b{{?x;9ewbz@#bT|nSq|V< zFMU16DgY5#J3wXq__U{r(d?HjYC9#17DxF~nT=pc3n_NF>UAz1oi@mFEoLG6fTWkE7`&u8-O=F5_DX49dHLxCEhBjag{A~M zD82X;6twUn8XM>@<4@{&^@$&V1GE!0TFfX-RzU$Z{x1I!Mq1jZ&!0b1aPGmMJ9u3Yx}a-%z`@+q*!(P=SGF5)%_4@)kaS4zSlyRkil;fD?Kmz)yrf zQ&dfv+jPIrHN`Oeeq%tvc}7o*HO9Kmrr&jNQ5)%5>)){T~=;NSaFHV4OcbolG@c30Cz0e-0JhpTibfD*0El(KGKsmV| zXHb5isQ_YjynVZ|{{7L6=U>pxi0d0^85zY{Stjs}czNp}{1v-Zl$XDK^Tr37Bkb&A zs~V6lMZc9xas6jJNsd*ZTGCq5Tygif_3YVPKZlari1VdOG+IUrXDVIO;lQUDqVGeM zpk-pBCRN_Ev!k{3Yv%*Wxc!ec9Ub?i7$)Ak2k78?;!#n4KD1l1nU64Eu_{rqx2`z)uFk?Gj75 zbT2JU3T;hPG;+3345inR?(xY2^!++n&opS%pnD9KItw^9gc|SX&z?OC2_cQqoix1& zaSEU^e0VVm#ThjSvX_jE%wffU<1N(S_Ob-@1CY73l^It4FW)(^14Ql}g(iyK!s+S# z{XH)^IXQ(!YildQ8x)sF*0fM?p+wm}o8AX47OJgPi7kls85}I%5JpG&S4ebRxNw1J z7h==+`W~!$RFYbMKR%v3QV>=?j8SR*I&B@D&F?MabSNV@rs@UR)??6yX@3Ly*$%it z1CNNHwD|F&qT>C#cWp1c6KEJ1D3|n0A_Bs&8Q0c)pkKqEKv}eQ(cF1!kC@m+X!EnP z)!qvu`)&ZVuIzAgbAwozWnAGr5USw~s0`tCEG`e=9X65c>VP!Iqn;5Gf_?I|48%*@bNuMVz0(!pv?ef|KP866w@+Ja>9 zaETW;56_*zg>*vLw<{8m<0CA(-c zPZpr`DJm*LfvWeI)U_G$4s}!lKVM+W7KbJ&CYG0za~{b0+c)-|JMSka-&~#5b#i)E zSEpuScy{SzZAXcBVvO02Ox@1H|iCkxnUDb3yHu{!X!jTKJ( zXE2jhJRX6B0RyP#ClQ*$+4qLY4yXj#vnu!5lP8Y&zR5{eetsJpo9=ca$_`hb_yUN~ zt?lj9l$5WkssMtWE?w%mR37`?+o?-A@7@V0}yPagCRC+ZSx zA^)&|@lOS(Y-iXsm_ZET5}mGrYAby2=;q(w*sHuxd4E6b=`qF`WIni?jg12S0w5`h z_l67N58v>+BO@cACE))8_T06nrah}mOG{xdoj%Prh(JYo>OyZ%PaOCqAK%ZZsq+pF z*?Dsy0pg9JQxmOQcO*M@BkhPFEjJl^zY+udTrs&>S$3|jKcTy@v9Td-<6l#3)4<0QNJ~RA{YxoI1%O^||9*24A*5Tnmup4kH^qkr((e7L7g;pGTkKB)RaFUH8nu?0*#E)0$MKE;KpHpE`LGx3(}jDJ&|g=su?I z{8uLo62)$$gtF2S6Z_y;_zyNekTh>?aQ`uQz;nO7wuVLsaMzm29iD?PIPyN5OklH& zwel!Geg#ws0cG*S$jFWF@6!=Td;R*gr%Jlg9u8L4Q^v-!N=koLR}WvGW!ut&W9>nP|2HLrle)UPN=2EGfBGr*wULpLHy_0kHCPeKqS{~i(lNjwVi(d!PGAAGza*i& zvJ#47sJt>x11TvfZ)FO!c?}+iyaU5GZ_)(BzP~|J?S*62VA~WLLC3*&$frb)X`<5= z24IN5QEr)iqMyDQ5t2qX5by`kTI)-$*${rXf&MNQ2g)~v2E6;tjg20frz%&!(pcO> zB*NRnW1RQgh9J5lO=u=dU$C6`U<_*e!k*p~g^TdOs<)+z=OeqO^p73G$z#;-Cm7q< zG}yP%8Yk!)8s5s6dg{FbhJNm^LFsjs^lAwtkAZ}8M{h6LL zjEK0SPq0r{tmw~)k9OL;6Jt{})gWo%M?i@#V-=|NRVuc*}`T1YJeQP!g z5yJEKuXl&yg=~aqd`ePM9;_Qnjy~lZf(H&tpxbS!*)jD5lAXRzVdlBaJVi3EPLafN|aJl6Hb`cx9&Y}j)YSZITh);5vop#|EAL~> zojbO_W94W1YHCf80;kE6X)jUvWFKk)clos-VeTX>itP0 zvUQ#q<6-Ob`yAK~Q(=!68zs?;PPqM_0oh?IyOWi*DNBqV;a~`Vhx}H=6^ED7g9aEt zP%0~f)|W*NsjWey#xa0_*1{f23A8KpVrkT=!fn(V$H9BS`p!QqV0kO6^x&UoH@aMp z?)d;ZU{-YYC9Lu1Q3r*#Jid>O1q-|(dM9*EWGd;_mX>sul*Pzg(uFm-dwIRC8a>~Y z2$)-JS;;tgW4*ay{x$skp`i_wKA?z4uu+ktY2V)bx6mM$6eUc>$b&G`7VHy(W{GWM zFllRfHJvSk3rWMqau?7J#nR-qjTia*yMi?G@Bo2bkaw~;bEaq`h{AK@wH_KE@FG#^qa7oOO|B+*h z)bqT4UB}V0#a4Fk%NKmoUdsw+U@<5RY*M7abs)INBb89BJPe9)MWY2{0rG+Fly^K; zR9HAZEp2FRdu?s4@#8HzDJdzmM?6DNGG61=hSE}&3g$!0pe*>r#+dt~FV3TPbV2eJ zxH3(-{UR0Gwd-JcM`Pm{0vL#ce+PSe9n0JGZ}eEaXp`|xVdVOJbESrYKTtyOf~MgO zDLw}u`&Z>#`Q?vD#Hf*k1w%fZ= zq}$4J0t%FvX2wFry`>GZ9s1!PguL#6aj5KogIHqa9bcFj7?6E$ZRw%XzCr9!V2HJa zC)d8)c$L{Uk;QRkjQPWFL<9}O1?6dpmxYD&`uzZe!-&bUb`<(Oof>mxqVm@~AhXQ5jbQvP_>I7;bJBQcz&M z&BN9V(?T%75D;AqXHEr>sN}sIV*1{96ww)=SQns= zv&oV0FuIT+Irija0eEOhgeRSSPHub8%nCwlFauNoXG;{DVf!`&tS@6!;0~W!HT*v! z%2}NcsR}E-vH2Ip@Xec}7G%}IhN8$Bz`HBW&DFKG=Br5KSHI)x_ZD!l$4Ko#O3Eu# zR@jNBPoK^lG$D4V0JVZ9D%uG6c%{(cP>HU5%7;`AV@u0~?8S@u!IuVldhJLYB}NvL zhLAloD+-nV+Rp6t(E%YiE^h9FJdFB3koliQzzrP)g&r|EKq;+)>|*F869J_93j&|q z;nX6D?=C4>WLX*8;W*)Y&_cmA8ndt~c0!w$fX-GSI?i|zG>+S)^i&Ee@}5)yNArbdId zhttd0uwYczuKj|uwEun-1{`=)y_~`Efn60YzLydgU;F+jXl=wmiDhb8CiFl#X?R4$ z%gV~A$jHaTy+pW+jvi}X{_DuQZ+73EN)r0chPiA#P-$ z#odTfxtFaI%9P0u9Zc!Kh5h*P7ajrhx9{DLwkPi%sV?&pPP>@4FGNXtYLL+F8+%1&lxjJiltK zX{2aQ96dUnpzt-7CTkeAPVC@8U!YrnaR@1}jL7G{Z=47C0uc*vV>gFHMB2&L&S4>C zrmYj~@|R90ndR{&A@%Q$y|Dyohsr0rChhEDDLOr?C;$9n&&W zR@H1Vv9Is)caOVMNXlJ5(fjF>Hna8vu{dyB2VR(|ZPUB4E)Qku=)w_?AAvK~&&{d)d#nBZL z6tu&61>r?vfXJlvd5@wSPtY`W z1llg?Y_NUp*03pR_)L-aOs$UxB7NX?c6949M8OREe*C?6UVi=?M|rzv>i3XF!P2!u z`1|yUt%7~43^h?cWk_x(1F`q*z{HKk1D8@#+`IGQ(vn@N#oC>wAF8J%J`WD6?A^OV ztU1skoCER>%&M_48~>X>-^mqNH!DZaW^J7k;=a^WQfj&pPRvF5EZ)`)*5sYrw(V;eX!{FKB zks%%TxB$j|1@mFpB?3#G(?fI`uul}}SMBMC*InKwlU z+`*;(81Q9MmyT+|G!s7XIr7e67J~0Br63MCw&(h2r2;%?CYYQ#;|u#031It@o!z#w zAf#A|o}c-Mr_4y&UZc$slJ!wvdoKq>b`2SQq~}q8A%f`X>H>eW|KLMr99}xy1S~H* z&FHUBLd!}^ z2Wq_C&Yeq(j;8ZVKkTjK~&@Ce^>LNpXEIcAAo<>crfq<~!y;URKXmDHfI zM-*wO;yZE@(T4%+yot6&#CC9{21K~9 zrr@HS6Jw5-$mK;|)zl#4%voFdYkAqM_?++Z*JBCQa}LY0v=Q=u>C%h8fBlLm{u&G^ zU~|}5L|Ysqfl)1_+t6!_@;;*1V1YxZ&sbWrVuAmM3;g&}8S%kYJ#+=$7;W{i)Y)kbw{PovdhX|H<1jhSm-{CIjM%%D_(d4y8q)w2f*g-;J7#Ez z4ujDhY!US=W2iIG#277UB!ZV^u$wRmg_v9hgnz()aGz-{?qK{)QNx?_yAERQX-g5Y z9C*|jKzwJ<>Ju1(Ko~TAOKzGQoa#}^W0yYLI_}<+S~3<7efrQ>od*dCL>0ApV=WTF zN@k8qk@ybWb_t^R_zoz5F}$kmbyF4r6O)r+&ua6r%+!*Sl8ULDOOtx2j2b6TzNoF` zskl8t9;xVK@v>>B^|I{7R~?c0$RokhR3&>v17IqjHZ^TB>ow5!y%bjY)s9&I7UzIT zmtl~p^JRlLw6M1Yfd@d9hcO}osLb}xl$%GCNf@Ay7)(W?4NT{>#Pz07N{H+xr%!u& zd7+0qL~tT8(d_C~dFPl7NAO)(;J9|AiynrDQvk=o*CCvhJr6a=hkFnJn;gMyEW#5c zH!&nPJ?#T84Wq?)7+@5Ym6e#%`36c0RtAKyiSC6oAm&TLMZf2cB?ggdac>kpuqTi2 zIOH)A4yI8Yskj{yZ2$wHp`IuKL9mlL4}FS?f&w9rWuX^X-wSV(@5RL-A>HtYE%n{% z(o&YOI87*Fa1hwtzF;>)qSP79{|q5Hd@E?*;2>88Gch0t`vSSIin#Z-C+jY_&JV%@uTwK>Yyj2b~-z}?)^7K-nH)QZl3>8WlKz_AbwCSoZpk9L!2i~w^1 z`JDn5189TCkFG@(KD-fyLItq-g+PD-Od1Ud7HnjyWh{ zXTfA3BLPv-3wCy-mT$b9x>(*JpxBRjZtK3!pMRG&!BYiBfyDX)-h5Hu|>XREmF3M_IRlOv!cW7~P1HtzQi z71Ax*D}jqUNF0)Xr9`TMI)f)d3}QiT;@n0W1&7fKM*(O|Z||3D3$XQw9y5p-qyLq&S!uX&!!L7;=u!%gf7Cg*QMC za1%8a)+o4u#mo;i;6HRcfy=RX@1EcoKg3MRJx&vf6!F4vP35asyDJ_qoV2z!61s;_ zC`2nR5IzbG@MdbuqvkYEhk*#*Cd-i*)`n))!&XsOCwU(@h4JsoHZMtO zl81wxPuM=y5sjy2;KJ|yp6(UqASlradAxCFu{FYu?>d}7SHx$8S**fG2CGJhKYGk&6)augP{UIs%W?nQ)E5u znvhLvY;{Mo0u15&!-w%u1%atYdJ z@DrTS5!ykVSA>{u4&0Mt;UE0^{d;!54yFzu8savUd5n;XpQmbo4dU0Ydt1k*YE#4GQ!8nNs}0bzLz9*CiI=j0<;Q0e}5*f{WmK=fcd|IjRQTQUdh$T z$w25{xIn+&U6S33fFM!U9Oxtq`$JSbr+ctEe*Ikdf>y|+8qHQ%Foc#?R+fOARSq5u z(LMx?9{G~#Hyd&w)<3FVzm0a79#-e2cfpMt8{c-4eN!Tb18igt%;*K4Ir37M5HkjQ zgxaVSWeVD7rRv?G`atg1-*Nwq!qn4?uaQ|eY^ms9L!uG2eArn#AxiPmMMClcC$qdJ zqFsf7`@Wh!ni`hV7;$UNqDBT9km1Hc1y~r$t-E3CyLSxT3mwnjC6=MCKScWiwyBT8Dg#!&;)V^yu=(Tu2>AJ1eBT1!Vp&PT}=qkkXPPSIVM9U0uN$ z-*E^%JF3HRYpI>THd#eb_vFbBU0sr@s$br|mD;oCEB>`)mtDBJ7yyN?&)Tof5i})KwYB_(yK;)DaO)wsYcaoe+~TY7)uF zD?vM|8r9N^o!^?pV5ijF0@DR57ETSK(!q$rm6cs{c1Ac`(pftH8ng+_Wnc#OJW@u) zA%|wy@Nnpb7+<-=b%3^lSs8K-tc0J0QZ4l(t2HMqEmQFs@$m@iuor*a8ALbEA8?xt zV&y&=8R{~>-d0FC8gY=Mh!W^&3F0In%FL&H6M*}YsTF#Beh4Q1(PA;5+=!gmfA3cK z@bM$^U}V>?|3)wi_Yu5sHdtU@m$T~nTw+1N-i*1|w!z`y+W1cAU7SlFPaMIVBAk3T z420sMNt#_LGT>oBq;eaoVyR$$gXuW;Tn+8DAC;rXrOMdU*SZd?5YAT9*(s5sANgO} z{}863vtS(LYc!P-Q`=6IQr%ddSJ&tIfLZaQ&~rnNBU*LiMm=$&RB*BP^XFYvIUnn> zyB|M!0wA@DtSjN{4SM|GJ4DEsDb_LChef_yS}GUSGUI>Uw<%OJ3!W%kI>6pO3|S`r zLgtdi8M!w&5rD+_X#@fsm??Z0$4H$8EwUd!z6zoH+qVk{&Em5mQ<5Q)q=`jByK)w+ zYD9(P$qL161>g^6G8RS~V6+H1OIv9W-fbV%*MA6qiP+EICJQnzy_qT9@Lv3sX5F|1^7RNN;aKJW1&1~vh#`wp&3}$hNgMUw+?0FN(!N%r^DFWOL zp}M{c3<&R7@SZ1-TGGTCo0wn%JFJLI6mkh5INqJ&vpT=qS$dR2rv|Ksm}~`!hoK1T z|E{%OU>-(6u?mKUg_CW>9O%J_PRy>OQeX}Rp|x1VK%2II(m##s_=?CsU^8kqURkoc zBJF*qkI*6P6+9z=31Cp%5)_b%%1XWGHTCM*y^!}+tuWSv@MhGLX=;>rd@Reo)^u5U zd3{4eXD27th=9mZ2M8^wNB9f~1UQyeouuK9*)X}uBCH$SA_dOs!?zbt0Km=j+<6EC z>x<*$;%9DYL56^Q2s<1%UXRrxx#xxi>IEb*(9TZa9SFejc24UYFiS7(=UT(&BBq|O zaMQm(dwU_ajkbd7nwpX__4O-8|ECaFFVP9)2GJR7B1dG#nn9E-_~pw3p#tb2R5mx| z(J7&p4q_Y*DcZ$fNpJ*;&|uO3k*O@SD1AIBp#@_LFESWu3jHW6hr*eD~!A99{POg$odH=+GrFKzak407wDH9Gjc}=(&AKci(}? zhRFa6wpbQGo<>*T$Jm{ZkB`!ql>a;RMCPGLVG8vPw4O+>kO+mWp{Gav=%2iC&xa47 zReo!Wf;X!p=^pjFif$hP?cbgYGsJ6Ts%~tm1pV8296l}<03ZqxQzK9>EPF^1nO<$c z`bk~g*C>Ka?NjT{NYzV?6Ci;a%WO=ndOPXe8UcjJ)s0tP@;iGA4{;+S#9KuPPly)OroABqpx`43o zFZ3YBD2FRo1~E+Ju@F8?Lxt*vgd%*^-Ohq!!MFxSCap>8z`#vx1H{<}AXQBk@2Fv+ zM+8(9U~0#n$!mS|oTLQl9>yqE01L~Twz7y5x$ontV6Kgii<1TJ0tS4` z$cft_ff0i=WiW|iC_mX%rbB^$*(#Vx$51srRfZvir}A`%504SG8qA0L`S>)l3mrxK zKY#IJi`f!6HY@m*5u{xh{02~c_9&|zx%%}ez5F#+uP|>IUs^)kh zZ7vx_IG5+oPsN(&pO#p0+>he1UruhI%EJLES$!*{t8E}{gSHZ}6&=eVxY^O)uZ^QZ z!gT!MgQ-%48hJAwZ{J4{IWtq%sZT0lHkbHojVXpw*(Kpr%s})++Fp+gPYXh(%fw3cS7nj@Xu>5rM(zmFLV!Bm#j=odrX0*VYC= zCBR}q9K4Emmz02{!T^4j>>O0r6kOe^shsa1VZz zf|~l;t8+pgHa5f&kJNX?&z^-zYX?I`zW3tAGWzqnX>vjd_aRKWU{*4IODOCyMT~`<#?dqbdU~YPifk|bK5pP6m02aC( z<I}?%BNKq}?#-2tCjy;smv9F(jk_c0 zD=j63t$;2qqN@52@74kLLzFYBC`S^FV~y{i&_f?z-_6x8ZUB`F4vv^^UlT&cy3Jn0 zP_O5J6uT3|E`&hilahkAx9Wha^m~5>Xz1u*o3mBW3fiIRfr5T1yLiIpw);-I8*BC$ zo`vZ)_b-2!2q3H?-WGtiAC~0m>I$|Dp10srwfhK`n0a^fI$k<-AHmSaI?=$vSM2P1 zquDXE6N@*X$Vf>6a79RetvTesdguEAnov~ZZnTHWnj<(ecyU^L{lohucrzY?s(WGZ zIyjs{Lri5iHrDAeP^b9*AADZlhf5%6h8nAe?{B^Mx<08xD)%CkNG4sp4H<$&4Fozo5v#1 z8bBt1kQ>=Q?85f@huzX?kl;Q0X|KeCr#U&4mi?8)3Y=ni>)PZt`_chtyk{-#Q8_ZT zgoOPp2XKoRJubs?5MS}~kNVbaViia}jyF%v9D zlflb|4AYdCAoC4(kn0r=kA(tBB0hsK0^UdB42Fn-1)Q96ytEAp!3zs1kkX$NJeWIt zgt~_j*46*l$GJvBoriIJC?$58L>!3;8@r7-a>BHgYs;1)c25+t8HQqVS+n_fBygH_kEt{^ZkDR zEa&!~RNv@-Pd9ZdeEXd2>{>1ts^YKles~<|@JE4q7N7T3)fhNvtG-@|8{w3OcA1q( z1dAmwUsnAhSG;KL$gTQ)zt)(zg&n22HJVZOjJP%ILFe?&nj%Z`^cQ@R$CJw%ob1=` z&JhZOJoTV!?&Jp~jRWDn!#+IA%?%yuA1YWQ*p`ErIC+fH6)Yhhq z_Pk3n*NMFsNY0!1<%MMdz`&-B?uYFRbD(i)W&>@?ZG17u4?sWdR!M&3vi{wR~=TZy03r!zpve6*ekhf@>P9}2hoGRqUJm#Uzu^p zbgUFEGJqBBJl-BlVqf%VyBuPN>(|-Vw=a{TpsNv<*CebVxcS%^$qhn8W2}EZRfv{2jynlXv9=_aw z>eK~uoh;0Hkq}A)^AR5yxAtwppt$wiBIj@Ef&2>a7)+OKBhI9~=#$`+>WCSCfCn8_ zp_igXo5lXom}Rj!Tav8^NFha_CyZ<{LXa^KqzQ%V5zes^^?Up|ddnbsAQp z`D?+~m4LQ(sJp;l2K}{=loud1WSGw z3O8`C-SHE(3~4ylO+#%Nl zxdiJhc17s;AH}}HnY1aZ3q%c*$qb;UJK`p1v)SdACr@Q4mFZL*K2{=IPC`eDWX5p^ zMpRT^h|LuiOB&DdFPMThjuZkD-B&sX<42cvcqBx+<^gC#;PmsF7x7W*8ZvY`Q(yHG1m(vUxbd zuJ90`k(Do7Rkr%*erC)PMj^thlcGsm|K~bF=9?vE41sU|k;kURf0I8CT$gFyP&3Lq zf>l*7I@uUZI@H7EfNa17C;s+g5#b=_KJ2h%oZwnaWFB3eXaOwUo-BWPqA^59l;8ih zyYmIMn3!r{e6FA6Hl5fyIyWbkD)$r8z}yQpTSBZ2b1>03EokbNE@C3Jf?NG!?1$39nI*BuEIS&t|3JSy7SiW7|Z8xHBY2Dd maxX { - maxX = pts[i].X - } - if pts[i].Y > maxY { - maxY = pts[i].Y - } - voronoi, _ := d.VoronoiCell(pt) - vs := make(plotter.XYs, len(voronoi)) - for j := range vs { - vs[j].X, vs[j].Y = voronoi[j].Coordinates() - } - poly, err := plotter.NewPolygon(vs) - if err != nil { - return err - } - p.Add(poly) - } - s, err := plotter.NewScatter(pts) - if err != nil { - return err - } - p.Add(s) - // cut plot off to only show the points plus a little extra space. - xpad := (maxX - minX) * .05 - ypad := (maxY - minY) * .05 - p.X.Max = maxX + xpad - p.X.Min = minX - xpad - p.Y.Max = maxY + ypad - p.Y.Min = minY - ypad - return p.Save(10*vg.Centimeter, 10*vg.Centimeter, path) -} diff --git a/fastjet/internal/plot/voronoi_test.go b/fastjet/internal/plot/voronoi_test.go deleted file mode 100644 index 8b571496c..000000000 --- a/fastjet/internal/plot/voronoi_test.go +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright ©2017 The go-hep Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package plot - -import ( - "bytes" - "image" - "io/ioutil" - "os" - "reflect" - "testing" - - "go-hep.org/x/hep/fastjet/internal/delaunay" -) - -func TestVoronoi(t *testing.T) { - points := []*delaunay.Point{ - delaunay.NewPoint(-1.5, 3.2), - delaunay.NewPoint(1.8, 3.3), - delaunay.NewPoint(-3.7, 1.5), - delaunay.NewPoint(-1.5, 1.3), - delaunay.NewPoint(0.8, 1.2), - delaunay.NewPoint(3.3, 1.5), - delaunay.NewPoint(-4, -1), - delaunay.NewPoint(-2.3, -0.7), - delaunay.NewPoint(0, -0.5), - delaunay.NewPoint(2, -1.5), - delaunay.NewPoint(3.7, -0.8), - delaunay.NewPoint(-3.5, -2.9), - delaunay.NewPoint(-0.9, -3.9), - delaunay.NewPoint(2, -3.5), - delaunay.NewPoint(3.5, -2.25), - } - fname := "testdata/voronoi_example.png" - ref := "testdata/voronoi_golden.png" - err := Voronoi(fname, points) - if err != nil { - t.Fatal(err) - } - read := func(name string) image.Image { - raw, err := ioutil.ReadFile(name) - if err != nil { - t.Fatalf("error reading %s: %v", name, err) - } - - img, _, err := image.Decode(bytes.NewReader(raw)) - if err != nil { - t.Fatalf("error decoding %s: %v", name, err) - } - return img - } - got := read(fname) - want := read(ref) - if !reflect.DeepEqual(got, want) { - t.Fatalf("error: %s differs from reference file", fname) - } - os.Remove(fname) -}