Add curve resolution from spacing distance
This commit is contained in:
23
main.py
23
main.py
@@ -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"))
|
||||
|
||||
###
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user