Radii in polylines still to big
This commit is contained in:
9
main.py
9
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:
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user