Пример #1
0
    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()
Пример #2
0
    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_nowindow(bspline_surface):
    conf = VisMPL.VisConfig()
    vis = VisMPL.VisSurfScatter(config=conf)

    fname = conf.figure_image_filename

    multi = operations.decompose_surface(bspline_surface)
    multi.vis = vis
    multi.render(plot=False)

    assert os.path.isfile(fname)
    assert os.path.getsize(fname) > 0

    # Clean up temporary file if exists
    if os.path.isfile(conf.figure_image_filename):
        os.remove(conf.figure_image_filename)
# Set evaluation delta
surf.delta = 0.025

# Set up surface
surf.read_ctrlpts_from_txt("ex_surface02.cpt")
surf.degree_u = 3
surf.degree_v = 3
surf.knotvector_u = utilities.generate_knot_vector(surf.degree_u, 6)
surf.knotvector_v = utilities.generate_knot_vector(surf.degree_v, 6)

# Evaluate surface
surf.evaluate()

# Draw the control point grid and the evaluated surface
if render_surf:
    vis_comp = VisMPL.VisSurfScatter()
    surf.vis = vis_comp
    surf.render()

# Save control points and evaluated curve points
surf.save_surfpts_to_csv("surfpts02_orig.csv", mode='linear')
surf.save_ctrlpts_to_csv("ctrlpts02_orig.csv", mode='wireframe')

# Evaluate 1st order surface derivative at the given u and v
u = 0.2
v = 0.9
surftan = surf.tangent(u, v)
print("* Surface point at u = %.2f and v = %.2f is (%.2f, %.2f, %.2f)" %
      (u, v, surftan[0][0], surftan[0][1], surftan[0][2]))
print("* First derivative w.r.t. u is (%.2f, %.2f, %.2f)" %
      (surftan[1][0], surftan[1][1], surftan[1][2]))
Пример #5
0
    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()