Untitled
plain_text
a month ago
1.4 kB
1
Indexable
Never
import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D def loft_between_polylines(polyline1, polyline2): if len(polyline1) != len(polyline2): raise ValueError("Both polylines must have the same number of vertices") num_vertices = len(polyline1) # Convert the vertices to numpy arrays for easier manipulation polyline1 = np.array(polyline1) polyline2 = np.array(polyline2) # Create a parameter that goes from 0 to 1 t = np.linspace(0, 1, num_vertices) # Interpolate between the two polylines using the parameter t interpolated_vertices = (1 - t[:, np.newaxis]) * polyline1 + t[:, np.newaxis] * polyline2 return interpolated_vertices # Define two example polylines as lists of vertices polyline1 = [(0, 0, 0), (1, 2, 1), (2, 3, 2), (3, 2, 3)] polyline2 = [(0, 0, 5), (1, 1, 6), (2, 2, 7), (3, 3, 8)] # Perform lofting between the polylines interpolated_vertices = loft_between_polylines(polyline1, polyline2) # Plot the result in 3D fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.plot(*polyline1.T, marker='o', label='Polyline 1') ax.plot(*polyline2.T, marker='o', label='Polyline 2') ax.plot(*interpolated_vertices.T, marker='o', label='Interpolated') ax.set_xlabel('X') ax.set_ylabel('Y') ax.set_zlabel('Z') ax.legend() plt.show()