def vertices_triangles(a, b, c): edge_list = [] vert_list = [[0, 0, c], [0, 0, c], [0, 0, c], [0, 0, c]] my_polydata = vtk.vtkPolyData() #Initialize the polydata for v in v_range: z_new = c * np.cos(np.deg2rad(v)) n = len(vert_list) vert_list.append([a * np.sin(np.deg2rad(v)), 0.0, z_new]) vert_list.append([0.0, b * np.sin(np.deg2rad(v)), z_new]) vert_list.append([-1 * a * np.sin(np.deg2rad(v)), 0.0, z_new]) vert_list.append([0.0, -1 * b * np.sin(np.deg2rad(v)), z_new]) edge_list.append([n - 4, n, n - 3]) edge_list.append([n, n + 1, n - 3]) edge_list.append([n - 3, n + 1, n - 2]) edge_list.append([n + 1, n + 2, n - 2]) edge_list.append([n - 2, n + 2, n - 1]) edge_list.append([n + 2, n + 3, n - 1]) edge_list.append([n - 1, n + 3, n - 4]) edge_list.append([n + 3, n, n - 4]) #Converting the list to an array my_vertices = np.array(vert_list) my_triangles = np.array(edge_list) #Converting the vertices and faces to a Polydata ut_vtk.set_polydata_vertices(my_polydata, my_vertices) ut_vtk.set_polydata_triangles(my_polydata, my_triangles.astype('i8')) # Setting colors for the sphere sphere_vertices = ut_vtk.get_polydata_vertices(my_polydata) colors = sphere_vertices * 255 ut_vtk.set_polydata_colors(my_polydata, colors) sphere_actor = ut_vtk.get_actor_from_polydata(my_polydata) return sphere_actor
""" add color based on vertices position """ cube_vertices = ut_vtk.get_polydata_vertices(cube_polydata) colors = cube_vertices * 255 ut_vtk.set_polydata_colors(cube_polydata, colors) print("new surface colors") print(ut_vtk.get_polydata_colors(cube_polydata)) """ Visualize surfaces """ # get vtkActor cube_actor = ut_vtk.get_actor_from_polydata(cube_polydata) # renderer and scene renderer = window.Renderer() renderer.add(cube_actor) renderer.set_camera(position=(10, 5, 7), focal_point=(0.5, 0.5, 0.5)) renderer.zoom(3) # display # window.show(renderer, size=(600, 600), reset_camera=False) window.record(renderer, out_path='cube.png', size=(600, 600)) """ .. figure:: cube.png :align: center An example of a simple surface visualized with DIPY.
vert1 = (resolution + 1) * hor + ver vert2 = (resolution + 1) * (hor + 1) + ver vert3 = (resolution + 1) * hor + (ver + 1) vert4 = (resolution + 1) * (hor + 1) + (ver + 1) edge_list.append([vert1, vert2, vert3]) edge_list.append([vert2, vert4, vert3]) #four points are (hor, ver) (hor+1, ver) (hor, ver+1) (hor+1, ver+1) # make_quad(11*hor + ver, 11*(hor+1) + ver, 11*hor + (ver+1), 11*(hor+1) + (ver+1)) my_vertices = np.array(vert_list) my_triangles = np.array(edge_list) import dipy.viz.utils as ut_vtk from dipy.viz import window import vtk my_polydata = vtk.vtkPolyData() ut_vtk.set_polydata_vertices(my_polydata, my_vertices) ut_vtk.set_polydata_triangles(my_polydata, my_triangles.astype('i8')) sphere_vertices = ut_vtk.get_polydata_vertices(my_polydata) colors = sphere_vertices * 255 ut_vtk.set_polydata_colors(my_polydata, colors) sphere_actor = ut_vtk.get_actor_from_polydata(my_polydata) # renderer and scene renderer = window.Renderer() renderer.add(sphere_actor) window.show(renderer, size=(600, 600), reset_camera=False)
add color based on vertices position """ cube_vertices = ut_vtk.get_polydata_vertices(cube_polydata) colors = cube_vertices * 255 ut_vtk.set_polydata_colors(cube_polydata, colors) print("new surface colors") print(ut_vtk.get_polydata_colors(cube_polydata)) """ Visualize surfaces """ # get vtkActor cube_actor = ut_vtk.get_actor_from_polydata(cube_polydata) # renderer and scene renderer = window.Renderer() renderer.add(cube_actor) renderer.set_camera(position=(10, 5, 7), focal_point=(0.5, 0.5, 0.5)) renderer.zoom(3) # display # window.show(renderer, size=(600, 600), reset_camera=False) window.record(renderer, out_path='cube.png', size=(600, 600)) """ .. figure:: cube.png :align: center