Module sverchok.utils.marching_squares
Expand source code
def make_contour(samples_x, samples_y, min_x, x_size, min_y, y_size, z, contour, make_faces=False, connect_bounds=False, u_max=None, v_max=None):
n = len(contour)
verts = []
vert_0_bound = None
vert_n_bound = None
for i, (x0, y0) in enumerate(contour):
if make_faces:
if x0 <= 0:
if i == 0:
vert_0_bound = 'A'
elif i == n-1:
vert_n_bound = 'A'
elif y0 <= 0:
if i == 0:
vert_0_bound = 'D'
elif i == n-1:
vert_n_bound = 'D'
elif x0 >= samples_x-1:
if i == 0:
vert_0_bound = 'C'
elif i == n-1:
vert_n_bound = 'C'
elif y0 >= samples_y-1:
if i == 0:
vert_0_bound = 'B'
elif i == n-1:
vert_n_bound = 'B'
x = min_x + x_size * x0
y = min_y + y_size * y0
#if(i==0 or i==n-1): ?
if( u_max is not None):
if(x0==samples_x-1):
if(x!=u_max): # for catching situation in debugging
x = u_max
if(v_max is not None):
if(y0==samples_y-1):
if(y!=v_max):
y = v_max
vertex = (x, y, z)
verts.append(vertex)
has_boundary = vert_0_bound is not None or vert_n_bound is not None
is_inner = not has_boundary
make_face = (is_inner or connect_bounds) and (make_faces and vert_0_bound == vert_n_bound)
edges = [(i, i+1) for i in range(n-1)]
if make_face:
edges.append((n-1, 0))
if make_face:
face = list(range(n))
faces = [face]
else:
faces = []
return verts, edges, faces
def make_contours(samples_x, samples_y, min_x, x_size, min_y, y_size, z, contours, make_faces=False, connect_bounds=False, u_max=None, v_max=None):
verts = []
edges = []
faces = []
for contour in contours:
new_verts, new_edges, new_faces = make_contour(samples_x, samples_y, min_x, x_size, min_y, y_size, z, contour, make_faces=make_faces, connect_bounds=connect_bounds, u_max=u_max, v_max=v_max)
verts.append(new_verts)
edges.append(new_edges)
faces.append(new_faces)
return verts, edges, faces
Functions
def make_contour(samples_x, samples_y, min_x, x_size, min_y, y_size, z, contour, make_faces=False, connect_bounds=False, u_max=None, v_max=None)
-
Expand source code
def make_contour(samples_x, samples_y, min_x, x_size, min_y, y_size, z, contour, make_faces=False, connect_bounds=False, u_max=None, v_max=None): n = len(contour) verts = [] vert_0_bound = None vert_n_bound = None for i, (x0, y0) in enumerate(contour): if make_faces: if x0 <= 0: if i == 0: vert_0_bound = 'A' elif i == n-1: vert_n_bound = 'A' elif y0 <= 0: if i == 0: vert_0_bound = 'D' elif i == n-1: vert_n_bound = 'D' elif x0 >= samples_x-1: if i == 0: vert_0_bound = 'C' elif i == n-1: vert_n_bound = 'C' elif y0 >= samples_y-1: if i == 0: vert_0_bound = 'B' elif i == n-1: vert_n_bound = 'B' x = min_x + x_size * x0 y = min_y + y_size * y0 #if(i==0 or i==n-1): ? if( u_max is not None): if(x0==samples_x-1): if(x!=u_max): # for catching situation in debugging x = u_max if(v_max is not None): if(y0==samples_y-1): if(y!=v_max): y = v_max vertex = (x, y, z) verts.append(vertex) has_boundary = vert_0_bound is not None or vert_n_bound is not None is_inner = not has_boundary make_face = (is_inner or connect_bounds) and (make_faces and vert_0_bound == vert_n_bound) edges = [(i, i+1) for i in range(n-1)] if make_face: edges.append((n-1, 0)) if make_face: face = list(range(n)) faces = [face] else: faces = [] return verts, edges, faces
def make_contours(samples_x, samples_y, min_x, x_size, min_y, y_size, z, contours, make_faces=False, connect_bounds=False, u_max=None, v_max=None)
-
Expand source code
def make_contours(samples_x, samples_y, min_x, x_size, min_y, y_size, z, contours, make_faces=False, connect_bounds=False, u_max=None, v_max=None): verts = [] edges = [] faces = [] for contour in contours: new_verts, new_edges, new_faces = make_contour(samples_x, samples_y, min_x, x_size, min_y, y_size, z, contour, make_faces=make_faces, connect_bounds=connect_bounds, u_max=u_max, v_max=v_max) verts.append(new_verts) edges.append(new_edges) faces.append(new_faces) return verts, edges, faces