Add curve resolution from spacing distance

This commit is contained in:
2024-04-25 19:09:51 +02:00
parent 25dc6665b0
commit 1c454947dc
2 changed files with 27 additions and 8 deletions

23
main.py
View File

@@ -27,18 +27,25 @@ editor = Editor(buffering=True)
# print(segment.orthogonal((0, 0, 0), (1, 0, 0), 10))
# print(curve.curvature(np.array(([0, 0, 0], [0, 1, 1], [1, 0, 1]))))
coordinates = [(-854, 77, -210), (-770, 89, -207), (-736, 75, -184)]
resolution = curve.resolution_from_spacing(coordinates, 10)
i = 10
curve_points = curve.curve(
[(317, 90, 686), (291, 95, 686), (271, 100, 705), (250, 95, 715), (234, 90, 692), (220, 146, 607), (185, 158, 598), (146, 90, 596), (142, 70, 674)], resolution=40)
offset = curve.offset(curve_points, i)
curve_points = curve.curve(coordinates, resolution)
for coordinate in offset:
editor.placeBlock(coordinate, Block("blue_concrete"))
# offset = curve.offset(curve_points, i)
offset = curve.offset(curve_points, -i)
# for coordinate in offset:
# editor.placeBlock(coordinate, Block("blue_concrete"))
for coordinate in offset:
editor.placeBlock(coordinate, Block("red_concrete"))
# offset = curve.offset(curve_points, -i)
# for coordinate in offset:
# editor.placeBlock(coordinate, Block("red_concrete"))
for coordinate in curve_points:
editor.placeBlock(coordinate, Block("white_concrete"))
###

View File

@@ -1,6 +1,7 @@
import numpy as np
import networks.Segment as segment
from scipy import interpolate
from math import sqrt
def curve(target_points, resolution=40):
@@ -92,3 +93,14 @@ def offset(curve, distance):
combined_curve.append(np.round(offset_segments[-1][1]).tolist())
return combined_curve
def resolution_from_spacing(target_points, spacing_distance):
length = 0
for i in range(len(target_points) - 1):
length += sqrt(
((target_points[i][0] - target_points[i + 1][0]) ** 2)
+ ((target_points[i][1] - target_points[i + 1][1]) ** 2)
+ ((target_points[i][2] - target_points[i + 1][2]) ** 2)
)
return round(length / spacing_distance)