March gen: add some testing and viz capabilities
This allows to visualize easily a generated configuration, thus allowing testing
This commit is contained in:
parent
fc2f17b453
commit
62730a03b4
1 changed files with 52 additions and 0 deletions
52
tools/test_marching_cubes_generator.py
Normal file
52
tools/test_marching_cubes_generator.py
Normal file
|
@ -0,0 +1,52 @@
|
|||
import gen_marching_cubes_conf as gen
|
||||
import matplotlib.pyplot as plt
|
||||
from mpl_toolkits.mplot3d import axes3d
|
||||
import random
|
||||
|
||||
|
||||
def split_pt_list(pts):
|
||||
splitted = [[], [], []]
|
||||
for point in pts:
|
||||
for i in range(3):
|
||||
splitted[i].append(point[i])
|
||||
return splitted
|
||||
|
||||
|
||||
def pt_of_edge(edge):
|
||||
def avg(val0, val1):
|
||||
return (val0 + val1) / 2
|
||||
|
||||
vert0 = edge.vert[0]
|
||||
vert1 = edge.vert[1]
|
||||
|
||||
return (avg(vert0[0], vert1[0]),
|
||||
avg(vert0[1], vert1[1]),
|
||||
avg(vert0[2], vert1[2]))
|
||||
|
||||
|
||||
def tri_repr(tri, subplt):
|
||||
pts = [pt_of_edge(tri[i]) for i in range(3)]
|
||||
|
||||
x_val, y_val, z_val = split_pt_list(pts)
|
||||
x_val = [val + random.random() / 10**5 for val in x_val]
|
||||
y_val = [val + random.random() / 10**5 for val in y_val]
|
||||
|
||||
subplt.plot_trisurf(x_val, y_val, z_val)
|
||||
|
||||
|
||||
def display_case(tri_cube):
|
||||
figure = plt.figure()
|
||||
subplt = figure.add_subplot(111, projection='3d')
|
||||
|
||||
actives = split_pt_list(list(tri_cube.activated))
|
||||
inactives = split_pt_list(list(tri_cube.non_activated))
|
||||
|
||||
subplt.scatter3D(actives[0], actives[1], actives[2],
|
||||
c='r', marker='o')
|
||||
subplt.scatter3D(inactives[0], inactives[1], inactives[2],
|
||||
c='b', marker='.')
|
||||
|
||||
for triangle in tri_cube.triangles:
|
||||
tri_repr(triangle, subplt)
|
||||
|
||||
plt.show()
|
Loading…
Reference in a new issue