예제 #1
0
 def __init__(self, frame, size=.5):
     s = size
     p = ((s, s, s), (-s, s, s), (-s, -s, s), (s, -s, s), (s, -s, -s),
          (s, s, -s), (-s, s, -s), (-s, -s, -s))
     n = ((0, 0, 1), (1, 0, 0), (0, 1, 0), (-1, 0, 1), (0, -1, 0), (0, 0,
                                                                    -1))
     c = ((1, 1, 1), (1, 1, 0), (1, 0, 1), (0, 1, 1), (1, 0, 0), (0, 0, 1),
          (0, 1, 0), (0, 0, 0))
     vertices = np.array([(p[0], n[0], c[0]), (p[1], n[0], c[1]),
                          (p[2], n[0], c[2]), (p[3], n[0], c[3]),
                          (p[0], n[1], c[0]), (p[3], n[1], c[3]),
                          (p[4], n[1], c[4]), (p[5], n[1], c[5]),
                          (p[0], n[2], c[0]), (p[5], n[2], c[5]),
                          (p[6], n[2], c[6]), (p[1], n[2], c[1]),
                          (p[1], n[3], c[1]), (p[6], n[3], c[6]),
                          (p[7], n[3], c[7]), (p[2], n[3], c[2]),
                          (p[7], n[4], c[7]), (p[4], n[4], c[4]),
                          (p[3], n[4], c[3]), (p[2], n[4], c[2]),
                          (p[4], n[5], c[4]), (p[7], n[5], c[7]),
                          (p[6], n[5], c[6]), (p[5], n[5], c[5])],
                         dtype=[('position', 'f4', 3), ('normal', 'f4', 3),
                                ('color', 'f4', 3)])
     self.buffer = VertexBuffer(vertices)
     self.trackball = Trackball(65, 135, 1.25, 2.5)
     self.frame = frame
     self.frame.push(self)
예제 #2
0
def ShowMesh2D(hmesh, nim, cmap, mode):

    cm = gp.colormap.Grey
    if cmap == 'Hot':
        cm = gp.colormap.Hot
    elif cmap == 'Fire':
        cm = gp.colormap.Fire
    elif cmap == 'Ice':
        cm = gp.colormap.Ice
    elif cmap == 'IceAndFire':
        cm = gp.colormap.IceAndFire

    wire = True
    fill = True
    if mode == 'Wire':
        fill = False
    elif mode == 'Fill':
        wire = False

    mesh = Mesh2D(hmesh, nim, cm)

    fig = figure(size=(800, 800))
    trackball = Trackball(0, 0, 2)
    fig.push(mesh)
    fig.show()
