From 2619aeee3892e02b2be19bc99a7a5ad3fd93c6f8 Mon Sep 17 00:00:00 2001 From: Xeon0X Date: Sat, 15 Jun 2024 21:36:52 +0200 Subject: [PATCH] Fix length issue on last segment --- networks/geometry/Polyline.py | 7 +++---- networks/roads_2/Roads.py | 7 ++++++- output_image.png | Bin 3532 -> 3419 bytes 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/networks/geometry/Polyline.py b/networks/geometry/Polyline.py index e77f3e2..ea801de 100644 --- a/networks/geometry/Polyline.py +++ b/networks/geometry/Polyline.py @@ -126,7 +126,6 @@ class Polyline: list[Segment2D]: List of segments in order. """ # Get first segment. - # segments index is 0, corresponding to the first points_array to the first point ([0]) of the first arc (acrs_intersections[1]). # First arc index is 1 because index 0 is None due to fix list lenght. Is it a good choice? self.segments[1] = Segment2D(Point2D.from_arrays( self.points_array[0]), self.acrs_intersections[1][0]) @@ -136,10 +135,10 @@ class Polyline: self.segments[i] = Segment2D(Point2D(self.acrs_intersections[i][0].x, self.acrs_intersections[i][0].y), Point2D( self.acrs_intersections[i-1][-1].x, self.acrs_intersections[i-1][-1].y)) - # Get last segment. Index is -2 because last index -1 should be None due to the same list lenght. + # Why -3? # For n points, there are n-1 segments. - # self.segments[-2] = Segment2D(self.acrs_intersections[-2][2], Point2D.from_arrays( - # self.points_array[-1])) + self.segments[-3] = Segment2D(self.acrs_intersections[-2][2], Point2D.from_arrays( + self.points_array[-1])) return self.segments diff --git a/networks/roads_2/Roads.py b/networks/roads_2/Roads.py index da70e72..2faa7c1 100644 --- a/networks/roads_2/Roads.py +++ b/networks/roads_2/Roads.py @@ -20,6 +20,7 @@ class Road: self.polyline = Polyline(Point3D.to_2d(coordinates, 'y')) self._surface() + self._projection() def _surface(self): # Segments @@ -49,7 +50,11 @@ class Road: 180+i])[0].coordinates, Block("black_concrete"))) def _projection(self): - pass + nearest_points_to_reference = [] + for i in range(len(self.coordinates)): + nearest_points_to_reference.append(Point3D.insert_3d([Point3D.to_2d([self.coordinates[i]], 'y')[0].nearest( + self.polyline.total_line_output)], 'y', [self.coordinates[i].y])) + print(nearest_points_to_reference) def place(self): editor = Editor(buffering=True) diff --git a/output_image.png b/output_image.png index 596dfb9efe0667d3405ff7396c1f4eda58d229c4..ce0197cef5ba2cde93773113656cdf5e7b322b31 100644 GIT binary patch delta 3416 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