diff --git a/main.py b/main.py index 6915220..4227684 100644 --- a/main.py +++ b/main.py @@ -286,8 +286,8 @@ 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))) -p = Polyline((Point2D(32, 0), Point2D(16, 16), - Point2D(16, 0), Point2D(0, 0))) +p = Polyline((Point2D(64, -20), Point2D(48, 32), + Point2D(16, 0), Point2D(0, 0), Point2D(-10, -10))) # Point2D(-1156, 378), Point2D(-1220, 359), Point2D(-1265, 290) # print(p.alpha_radii) diff --git a/networks/geometry/Polyline.py b/networks/geometry/Polyline.py index 9da658b..5cca24b 100644 --- a/networks/geometry/Polyline.py +++ b/networks/geometry/Polyline.py @@ -26,7 +26,7 @@ class Polyline: raise ValueError("The list must contain at least 4 elements.") self.vectors = [None] * self.length_polyline # v - self.lengths = [None] * self.length_polyline # l + self.lengths = [None] * (self.length_polyline - 1) # l self.unit_vectors = [None] * self.length_polyline # n self.tangente = [0] * self.length_polyline # f @@ -45,7 +45,7 @@ class Polyline: def get_radii(self): for i in range(1, self.length_polyline-1): - print(self.alpha_radii[i] * self.tangente[i], + print("\nalpha_radii, tan", 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 @@ -53,10 +53,11 @@ class Polyline: def get_centers(self): for i in range(1, self.length_polyline-1): bisector = (self.unit_vectors[i] - self.unit_vectors[i-1]) / ( - np.linalg.norm(self.unit_vectors[i] + self.unit_vectors[i-1])) + np.linalg.norm(self.unit_vectors[i] - self.unit_vectors[i-1])) + print("bi", bisector) - array = self.points[i] + sqrt(self.radii[i] - ** 2 + self.alpha_radii[i] ** 2) * bisector + array = self.points[i] + sqrt((self.radii[i] + ** 2) + (self.alpha_radii[i] ** 2)) * bisector self.centers[i] = Point2D(array[0], array[1]).round() return self.centers @@ -124,7 +125,7 @@ class Polyline: # Between two segments, there is only one angle for k in range(1, self.length_polyline-1): - dot = np.dot(self.unit_vectors[k], -self.unit_vectors[k-1]) + dot = np.dot(self.unit_vectors[k], self.unit_vectors[k-1]) self.tangente[k] = sqrt((1+dot)/(1-dot)) def _compute_alpha_radii(self): diff --git a/output_image.png b/output_image.png index 2e233fb..ea39389 100644 Binary files a/output_image.png and b/output_image.png differ