- Basic 2D projection
This commit is contained in:
44
mesh_modules/interactor_mesh.py
Normal file
44
mesh_modules/interactor_mesh.py
Normal file
@@ -0,0 +1,44 @@
|
||||
# Draw simple boundary based on the lines and depth
|
||||
|
||||
def generate_mesh(lines: list, z_origin: float, depth: float, symmetric: bool = True):
|
||||
if symmetric:
|
||||
depth1 = depth/2
|
||||
depth2 = -depth/2
|
||||
origin = create_3D(lines, z_origin, depth1)
|
||||
extruded = create_3D(lines, z_origin, depth2)
|
||||
else:
|
||||
origin = create_3D(lines, z_origin, 0)
|
||||
extruded = create_3D(lines, z_origin, depth)
|
||||
|
||||
vert_lines = create_vert_lines(origin, extruded)
|
||||
|
||||
print(f"Result = {origin} / {extruded} / {vert_lines}")
|
||||
|
||||
return origin + vert_lines + extruded
|
||||
|
||||
|
||||
def create_vert_lines(origin, extruded):
|
||||
vert_lines = []
|
||||
for d3_point_o, d3point_e in zip(origin, extruded):
|
||||
for sp3d_1, sp3d_2 in zip(d3_point_o, d3point_e):
|
||||
new_line = sp3d_1, sp3d_2
|
||||
vert_lines.append(new_line)
|
||||
return vert_lines
|
||||
|
||||
|
||||
def create_3D(lines, z_origin, depth):
|
||||
line_loop = []
|
||||
for coordinate2d in lines:
|
||||
start, end = coordinate2d
|
||||
|
||||
xs,ys = start
|
||||
coordinate3d_start_orig = xs, ys, z_origin + depth
|
||||
|
||||
xe, ye = end
|
||||
coordinate3d_end_orig = xe, ye, z_origin + depth
|
||||
|
||||
line3d_orig = coordinate3d_start_orig, coordinate3d_end_orig
|
||||
|
||||
line_loop.append(line3d_orig)
|
||||
|
||||
return line_loop
|
||||
Reference in New Issue
Block a user