Fix algorithm.py and draw final result
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2020-03-11 22:34:35 +01:00
parent 867745fe4e
commit 28097c2f2e

View File

@@ -105,6 +105,8 @@ class NearestNeighborsSweep(Algorithm):
for pnt in self._sss["points"]: for pnt in self._sss["points"]:
if self._sss["mindist"] is None: if self._sss["mindist"] is None:
self._sss["mindist"] = linesegment.LineSegment(pnt, event).get_length() 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"]) < \ elif (event.get_y() - self._sss["mindist"]) < \
pnt.get_y() < (event.get_y() + self._sss["mindist"]): pnt.get_y() < (event.get_y() + self._sss["mindist"]):
distance = linesegment.LineSegment(pnt, event).get_length() distance = linesegment.LineSegment(pnt, event).get_length()
@@ -154,27 +156,38 @@ class NearestNeighborsSweep(Algorithm):
def draw(self, canvas, width, height, max_x, max_y): def draw(self, canvas, width, height, max_x, max_y):
"""Draw the algorithm state on a canvas""" """Draw the algorithm state on a canvas"""
canvas.delete("all") canvas.delete("all")
for pnt in self._input: if self._running:
if len(self._es) > 0 and pnt == self._es[0]: for pnt in self._input:
cur_x, cur_y = self._es[0].draw(canvas, width, height, max_x, max_y, "#0000FF") if len(self._es) > 0 and pnt == self._es[0]:
canvas.create_line(cur_x, 0, cur_x, height, fill="#0000FF") cur_x, cur_y = self._es[0].draw(canvas, width, height, max_x, max_y, "#0000FF")
if self._sss["mindist"]: canvas.create_line(cur_x, 0, cur_x, height, fill="#0000FF")
canvas.create_line(cur_x - (self._sss["mindist"] * width / max_x), 0, \ if self._sss["mindist"]:
cur_x - (self._sss["mindist"] * width / max_x), height, fill="#0000FF") canvas.create_line(cur_x - (self._sss["mindist"] * width / max_x), 0, \
canvas.create_line(cur_x - (self._sss["mindist"] * width / max_x), \ cur_x - (self._sss["mindist"] * width / max_x), height, fill="#0000FF")
cur_y - (self._sss["mindist"] * height / max_y), \ canvas.create_line(cur_x - (self._sss["mindist"] * width / max_x), \
cur_x, cur_y - (self._sss["mindist"] * height / max_y), fill="#0000FF") cur_y - (self._sss["mindist"] * height / max_y), \
canvas.create_line(cur_x - (self._sss["mindist"] * width / max_x), \ cur_x, cur_y - (self._sss["mindist"] * height / max_y), fill="#0000FF")
cur_y + (self._sss["mindist"] * height / max_y), \ canvas.create_line(cur_x - (self._sss["mindist"] * width / max_x), \
cur_x, cur_y + (self._sss["mindist"] * height / max_y), fill="#0000FF") 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: else:
canvas.create_line(0, 0, 0, max_y, fill="#0000FF") pnt.draw(canvas, width, height, max_x, max_y)
if pnt in self._result["points"]: if self._result["points"][0]:
pnt.draw(canvas, width, height, max_x, max_y, "#FF0000") linesegment.LineSegment( \
else: self._result["points"][0], self._result["points"][1] \
pnt.draw(canvas, width, height, max_x, max_y) ).draw(canvas, width, height, max_x, max_y, "#FF0000")
if self._result["points"][0]: else:
linesegment.LineSegment( \ for pnt in self._input:
self._result["points"][0], self._result["points"][1] \ if pnt in self._result["points"]:
).draw(canvas, width, height, max_x, max_y, "#FF0000") 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")