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)
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)
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 )
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)