From 143a5742350b5ebe5bc9503ecc84bdb12eb1328a Mon Sep 17 00:00:00 2001 From: Xeon0X Date: Thu, 13 Jun 2024 00:01:11 +0200 Subject: [PATCH] Fix thick bresenham --- main.py | 44 +++++++++++++++++++-------------- networks/geometry/Polyline.py | 4 +-- networks/geometry/Segment2D.py | 20 +++++++++------ output_image.png | Bin 40117 -> 5757 bytes 4 files changed, 40 insertions(+), 28 deletions(-) diff --git a/main.py b/main.py index a626f58..6ef1751 100644 --- a/main.py +++ b/main.py @@ -1,4 +1,5 @@ +from networks.geometry.Enums import LINE_OVERLAP, LINE_THICKNESS_MODE from PIL import Image, ImageDraw import matplotlib.pyplot as plt from networks.geometry.Point3D import Point3D @@ -286,14 +287,18 @@ block_list = ["blue_concrete", "red_concrete", "green_concrete", # p = Polyline((Point2D(-1225, 468), Point2D(-1138, 481), # Point2D(-1188, 451), Point2D(-1176, 409), Point2D(-1179, 399))) -w = 1000 +w = 250 -n_points = 10 +n_points = 5 min_val, max_val = -w, w random_points = [Point2D(random.randint(min_val, max_val), random.randint( min_val, max_val)) for _ in range(n_points)] + +# random_points = (Point2D(-75, -75), Point2D(0, -75), Point2D(75, 75), +# Point2D(75, -50), Point2D(-50, 50), Point2D(0, 0)) + p = Polyline(random_points) # Point2D(-1156, 378), Point2D(-1220, 359), Point2D(-1265, 290) @@ -301,37 +306,40 @@ p = Polyline(random_points) radius = p.get_radii() center = p.get_centers() - print(radius) print(center) print(p.lengths) -y = 160 +y = 200 +ww = 40 width, height = 2*w, 2*w image = Image.new('RGB', (width, height), 'white') draw = ImageDraw.Draw(image) -for i in range(len(center)): - if center[i]: - circle = Circle(center[i], radius[i], radius[i]+1) - for j in range(len(circle.coordinates)-1): - editor.placeBlock( - (circle.coordinates[j].x, y, circle.coordinates[j].y), Block("white_concrete")) - draw.point((circle.coordinates[j].x+w, - w-circle.coordinates[j].y), fill='black') - for i in range(len(p.coordinates)-1): if p.coordinates[i] != None: - s = Segment3D(Point3D(p.coordinates[i].x, y, p.coordinates[i].y), Point3D( - p.coordinates[i+1].x, y, p.coordinates[i+1].y)) + s = Segment2D(Point2D(p.coordinates[i].x, p.coordinates[i].y), Point2D( + p.coordinates[i+1].x, p.coordinates[i+1].y)) + s.compute_thick_segment(ww, LINE_THICKNESS_MODE.MIDDLE) + print(s.coordinates) for j in range(len(s.coordinates)-1): - editor.placeBlock( - s.coordinates[j].coordinate, Block("cyan_concrete")) + # editor.placeBlock( + # s.coordinates[j].coordinate, Block("cyan_concrete")) draw.point((s.coordinates[j].x+w, - w-s.coordinates[j].z), fill='red') + w-s.coordinates[j].y), fill='red') + + +for i in range(len(center)): + if center[i]: + circle = Circle(center[i], radius[i]-ww/2+1, radius[i]+ww/2+1) + for j in range(len(circle.coordinates)-1): + # editor.placeBlock( + # (circle.coordinates[j].x, y, circle.coordinates[j].y), Block("white_concrete")) + draw.point((circle.coordinates[j].x+w, + w-circle.coordinates[j].y), fill='black') image.save('output_image.png') diff --git a/networks/geometry/Polyline.py b/networks/geometry/Polyline.py index 5cca24b..145fb32 100644 --- a/networks/geometry/Polyline.py +++ b/networks/geometry/Polyline.py @@ -98,8 +98,8 @@ class Polyline: alpha_low, alpha_high = alpha_a, self.alpha_radii[end_index] # Assign alphas at ends of selected segment - self.alpha_radii[minimum_index] = alpha_low - self.alpha_radii[minimum_index+1] = alpha_high + self.alpha_radii[minimum_index] = alpha_low/1.5 + self.alpha_radii[minimum_index+1] = alpha_high/1.5 # Recur on lower segments self._alpha_assign(start_index, minimum_index) diff --git a/networks/geometry/Segment2D.py b/networks/geometry/Segment2D.py index fd35b7c..2038335 100644 --- a/networks/geometry/Segment2D.py +++ b/networks/geometry/Segment2D.py @@ -27,6 +27,7 @@ class Segment2D: >>> Segment2D(Point2D(0, 0), Point2D(10, 15)) """ + start = start.copy() end = end.copy() @@ -62,10 +63,10 @@ class Segment2D: start.y += step_y if (overlap == LINE_OVERLAP.MINOR): self.coordinates.append( - Point2D(start.x - step_x, start.y)) + Point2D(start.copy().x - step_x, start.copy().y)) error -= delta_2x error += delta_2y - self.coordinates.append(start) + self.coordinates.append(start.copy()) else: error = delta_2x - delta_y while (start.y != end.y): @@ -77,12 +78,12 @@ class Segment2D: start.x += step_x if (overlap == LINE_OVERLAP.MINOR): self.coordinates.append( - Point2D(start.x, start.y - step_y)) + Point2D(start.copy().x, start.copy().y - step_y)) error -= delta_2y error += delta_2x self.coordinates.append(start.copy()) - def compute_thick_segment(self, start: Point2D, end: Point2D, thickness: int, thickness_mode: LINE_THICKNESS_MODE): + def compute_thick_segment(self, thickness: int, thickness_mode: LINE_THICKNESS_MODE): """Bresenham with thickness. From https://github.com/ArminJo/Arduino-BlueDisplay/blob/master/src/LocalGUI/ThickLine.hpp @@ -96,11 +97,14 @@ class Segment2D: >>> self.compute_thick_segment(self.start, self.end, self.thickness, self.thickness_mode) """ + start = self.start.copy() + end = self.end.copy() + delta_y = end.x - start.x delta_x = end.y - start.y swap = True - if delta_x < 0: + if (delta_x < 0): delta_x = -delta_x step_x = -1 swap = not swap @@ -156,7 +160,7 @@ class Segment2D: overlap = LINE_OVERLAP.MAJOR error += delta_2y - self.compute_segmen_overlap(start, end, overlap) + self.compute_segment_overlap(start, end, overlap) else: if swap: @@ -176,7 +180,7 @@ class Segment2D: error -= delta_2y error += delta_2x - self.compute_segmen_overlap(start, end, LINE_OVERLAP.NONE) + self.compute_segment_overlap(start, end, LINE_OVERLAP.NONE) error = delta_2x - delta_y for i in range(thickness, 1, -1): @@ -190,7 +194,7 @@ class Segment2D: overlap = LINE_OVERLAP.MAJOR error += delta_2x - self.compute_segmen_overlap(start, end, overlap) + self.compute_segment_overlap(start, end, overlap) def perpendicular(self, distance: int) -> List[Point2D]: """Compute perpendicular points from both side of the segment placed at start level. diff --git a/output_image.png b/output_image.png index 9a70f46ace7c1b83d9cb8ad9cd0df772042de339..df9422f8fe707286e718084b7324378f49052d62 100644 GIT binary patch literal 5757 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
  • eJ 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

    sFy+t^U0 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 BoD2W}