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(segment.orthogonal((0, 0, 0), (1, 0, 0), 10))
|
||||||
# print(curve.curvature(np.array(([0, 0, 0], [0, 1, 1], [1, 0, 1]))))
|
# 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
|
i = 10
|
||||||
curve_points = curve.curve(
|
curve_points = curve.curve(coordinates, resolution)
|
||||||
[(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)
|
|
||||||
|
|
||||||
for coordinate in offset:
|
# offset = curve.offset(curve_points, i)
|
||||||
editor.placeBlock(coordinate, Block("blue_concrete"))
|
|
||||||
|
|
||||||
offset = curve.offset(curve_points, -i)
|
# for coordinate in offset:
|
||||||
|
# editor.placeBlock(coordinate, Block("blue_concrete"))
|
||||||
|
|
||||||
for coordinate in offset:
|
# offset = curve.offset(curve_points, -i)
|
||||||
editor.placeBlock(coordinate, Block("red_concrete"))
|
|
||||||
|
# for coordinate in offset:
|
||||||
|
# editor.placeBlock(coordinate, Block("red_concrete"))
|
||||||
|
|
||||||
for coordinate in curve_points:
|
for coordinate in curve_points:
|
||||||
editor.placeBlock(coordinate, Block("white_concrete"))
|
editor.placeBlock(coordinate, Block("white_concrete"))
|
||||||
|
|
||||||
|
###
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import numpy as np
|
import numpy as np
|
||||||
import networks.Segment as segment
|
import networks.Segment as segment
|
||||||
from scipy import interpolate
|
from scipy import interpolate
|
||||||
|
from math import sqrt
|
||||||
|
|
||||||
|
|
||||||
def curve(target_points, resolution=40):
|
def curve(target_points, resolution=40):
|
||||||
@@ -92,3 +93,14 @@ def offset(curve, distance):
|
|||||||
combined_curve.append(np.round(offset_segments[-1][1]).tolist())
|
combined_curve.append(np.round(offset_segments[-1][1]).tolist())
|
||||||
|
|
||||||
return combined_curve
|
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