Rename files
This commit is contained in:
58
networks/geometry/Strip.py
Normal file
58
networks/geometry/Strip.py
Normal file
@@ -0,0 +1,58 @@
|
||||
import networks.geometry.curve_tools as curve_tools
|
||||
import networks.geometry.segment_tools as segment_tools
|
||||
import numpy as np
|
||||
|
||||
|
||||
class Strip:
|
||||
def __init__(self, points, reshape=True, spacing_distance=10):
|
||||
self.points = np.array(points)
|
||||
if reshape:
|
||||
self.resolution, self.length = curve_tools.resolution_distance(
|
||||
self.points, spacing_distance=spacing_distance)
|
||||
self.curve = curve_tools.curve(self.points, self.resolution)
|
||||
else: # Point can also be given already in curved form
|
||||
self.curve = self.points
|
||||
|
||||
def compute_curvature(self):
|
||||
self.curvature = curve_tools.curvature(self.curve)
|
||||
|
||||
def compute_surface_perpendicular(self, width, normals):
|
||||
self.offset_left = curve_tools.offset(self.curve, width, normals)
|
||||
self.offset_right = curve_tools.offset(self.curve, -width, normals)
|
||||
self.perpendicular_segment = []
|
||||
|
||||
for i in range(len(self.offset_left)):
|
||||
self.perpendicular_segment.append(segment_tools.discrete_segment(
|
||||
self.offset_left[i], self.offset_right[i], pixel_perfect=False))
|
||||
|
||||
self.surface = []
|
||||
|
||||
for i in range(len(self.perpendicular_segment)-1):
|
||||
self.surface.append([])
|
||||
for j in range(len(self.perpendicular_segment[i])):
|
||||
# Hypothesis
|
||||
max_length_index = i
|
||||
min_length_index = i+1
|
||||
proportion = len(
|
||||
self.perpendicular_segment[min_length_index])/len(self.perpendicular_segment[max_length_index])
|
||||
|
||||
# Reverse order if wrong hypothesis
|
||||
if proportion > 1:
|
||||
max_length_index = i+1
|
||||
min_length_index = i
|
||||
proportion = len(
|
||||
self.perpendicular_segment[min_length_index])/len(self.perpendicular_segment[max_length_index])
|
||||
|
||||
self.surface[i].append([])
|
||||
for k in range(len(self.perpendicular_segment[max_length_index])-1):
|
||||
self.surface[i][j].append(segment_tools.discrete_segment(
|
||||
self.perpendicular_segment[max_length_index][k], self.perpendicular_segment[min_length_index][round(k * proportion)], pixel_perfect=False))
|
||||
|
||||
def compute_surface_parallel(self, inner_range, outer_range, resolution, normals):
|
||||
self.left_side = []
|
||||
self.right_side = []
|
||||
for current_range in range(inner_range * resolution, outer_range * resolution):
|
||||
self.left_side.append(curve_tools.offset(
|
||||
self.curve, current_range/resolution, normals))
|
||||
self.right_side.append(curve_tools.offset(
|
||||
self.curve, -current_range/resolution, normals))
|
||||
Reference in New Issue
Block a user