From 86e1c5dbc76720312fca34cdb34f08ed0bfdcb61 Mon Sep 17 00:00:00 2001 From: BuildTools Date: Sat, 1 Aug 2020 17:06:05 +0200 Subject: [PATCH] kga vanavond mss nog verder schrijven maar main methode is nu volledig gedocumenteerd --- .vs/opdracht2/DesignTimeBuild/.dtbcache.v2 | Bin 147752 -> 147752 bytes .vs/opdracht2/v16/.suo | Bin 135680 -> 142336 bytes Logica/PolygonManipulatie.cs | 14 +- opdracht2/MainWindow.xaml.cs | 183 ++++++++------------- 4 files changed, 75 insertions(+), 122 deletions(-) diff --git a/.vs/opdracht2/DesignTimeBuild/.dtbcache.v2 b/.vs/opdracht2/DesignTimeBuild/.dtbcache.v2 index db4833eec5e2f920386016f4ae1774513434889d..efc49bb4dc746e24d1f470e73a034cb5b4132df1 100644 GIT binary patch delta 5879 zcma)AeNa@_73VA9pDW9rA~^HDS!7x!dl1cewZ?u^rE;sZ8Q^Y$mOrWx|Y#Dw(;!Ed%~L+^gv7;ApXF+8Zwy!TsxQ#T$QK4p9jRoIkEMS706UI zfHPcR5JyQ#e6)HF80h-8R#K`yD!L9g01u$ONB&MMoCAZ84FU2L2XGx<3uKxapw6D5 zH21_YRTNlwsP5#;!6;HWCI?O$fD|cMRGrD8NvD^oWU>SFz{!F1*y%0(IZ<`yzwt&# z=y7*`!^$Q8749aFx6ZS~-$K{6OI+tRf7An{B=oSHL3q&)!|9&C_Hn)O&yN$sW>J!8 zI-9Jvr$5K^;>L~%T!)Fh=d?ib)vAco&OfUmlhgq2E`W&*d24&Ut2kXh;zcuNa9@y_j48uD})6qi&n$DFzI4uog0_ij}jnH!FQ z-~ktFiS*SIN%WTwkMn$m^J+l* zE#-;N+j&&t$uHJ(`wzO7GXMPQQ5QEWu)G%1#Uo$8qaliGCr}gmLLm6UWJs6x1H8g@ zpX7~&XpNrTkj-|J~G!q^a*kJOh610XvJ zl^gF2fe``quswqbnVk$JXwyQv{A+SfOmk!@Zrqv~Y|PgIjb_D8 z7923vMOH$}(L*9+FON*+#-9-w9aMGyFgO~WUdVh*e=qa<&@VDPrk^kzF7U1zsZf9x zZhx0ypyFzx$p#cG(ZL$@x?s2&FKxn`3bj; zfUo*5_N$ihbl$^U96p-$49zIm!)sI6GYUF5?DR4~@X=`KC1s&O3N#`am7HUtL_-v% zAAs2%kSBGHhf91zBnS*$oJ&l=qmVL$P3fRAkOH}Vn(VAIJhF3{^>4qd`IAqN+eCc$~K zT8-{xD5R_fH6lkn(DU0!B?om)VQx}1G!}yXbf|a=&V)mgsOjt=Tv`KZxN#07;wwe4 zP31nuNn(R}IgnbF@L||B75+&4DnL&U?MufG7lQ%&N?6|gghSDLPS`vh-Xaxh4BMx} zF0KpNKy``hba~REU7g86p^2?PHkZL`T-Dyb+^^cFWw4K|Qj4c;SF!@>f@e$Fjge9g zFOzv{GCW-l2Z^H1$;nTz9n@i$jk)z&Ig5DJZ&>&~dm5IJg&Zbqrt4Sw#1G(guF-6; zlX$sFJ8z`Q;WOZt*|3gFG5!5ita}EwaC5%60zM`yIXbadO*a={51MB>$n~ldzqiMKMU`2@=H%My0!RgD`a3(EhOOmg)oqI{3`*A=R-WA z7jkf8CHwU1eJ%FQhv&(UIYQVYNZQT1G^G5NQ(WwgWI}r()1jggQW+w6Q2|X#VbGXR^*2rK;n65g^j)g&Zzmh4dbwjSKtPUIE*ekzy#{ha=N<-I7 zR(Bo!p9z*PgeSu?mM6Dh8^gva>==`9g-_flTtDH>?NYzk*RhigcH z#ooK$mA9#iX@74V)82G99ur=G4^uE4Yh?3zC%5`qAEaYZHMH{zPoB^3@`5PO=BHIH zKlqF#!IIzLhmE`xl85y_aRJv7_zN$@@_c@Zr@K6wpW?D&v$7W5wUCWp*0N$>|0DQX zP`vp=S4-Hp9L7f8^Wf)oFiB7j%OMLYG+&0{W6J6qt3CBC`M&!47)6^>2;E)}4q<9& zjVMT98H^O>L?V%9ErYdj;KGjOkde+=o5{8n^^YKrcT4b0cyif@A>TD(R(M)jJ;~7m z4RJvM5?fRq)qOMXR7xMb37MsW;+_n(k+M}APPhPRg5q__A#1$=bE7N?`xkdubP>)A zihEeiQQq;%q=~rY6E?5^;uE+gD0Vubhj2qDR11p5mx6>jTrkAg!mc3YhzMCRid~q3 z$>vL77nD03Rk{h86T^#PkrV{wlQEP<%Vn?#iglqv5f)>EA;ubBj7*Rf6SclZV$&7S le~${n_A4+fdR^p7W4a(CUMP-O9o5&NyinSms`=@J{{uuqdsYAd delta 7403 zcmb7Jdr(x@9rjxmTs7c=JfzDTRx}c3VVB({DvIGL3Jg9`6qnt_V5ks;Oqvuy)7n(q zCeBH7YLhh3nAS(D#G80E8jI;neFPM1jG=*POdF{|TQw#|4YB9CfMjMp=lb97%=df0 z&)vRZ%=QgqUM!yFu-hGJZnMQ^OR?FU74B4*&1N@StkyKMDb-w&>UO(Lsg>?@i^-mr z;&xU#U9NPu-C9{;wx*g=EtOkdoYZ7Xvs-L#m)lioNpYm5ThpwS=@m}9JvH5CNjF<8 z6?SJzs@arob5>TG&DIK&&6aMln%$L*!fditj0&6GP*q)DTvxN&?W`|qsIP6P&#kLz zs2x@P*rR0&*ShQ0mSwtrShc2XeoaH2(_L2LuB};HR_nn(Lf4-_F!=%#Nt@4D;>03j z@q>_s$IVkMBAm?8v>TVJWuL?}3Ye;`uWN9RQcW~uO0s%0lHy0Hvmr@ZqYcye-gTz5 z$**&?=O;~BgCc2H!1aW||5ty4Qfa_^qsH@}Z1RhjBDPiG9z2n}^=3cv2*yvO`VMF( z6gK3#>vJ5{)fEos6FD{2E_WS0X+pU4;UAW1ki!K^g*zqyg?vo&&QcBLaxv624Ur_| z&zCTVi<4q@#{ijpO!=N28qDKk68Bmmaza-QbHcABW?(L#+0nPB10`Gx-I|AZDSO{T zA|R=i-@zg-FDYyPQxITC_kqum#brZV3lQ?gwReFcE=~$Ov>8~y#gK#VeIiH|+E|7# z(sB5S!OUFWZjcuL#Q+rZId5rSCs2?iA88wA8Y^kv|Iiote5N;!%A%ll9=i<8=dzKy zPsBsuWy#PHD5?4$p;Q}*IQqLR zHdAi&oD*1oP(B;e7JSqR`x*&Qqe+43?7ruT{I547b z-V|CIvl0fWyCPY(POu_avVQktQ8=X2cM3!pa{5k`TnZc#I!5O}q*5pb zdPj#4y50v4L8VY=@jRCDEn=8ZdRU7FLGTo2q4aTI96{qS$6zljNEtov3nN|QhXFx# zd04iL#z$BuVA(qw2@1=8UBm**{tw1lb&u|hPU<);nE z74<{HrZ}-VUW!6zxgXQmyp0<+_ja!2L#P*R8S{;LL2d@TpR3y=@vFH(X z)0g7#v4FR{IUa1NE*UNzuMw9Mz;1?nJ;!^*uli%EyeyH)6j|Of718pOQ=r$VKz3s> zS3706gwZ`oxJ0hKcK_Z%3U`Fjqsa)O|9S-5Mx>%Qi^-PuSo*C6L4WK{22jgYfOH;X zx0?yCliyqKFJC$0{(;iWpx6*m5R6VG*>kx$0F!OGdl4ruH@ll z3{=cMkC#-S*~C16)qMH=R{V9u9PsMv=AF^>k`4RCxL{J=InEQrfHaJu19rS2iX>ao zV*sU(Uw6!$Zewm=pI#(L;Hx{$75Jc`l`u zQ!4CyI3)7O<=%+96-vveu}rAVf|g#&!g%V+MgzYPzsbe{K7u_p>=P6{eKQwlv61gM z_R7#Nz_15~c*PC_&CACR=wQ{n?5qT!+d~Oxvb>C60j!#K1f;4 zDO=9P3Krep7RZF?e$c2jmFE7HEV!lzN zqkp7sWs7kM+rM@=clUogxf78@ssKL!xg+d9rqvgEfl&6$qpo%h~!U z@D)2Dj|+s$?1Y;G<2+Sw*{vtpvD4UvF;iUC)heH|8O;QGyaI{F0#!0hr`X7!;>1J7 zWvcKcPS}n4s-Ra-!C;zOv#QGJNLCCeRYN6z;ly)VETOSg2sZG(KMZ?^9()|(gKvnN z{Bp5KOgn5f7Kp)$9kNt~A89>8WcF@nI}euSiH@-Bm>(fEHO3M7UA diff --git a/.vs/opdracht2/v16/.suo b/.vs/opdracht2/v16/.suo index 270b26eba3e3e65018eaee80820359792a3acb43..1ea3b6910b6b60a8b91bb42ca94fc47a217ad4a4 100644 GIT binary patch delta 6702 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 delta 5446 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 F`zK(m`8EIm diff --git a/Logica/PolygonManipulatie.cs b/Logica/PolygonManipulatie.cs index 375d6a3..a79e8d1 100644 --- a/Logica/PolygonManipulatie.cs +++ b/Logica/PolygonManipulatie.cs @@ -13,7 +13,7 @@ namespace Logica public JsonReader JsonReader; public PolygonManipulatie(JsonReader jsonReader) { - JsonReader = jsonReader; + JsonReader = jsonReader; //haal datalaag binnen } public List GetPolygons() @@ -31,17 +31,7 @@ namespace Logica return JsonReader._polygons.Find(punten => punten.Naam == naam); } - public List GetTrianglesPolygon(PolygonPunten polygon, double scaleX - = 1, double scaleY = 1, double epsilonPercet = 0) - { - double grootsteAfstandX = Math.Abs(polygon.MaximumX - polygon.MinimumX); - double grootsteAfstandY = Math.Abs(polygon.MaximumY - polygon.MinimumY); - double epsilon = ((grootsteAfstandX + grootsteAfstandY) / 2) * epsilonPercet; - polygon.Punten = Peuker(polygon.Punten, epsilon); - polygon = ScalePolygon(polygon, scaleX, scaleY); - return TriangulatePolygon(polygon); - } - + //oude schaalmethodes public PolygonPunten ScalePolygon(PolygonPunten polygon, double scaleX, double scaleY, double offsetX = 180, double offsetY = 180) { double maxX = polygon.MaximumX - polygon.MinimumX; diff --git a/opdracht2/MainWindow.xaml.cs b/opdracht2/MainWindow.xaml.cs index 0db7a86..a32fa55 100644 --- a/opdracht2/MainWindow.xaml.cs +++ b/opdracht2/MainWindow.xaml.cs @@ -34,9 +34,6 @@ namespace opdracht2 public partial class MainWindow : Window { Canvas c; - List f; - List el; - List buffer; ListBox l; CheckBox triangulate; CheckBox scale; @@ -46,99 +43,50 @@ namespace opdracht2 JsonReader j; public MainWindow() { - //todo logica toevoegen als object - //todo datalaag toevoegen als object en passen naar logica - - f = new List(); - el = new List(); - buffer = new List(); InitializeComponent(); - c = (Canvas)this.FindName("someCanvas"); - peukerPercent = (Slider)this.FindName("PeukerSlider"); - CompositionTarget.Rendering += DoUpdates; - l = (ListBox)this.FindName("lb"); + c = (Canvas)this.FindName("someCanvas"); //vind canvas en link het aan object. zo kan later in functies deze aangeroepen worden + peukerPercent = (Slider)this.FindName("PeukerSlider"); // vind slider voor peuker percent waarde (wordt later gebruikt in functies) + l = (ListBox)this.FindName("lb"); //vind listbox waar landen in gaan komen + + //vind checkboxen die verantwoordelijk zijn voor triangulation, peuker en scaling triangulate = (CheckBox)this.FindName("Triangulate"); peuker = (CheckBox)this.FindName("Peuker"); scale = (CheckBox)this.FindName("Scale"); + + Debug.Write("done"); } - private void DoUpdates(object sender, EventArgs e) - { - if (f.Count > 0) - { - Debug.WriteLine("--- ADDING NEW POLYGON FROM LIST (COUNT: " + f.Count + ")"); - Debug.WriteLine(f[0].ToString()); - c.Children.Add(f[0]); - Debug.WriteLine(("ADDED POLYGON")); - f.RemoveAt(0); - Debug.WriteLine(("REMOVED POLYGON")); - //Thread.Sleep(80); - } - } - private Polygon makePolygon(PolygonPunten polygonPunten) - { - PointCollection punten = new PointCollection(); - foreach (Punt p in polygonPunten.Punten) - { - punten.Add(p.ToPoint()); - } - Polygon polygon = new Polygon(); - polygon.Points = punten; - polygon.StrokeThickness = 1; - - - // deze code zorgt ervoor dat de driehoeken duidelijker zijn op de afbeelding door de kleur willekeurig te selecteren - Random random = new Random(); - Type brushType = typeof(Brushes); - PropertyInfo[] properties = brushType.GetProperties(); - int randomIndex = random.Next(properties.Length); - Brush willekeurigeBrush = (Brush) properties[randomIndex].GetValue(null, null); - polygon.Fill = willekeurigeBrush; - polygon.Stroke = willekeurigeBrush; - return polygon; - } - - //zoom https://stackoverflow.com/a/44593026 - private void Button_Click(object sender, RoutedEventArgs e) - { - if (f.Count > 0) - { - buffer.Add(f[0]); - f.RemoveAt(0); - } - - } + //zoom algoritme da ooit gebruikt geweest is (zit mss niet in deze versie, te lang geleden om te herinneren) https://stackoverflow.com/a/44593026 private void LoadFile_Click(object sender, RoutedEventArgs e) { + //openfiledialog om json file in te lezen OpenFileDialog openFileDialog = new OpenFileDialog(); if (openFileDialog.ShowDialog() == true) { - //TODO remove - //Tuple, List> t = GeoJsonParser.TriangulateJsonData(File.ReadAllText(openFileDialog.FileName), c.Width, c.Height); - //f = GeoJsonParser.TriangulateJsonData(File.ReadAllText(openFileDialog.FileName), 200, 200); - j = new JsonReader(openFileDialog.FileName); - el = new List(); - pm = new PolygonManipulatie(j); + j = new JsonReader(openFileDialog.FileName); //dit is een datalaag object dat verantwoordelijk is voor geojson om te zetten naar de zelfgemaakte klassen + pm = new PolygonManipulatie(j); //dit is de logica laag instantie } foreach (object o in pm.GetPolygons()) { - try { l.Items.Add(o); } catch (Exception) { }; + //voeg alle landen toe aan de list + try { l.Items.Add(o); } catch (Exception) { Debug.WriteLine("error adding item"); }; } foreach (object o in pm.GetMultiPolygons()) { - try { l.Items.Add(o); } catch (Exception) { }; + //voeg alle landen toe aan de list deel 2 + try { l.Items.Add(o); } catch (Exception) { Debug.WriteLine("error adding item"); }; } + + + + //voor zoom algo var st = new ScaleTransform(); c.RenderTransform = st; - foreach (Ellipse eli in el) - { - c.Children.Add(eli); - } c.MouseWheel += (sender, e) => { @@ -153,45 +101,59 @@ namespace opdracht2 st.ScaleY /= 2; } }; + + + } private void lb_SelectionChanged(object sender, SelectionChangedEventArgs e) { //TODO zorg ervoor dat als meerdere items geselecteerd worden, we een scaling methode hebben voor meerdere (wss gebruik van list) //zodat we een 1 lijst kunnen gebruiken voor alle polygons + // + + + + + //als een land geselecteerd wordt in lijst runned deze functie + + + //is er meer dan 1 land geselecteerd if (lb.SelectedItems.Count >1) { - c.Children.Clear(); - List mpps = new List(); - foreach (Object o in lb.SelectedItems) + c.Children.Clear(); // haal oude afbeeldingen uit canvas + List mpps = new List(); //verander polygons in multipolygons met 1 polygon er in (zo kunnen we zelfde bewerking op alle polygons toepassen) + foreach (Object o in lb.SelectedItems) //loop doorheen geselecteerde items { if (o.GetType().Name == "PolygonPunten" ) { - PolygonPunten p = (PolygonPunten)o; + PolygonPunten p = (PolygonPunten)o; //als het een polygonpunt object is, zet om naar multipolygon mpps.Add(p.ToMultiPolygonPunten()); } else { - mpps.Add((MultiPolygonPunten)o); + mpps.Add((MultiPolygonPunten)o); //multipolygons kunenn gewoon in de lijst toegevoegd worden } } - //peuker implementatie moet ook nog gebeuren, code is er al, maar wanneer moet deze aangeroepen worden - if (scale.IsChecked == true) mpps = pm.ScaleMultiPolygons(mpps, c.Width/2, c.Height/2, c.Width/2, c.Height/2); + + //scale de polygon als de checkbox aan staat + if (scale.IsChecked == true) mpps = pm.ScaleMultiPolygons(mpps, 10000, 10000, 0, 0); foreach(MultiPolygonPunten mp in mpps) { MultiPolygonPunten mps = null; + //peuker (puntvermindering) wordt hier bekeken en uitgevoerd als nodig. percentage gaat van 0 - 100, maar moet gaan van 0 - .1 daarom /1000; if (peuker.IsChecked == true) mps = pm.Peuker(mp, peukerPercent.Value / 1000); - else mps = mp; - if (triangulate.IsChecked == true) //kan blkbr ook null zijn, raar + else mps = mp; //geen peuker dus gewoon zelfde mp gebruiken (mp = multipolygon) + if (triangulate.IsChecked == true) //check of triangulation nodig is. (kan niet gewoon triangulate.IsChecked want dit geeft ook null soms { - foreach(PolygonPunten pp in mps.PolygonPunten) + foreach(PolygonPunten pp in mps.PolygonPunten) //loop doorheen polygons in multipolygon { - foreach(PolygonPunten ppd in pm.TriangulatePolygon(pp)) + foreach(PolygonPunten ppd in pm.TriangulatePolygon(pp)) // loop doorheen driehoeken in polygon { - c.Children.Add(getPolygon(ppd)); + c.Children.Add(getPolygon(ppd)); // voeg driehoeken toe aan canvas } } } - else + else //geen triangulation dus voeg gewoon polygons toe aan canvas { foreach (Polygon p in getPolygon(mp)) { @@ -200,49 +162,48 @@ namespace opdracht2 } } } - else if (lb.SelectedItems.Count == 1) + else if (lb.SelectedItems.Count == 1) //als er maar 1 land geselecteerd is { - switch (lb.SelectedItem.GetType().Name) + switch (lb.SelectedItem.GetType().Name) //check of multipolygon of polygon { - case "MultiPolygonPunten": - Debug.WriteLine(lb.SelectedItem.GetType().Name); - c.Children.Clear(); - MultiPolygonPunten mp = (MultiPolygonPunten)lb.SelectedItem; - if (scale.IsChecked == true) mp = pm.ScaleMultiPolygon(mp, 100, 100, 0, 0); - if (peuker.IsChecked == true) mp = pm.Peuker(mp, peukerPercent.Value/1000); - //hier ervoor zorgen dat scaling, triangulation etc gebeurt door gebruik van logica layer functies te callen - foreach (PolygonPunten pp in mp.PolygonPunten) + case "MultiPolygonPunten": // als multipolygon + Debug.WriteLine(lb.SelectedItem.GetType().Name); // voor debug redenen schrijf naam naar console + c.Children.Clear(); // delete alle vorige afbeeldingen + MultiPolygonPunten mp = (MultiPolygonPunten)lb.SelectedItem; //haal multipolygon uit lijst + if (scale.IsChecked == true) mp = pm.ScaleMultiPolygon(mp, 10000, 10000, 0, 0); //schaal multipolygon + if (peuker.IsChecked == true) mp = pm.Peuker(mp, peukerPercent.Value/1000); // als peuker (puntvermindering) moet gebeuren, doe dit hier + foreach (PolygonPunten pp in mp.PolygonPunten) //loop doorheen polygons in multipolygon { - if(triangulate.IsChecked == true) + if(triangulate.IsChecked == true) //als deze getriangulate moeten worden { - foreach (PolygonPunten ppd in pm.TriangulatePolygon(pp)) + foreach (PolygonPunten ppd in pm.TriangulatePolygon(pp)) // loop doorheen driehoeken in triangulated polygon { - c.Children.Add(getPolygon(ppd)); + c.Children.Add(getPolygon(ppd)); //voeg driehoek toe aan canvas } - } else + } else //niet getriangulate { - c.Children.Add(getPolygon(pp)); + c.Children.Add(getPolygon(pp)); // voeg polygon toe aan canvas } } break; - case "PolygonPunten": + case "PolygonPunten": //in geval polygon Debug.WriteLine(lb.SelectedItem.GetType().Name); - c.Children.Clear(); - PolygonPunten p = (PolygonPunten)lb.SelectedItem; - if (scale.IsChecked == true) p = pm.ScalePolygon(p, 10000, 10000, 0, 0); - if (peuker.IsChecked == true) p = pm.Peuker(p, peukerPercent.Value / 1000); - if (triangulate.IsChecked == true) + c.Children.Clear(); //delete alle vorige afbeeldingen + PolygonPunten p = (PolygonPunten)lb.SelectedItem; // haal land uit lijst + if (scale.IsChecked == true) p = pm.ScalePolygon(p, 10000, 10000, 0, 0); // schaal polygon + if (peuker.IsChecked == true) p = pm.Peuker(p, peukerPercent.Value / 1000); // peuker (puntvermindering) + if (triangulate.IsChecked == true) //triangulation check { - foreach(PolygonPunten pp in pm.TriangulatePolygon(p)) + foreach(PolygonPunten pp in pm.TriangulatePolygon(p)) // loop doorheen driehoeken { - c.Children.Add(getPolygon(pp)); + c.Children.Add(getPolygon(pp)); //voeg driehoeken toe } } else { - c.Children.Add(getPolygon(p)); + c.Children.Add(getPolygon(p)); //voeg polygon toe } @@ -251,7 +212,7 @@ namespace opdracht2 } } else { - c.Children.Clear(); + c.Children.Clear(); // verwijder alles (als niks geselecteerd is) } Debug.WriteLine("finished"); @@ -259,6 +220,7 @@ namespace opdracht2 private List getPolygon(MultiPolygonPunten mp) { + //zet multipolygon om naar polygon object (kan deze niet buiten deze klasse gebruiken List lijst = new List(); foreach(PolygonPunten p in mp.PolygonPunten) { @@ -268,6 +230,7 @@ namespace opdracht2 } private Polygon getPolygon(PolygonPunten p) { + //zet polygon om naar polygon object (kan deze niet buiten deze klasse gebruiken Polygon returnWaarde = new Polygon(); PointCollection puntCollectie = new PointCollection(); foreach(Punt punt in p.Punten) @@ -278,7 +241,7 @@ namespace opdracht2 returnWaarde.StrokeThickness = 1; - // deze code zorgt ervoor dat de driehoeken duidelijker zijn op de afbeelding door de kleur willekeurig te selecteren + // deze code bepaald kleur van de polygon Random random = new Random(); Type brushType = typeof(Brushes); PropertyInfo[] properties = brushType.GetProperties();