From a84a57d90140700c3195d467d57f3a0b53913dda Mon Sep 17 00:00:00 2001 From: Xeon0X Date: Wed, 12 Jun 2024 21:38:22 +0200 Subject: [PATCH] Radii in polylines still to big --- main.py | 9 ++++++--- networks/geometry/Polyline.py | 4 ++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/main.py b/main.py index 77410ef..5b090e4 100644 --- a/main.py +++ b/main.py @@ -275,8 +275,11 @@ block_list = ["blue_concrete", "red_concrete", "green_concrete", # p = Polyline((Point2D(-1183, 528), Point2D(-1138, 481), # Point2D(-1188, 451), Point2D(-1152, 416))) -p = Polyline((Point2D(-1225, 468), Point2D(-1138, 481), - Point2D(-1188, 451), Point2D(-1152, 416))) +# p = Polyline((Point2D(-1225, 468), Point2D(-1138, 481), +# Point2D(-1188, 451), Point2D(-1176, 409), Point2D(-1179, 399))) + +p = Polyline((Point2D(-1206, 414), Point2D(-1176, 409), + Point2D(-1188, 451), Point2D(-1138, 481), Point2D(-1225, 500))) # Point2D(-1156, 378), Point2D(-1220, 359), Point2D(-1265, 290) # print(p.alpha_radii) @@ -288,7 +291,7 @@ print(radius) print(center) print(p.lengths) -y = 280 +y = 160 for i in range(len(p.coordinates)-1): if p.coordinates[i] != None: diff --git a/networks/geometry/Polyline.py b/networks/geometry/Polyline.py index c1831d7..9da658b 100644 --- a/networks/geometry/Polyline.py +++ b/networks/geometry/Polyline.py @@ -45,6 +45,8 @@ class Polyline: def get_radii(self): for i in range(1, self.length_polyline-1): + print(self.alpha_radii[i] * self.tangente[i], + self.alpha_radii[i], self.tangente[i]) self.radii[i] = round(self.alpha_radii[i] * self.tangente[i]) return self.radii @@ -79,6 +81,7 @@ class Polyline: for i in range(start_index + 1, end_index - 1): # Radii for internal segments alpha_a, alpha_b, current_radius = self._radius_balance(i) + if current_radius < minimum_radius: minimum_radius, minimum_index = current_radius, i alpha_low, alpha_high = alpha_a, alpha_b @@ -106,6 +109,7 @@ class Polyline: """ Returns the radius that balances the radii on either end segement i. """ + alpha_a = min(self.lengths[i-1], (self.lengths[i]*self.tangente[i+1]) / (self.tangente[i] + self.tangente[i+1])) alpha_b = min(self.lengths[i+1], self.lengths[i]-alpha_a)