From 28097c2f2e60414e44a63b2e0eb6cd3e15fbc11f Mon Sep 17 00:00:00 2001 From: Pascal Lais Date: Wed, 11 Mar 2020 22:34:35 +0100 Subject: [PATCH] Fix algorithm.py and draw final result --- algorithm.py | 57 ++++++++++++++++++++++++++++++++-------------------- 1 file changed, 35 insertions(+), 22 deletions(-) diff --git a/algorithm.py b/algorithm.py index 5b67015..fb78445 100644 --- a/algorithm.py +++ b/algorithm.py @@ -105,6 +105,8 @@ class NearestNeighborsSweep(Algorithm): for pnt in self._sss["points"]: if self._sss["mindist"] is None: self._sss["mindist"] = linesegment.LineSegment(pnt, event).get_length() + self._result["points"][0] = pnt + self._result["points"][1] = event elif (event.get_y() - self._sss["mindist"]) < \ pnt.get_y() < (event.get_y() + self._sss["mindist"]): distance = linesegment.LineSegment(pnt, event).get_length() @@ -154,27 +156,38 @@ class NearestNeighborsSweep(Algorithm): def draw(self, canvas, width, height, max_x, max_y): """Draw the algorithm state on a canvas""" canvas.delete("all") - for pnt in self._input: - if len(self._es) > 0 and pnt == self._es[0]: - cur_x, cur_y = self._es[0].draw(canvas, width, height, max_x, max_y, "#0000FF") - canvas.create_line(cur_x, 0, cur_x, height, fill="#0000FF") - if self._sss["mindist"]: - canvas.create_line(cur_x - (self._sss["mindist"] * width / max_x), 0, \ - cur_x - (self._sss["mindist"] * width / max_x), height, fill="#0000FF") - canvas.create_line(cur_x - (self._sss["mindist"] * width / max_x), \ - cur_y - (self._sss["mindist"] * height / max_y), \ - cur_x, cur_y - (self._sss["mindist"] * height / max_y), fill="#0000FF") - canvas.create_line(cur_x - (self._sss["mindist"] * width / max_x), \ - cur_y + (self._sss["mindist"] * height / max_y), \ - cur_x, cur_y + (self._sss["mindist"] * height / max_y), fill="#0000FF") + if self._running: + for pnt in self._input: + if len(self._es) > 0 and pnt == self._es[0]: + cur_x, cur_y = self._es[0].draw(canvas, width, height, max_x, max_y, "#0000FF") + canvas.create_line(cur_x, 0, cur_x, height, fill="#0000FF") + if self._sss["mindist"]: + canvas.create_line(cur_x - (self._sss["mindist"] * width / max_x), 0, \ + cur_x - (self._sss["mindist"] * width / max_x), height, fill="#0000FF") + canvas.create_line(cur_x - (self._sss["mindist"] * width / max_x), \ + cur_y - (self._sss["mindist"] * height / max_y), \ + cur_x, cur_y - (self._sss["mindist"] * height / max_y), fill="#0000FF") + canvas.create_line(cur_x - (self._sss["mindist"] * width / max_x), \ + cur_y + (self._sss["mindist"] * height / max_y), \ + cur_x, cur_y + (self._sss["mindist"] * height / max_y), fill="#0000FF") + else: + canvas.create_line(0, 0, 0, max_y, fill="#0000FF") + if pnt in self._result["points"]: + pnt.draw(canvas, width, height, max_x, max_y, "#FF0000") else: - canvas.create_line(0, 0, 0, max_y, fill="#0000FF") - if pnt in self._result["points"]: - pnt.draw(canvas, width, height, max_x, max_y, "#FF0000") - else: - pnt.draw(canvas, width, height, max_x, max_y) - if self._result["points"][0]: - linesegment.LineSegment( \ - self._result["points"][0], self._result["points"][1] \ - ).draw(canvas, width, height, max_x, max_y, "#FF0000") + pnt.draw(canvas, width, height, max_x, max_y) + if self._result["points"][0]: + linesegment.LineSegment( \ + self._result["points"][0], self._result["points"][1] \ + ).draw(canvas, width, height, max_x, max_y, "#FF0000") + else: + for pnt in self._input: + if pnt in self._result["points"]: + pnt.draw(canvas, width, height, max_x, max_y, "#FF3333") + else: + pnt.draw(canvas, width, height, max_x, max_y, "#222222") + if self._result["points"][0]: + linesegment.LineSegment( \ + self._result["points"][0], self._result["points"][1] \ + ).draw(canvas, width, height, max_x, max_y, "#FF0000")