def plotBsplineSurface(self, pts, corsequences, lsagsequences=[], rsagsequences=[], degree=3, visualization_type=-1, side=2): # side = 0 (Left) | side = 1 (Right) if side == 0: lsurface = self.createBsplineSurface(pts=pts, corsequences=corsequences, sagsequences=lsagsequences) # Set visualization component if visualization_type == 0: lsurface.delta = 0.01 vis_comp = VisMPL.VisSurfScatter() elif visualization_type == 1: vis_comp = VisMPL.VisSurface() elif visualization_type == 2: vis_comp = VisMPL.VisSurfWireframe() else: vis_comp = VisMPL.VisSurfTriangle() lsurface.vis = vis_comp # Render the surface lsurface.render() else: rsurface = self.createBsplineSurface(pts=pts, corsequences=corsequences, sagsequences=rsagsequences) # Set visualization component if visualization_type == 0: rsurface.delta = 0.01 vis_comp = VisMPL.VisSurfScatter() elif visualization_type == 1: vis_comp = VisMPL.VisSurface() elif visualization_type == 2: vis_comp = VisMPL.VisSurfWireframe() else: vis_comp = VisMPL.VisSurfTriangle() rsurface.vis = vis_comp # Render the surface rsurface.render()
def plotNURBSSurfaces(self, left_pts, right_pts, corsequences, lsagsequences, rsagsequences, degree=3, visualization_type=-1): left_surface = self.createNURBSSurface(pts=left_pts, corsequences=corsequences, sagsequences=lsagsequences) right_surface = self.createNURBSSurface(pts=right_pts, corsequences=corsequences, sagsequences=rsagsequences) # Create a MultiSurface surfaces = Multi.MultiSurface() surfaces.add(left_surface) surfaces.add(right_surface) # Set visualization component if visualization_type == 0: surfaces.delta = 0.01 vis_comp = VisMPL.VisSurfScatter() elif visualization_type == 1: vis_comp = VisMPL.VisSurface() elif visualization_type == 2: vis_comp = VisMPL.VisSurfWireframe() else: vis_comp = VisMPL.VisSurfTriangle() surfaces.vis = vis_comp # Render the surface surfaces.render()
def test_surf_multi_fig_save(bspline_surface): conf = VisMPL.VisConfig() vis = VisMPL.VisSurfWireframe(config=conf) fname = "test-multi_surface.png" multi = operations.decompose_surface(bspline_surface) multi.vis = vis multi.render(filename=fname, plot=False) assert os.path.isfile(fname) assert os.path.getsize(fname) > 0 # Clean up temporary file if exists if os.path.isfile(fname): os.remove(fname)
points = np.array([[math.cos(u)*math.cos(v), math.cos(v)*math.sin(u),math.sin(v)] for u in np.linspace(0,2*math.pi,num=30) for v in np.linspace(-math.pi/2,math.pi/2,num=30)]) # print(points) # fig = plt.figure() # ax = Axes3D(fig) # ax.plot(points[:,0],points[:,1],points[:,2],'o',markersize=2) # plt.show() surf = approximate_surface(points.tolist(),30,30,3,3,ctrlpts_size_u=10,ctrlpts_size_v=10) surf.delta = 0.05 surf.vis = VisMPL.VisSurfWireframe() # surf.render() div = 100 evalpts = np.array([surf.evaluate_list([(u,v) for v in np.linspace(0,1,div)]) for u in np.linspace(0,1,div)]) print(evalpts.shape) fig = plt.figure() ax = Axes3D(fig) # all_points = np.reshape(evalpts,(div*div,3)) # ax.plot(all_points[:,0],all_points[:,1],all_points[:,2],'o',markersize=2) # points33 = np.reshape(evalpts[10:13,10:13,:],(9,3)) # ax.plot(points33[:,0],points33[:,1],points33[:,2],'o',markersize=2)
os.chdir(os.path.dirname(os.path.realpath(__file__))) # Create a NURBS surface instance surf = NURBS.Surface() # Set evaluation delta surf.delta = 0.025 # Set up surface surf.read_ctrlpts_from_txt("ex_surface03.cptw") surf.degree_u = 1 surf.degree_v = 2 surf.knotvector_u = [0, 0, 1, 1] surf.knotvector_v = [0, 0, 0, 0.25, 0.25, 0.5, 0.5, 0.75, 0.75, 1, 1, 1] # Evaluate surface surf.evaluate() # Draw the control point grid and the evaluated surface if render_surf: vis_comp = VisMPL.VisSurfWireframe() surf.vis = vis_comp surf.render() # Save control points and evaluated curve points surf.save_surfpts_to_csv("surfpts03_orig.csv", mode='wireframe') surf.save_ctrlpts_to_csv("ctrlpts03_orig.csv") # Good to have something here to put a breakpoint pass
def plotBsplineSurfaces(self, left_pts, right_pts, corsequences, lsagsequences, rsagsequences, degree=3, visualization_type=-1): """ Create B-spline surface Parameters ---------- left_pts: list List of tuples with 3D points that represents the left diaphragmatic surface right_pts: list List of tuples with 3D points that represents the right diaphragmatic surface corsequences: list List of int with the coronal sequences available lsagsequences: list List of int with the sagittal sequences available from the left lung rsagsequences: list List of int with the sagittal sequences available from the right lung degree: int B-spline surface's Degree (Default = 2) visualization_type: int -1: (Default) Wireframe plot for the control points and triangulated plot for the surface points 0: Wireframe plot for the control points and scatter plot for the surface points 1: Triangular mesh plot for the surface and wireframe plot for the control points grid 2: Scatter plot for the control points and wireframe for the surface points """ left_surface = self.createBsplineSurface(pts=left_pts, corsequences=corsequences, sagsequences=lsagsequences) right_surface = self.createBsplineSurface(pts=right_pts, corsequences=corsequences, sagsequences=rsagsequences) # Create a MultiSurface surfaces = Multi.MultiSurface() surfaces.add(left_surface) surfaces.add(right_surface) # Set visualization component if visualization_type == 0: surfaces.delta = 0.01 vis_comp = VisMPL.VisSurfScatter() elif visualization_type == 1: vis_comp = VisMPL.VisSurface() elif visualization_type == 2: vis_comp = VisMPL.VisSurfWireframe() else: vis_comp = VisMPL.VisSurfTriangle() surfaces.vis = vis_comp # Render the surface surfaces.render()
def surf_render(surf, delta=0.05): surf.delta = delta surf.vis = VisMPL.VisSurfWireframe() surf.render()