예제 #3
0
class Cube(object):
    def __init__(self, frame, size=.5):
        s = size
        p = ((s, s, s), (-s, s, s), (-s, -s, s), (s, -s, s), (s, -s, -s),
             (s, s, -s), (-s, s, -s), (-s, -s, -s))
        n = ((0, 0, 1), (1, 0, 0), (0, 1, 0), (-1, 0, 1), (0, -1, 0), (0, 0,
                                                                       -1))
        c = ((1, 1, 1), (1, 1, 0), (1, 0, 1), (0, 1, 1), (1, 0, 0), (0, 0, 1),
             (0, 1, 0), (0, 0, 0))
        vertices = np.array([(p[0], n[0], c[0]), (p[1], n[0], c[1]),
                             (p[2], n[0], c[2]), (p[3], n[0], c[3]),
                             (p[0], n[1], c[0]), (p[3], n[1], c[3]),
                             (p[4], n[1], c[4]), (p[5], n[1], c[5]),
                             (p[0], n[2], c[0]), (p[5], n[2], c[5]),
                             (p[6], n[2], c[6]), (p[1], n[2], c[1]),
                             (p[1], n[3], c[1]), (p[6], n[3], c[6]),
                             (p[7], n[3], c[7]), (p[2], n[3], c[2]),
                             (p[7], n[4], c[7]), (p[4], n[4], c[4]),
                             (p[3], n[4], c[3]), (p[2], n[4], c[2]),
                             (p[4], n[5], c[4]), (p[7], n[5], c[7]),
                             (p[6], n[5], c[6]), (p[5], n[5], c[5])],
                            dtype=[('position', 'f4', 3), ('normal', 'f4', 3),
                                   ('color', 'f4', 3)])
        self.buffer = VertexBuffer(vertices)
        self.trackball = Trackball(65, 135, 1.25, 2.5)
        self.frame = frame
        self.frame.push(self)

    def on_init(self):
        gl.glEnable(gl.GL_BLEND)
        gl.glEnable(gl.GL_LINE_SMOOTH)
        gl.glBlendFunc(gl.GL_SRC_ALPHA, gl.GL_ONE_MINUS_SRC_ALPHA)

    def on_mouse_drag(self, x, y, dx, dy, button):
        self.trackball.drag_to(x, y, dx, dy)
        fig.draw()

    def on_draw(self):
        self.frame.draw(z=-999)
        self.trackball.push()
        gl.glEnable(gl.GL_DEPTH_TEST)
        gl.glEnable(gl.GL_POLYGON_OFFSET_FILL)
        gl.glPolygonOffset(1, 1)
        gl.glPolygonMode(gl.GL_FRONT_AND_BACK, gl.GL_FILL)
        self.buffer.draw(gl.GL_QUADS, 'pnc')
        gl.glDisable(gl.GL_POLYGON_OFFSET_FILL)
        gl.glPolygonMode(gl.GL_FRONT_AND_BACK, gl.GL_LINE)
        gl.glDepthMask(gl.GL_FALSE)
        gl.glEnable(gl.GL_BLEND)
        gl.glEnable(gl.GL_LINE_SMOOTH)
        gl.glColor(0.0, 0.0, 0.0, 0.5)
        self.buffer.draw(gl.GL_QUADS, 'p')
        gl.glDepthMask(gl.GL_TRUE)
        self.trackball.pop()
        gl.glPolygonMode(gl.GL_FRONT_AND_BACK, gl.GL_FILL)
예제 #4
0
파일: views.py 프로젝트: lordi/dantien
class Cube(BaseView):
    " Cube from glumpy demo "
    def __init__(self, fig, ts, size=0.5):
        s = size
        p = ( ( s, s, s), (-s, s, s), (-s,-s, s), ( s,-s, s),
              ( s,-s,-s), ( s, s,-s), (-s, s,-s), (-s,-s,-s) )
        n = ( ( 0, 0, 1), (1, 0, 0), ( 0, 1, 0),
              (-1, 0, 1), (0,-1, 0), ( 0, 0,-1) );
        c = ( ( 1, 1, 1), ( 1, 1, 0), ( 1, 0, 1), ( 0, 1, 1),
              ( 1, 0, 0), ( 0, 0, 1), ( 0, 1, 0), ( 0, 0, 0) );
        vertices = np.array(
            [ (p[0],n[0],c[0]), (p[1],n[0],c[1]), (p[2],n[0],c[2]), (p[3],n[0],c[3]),
              (p[0],n[1],c[0]), (p[3],n[1],c[3]), (p[4],n[1],c[4]), (p[5],n[1],c[5]),
              (p[0],n[2],c[0]), (p[5],n[2],c[5]), (p[6],n[2],c[6]), (p[1],n[2],c[1]),
              (p[1],n[3],c[1]), (p[6],n[3],c[6]), (p[7],n[3],c[7]), (p[2],n[3],c[2]),
              (p[7],n[4],c[7]), (p[4],n[4],c[4]), (p[3],n[4],c[3]), (p[2],n[4],c[2]),
              (p[4],n[5],c[4]), (p[7],n[5],c[7]), (p[6],n[5],c[6]), (p[5],n[5],c[5]) ], 
            dtype = [('position','f4',3), ('normal','f4',3), ('color','f4',3)] )
        self.buffer = VertexBuffer(vertices)
        self.trackball = Trackball(65, 135, 1.25, 4.5)
        self.fig = fig
        self.fig.push(self)

    def on_init(self):
        gl.glEnable( gl.GL_BLEND )
        gl.glEnable( gl.GL_LINE_SMOOTH )
        gl.glBlendFunc (gl.GL_SRC_ALPHA, gl.GL_ONE_MINUS_SRC_ALPHA)

    def on_mouse_drag(self, x, y, dx, dy, button):
        self.trackball.drag_to(x,y,dx,dy)
        self.fig.redraw()

    def on_draw(self):
        self.fig.lock()
        self.fig.clear(*THEME_BG)
        self.trackball.push()
        gl.glEnable( gl.GL_BLEND )
        gl.glEnable( gl.GL_LINE_SMOOTH )
        gl.glBlendFunc (gl.GL_SRC_ALPHA, gl.GL_ONE_MINUS_SRC_ALPHA)
        gl.glEnable(gl.GL_DEPTH_TEST)
        gl.glEnable( gl.GL_POLYGON_OFFSET_FILL )
        gl.glPolygonOffset (1, 1)
        gl.glPolygonMode( gl.GL_FRONT_AND_BACK, gl.GL_FILL )
        self.buffer.draw( gl.GL_QUADS, 'pnc' )
        gl.glDisable( gl.GL_POLYGON_OFFSET_FILL )
        gl.glPolygonMode( gl.GL_FRONT_AND_BACK, gl.GL_LINE )
        gl.glDepthMask( gl.GL_FALSE )
        gl.glEnable(gl.GL_BLEND)
        gl.glEnable(gl.GL_LINE_SMOOTH)
        gl.glColor( 0.0, 0.0, 0.0, 0.5 )
        self.buffer.draw( gl.GL_QUADS, 'p' )
        gl.glDepthMask( gl.GL_TRUE )
        self.trackball.pop()
        gl.glPolygonMode( gl.GL_FRONT_AND_BACK, gl.GL_FILL )
        self.fig.unlock()
예제 #5
0
 def __init__(self, size=.5):
     s = size
     p = ( ( s, s, s), (-s, s, s), (-s,-s, s), ( s,-s, s),
           ( s,-s,-s), ( s, s,-s), (-s, s,-s), (-s,-s,-s) )
     n = ( ( 0, 0, 1), (1, 0, 0), ( 0, 1, 0),
           (-1, 0, 1), (0,-1, 0), ( 0, 0,-1) );
     c = ( ( 1, 1, 1), ( 1, 1, 0), ( 1, 0, 1), ( 0, 1, 1),
           ( 1, 0, 0), ( 0, 0, 1), ( 0, 1, 0), ( 0, 0, 0) );
     vertices = np.array(
         [ (p[0],n[0],c[0]), (p[1],n[0],c[1]), (p[2],n[0],c[2]), (p[3],n[0],c[3]),
           (p[0],n[1],c[0]), (p[3],n[1],c[3]), (p[4],n[1],c[4]), (p[5],n[1],c[5]),
           (p[0],n[2],c[0]), (p[5],n[2],c[5]), (p[6],n[2],c[6]), (p[1],n[2],c[1]),
           (p[1],n[3],c[1]), (p[6],n[3],c[6]), (p[7],n[3],c[7]), (p[2],n[3],c[2]),
           (p[7],n[4],c[7]), (p[4],n[4],c[4]), (p[3],n[4],c[3]), (p[2],n[4],c[2]),
           (p[4],n[5],c[4]), (p[7],n[5],c[7]), (p[6],n[5],c[6]), (p[5],n[5],c[5]) ], 
         dtype = [('position','f4',3), ('normal','f4',3), ('color','f4',3)] )
     self.buffer = VertexBuffer(vertices)
     self.trackball = Trackball(65, 135, 1.25, 3.5)