def draw_teapot(): if fill.value: gl.glEnable(gl.GL_LIGHTING) gl.glEnable(gl.GL_DEPTH_TEST) gl.glColor3f(color[0], color[1], color[2]) gl.glPolygonOffset(1, 1) gl.glEnable(gl.GL_POLYGON_OFFSET_FILL) if shape.value == 0: glut.glutSolidCube(1) elif shape.value == 1: glut.glutSolidTorus(0.25, 0.50, 32, 32) else: glut.glutSolidTeapot(.75) gl.glDisable(gl.GL_LIGHTING) gl.glDisable(gl.GL_POLYGON_OFFSET_FILL) gl.glEnable(gl.GL_LINE_SMOOTH) gl.glEnable(gl.GL_BLEND) gl.glDepthMask(gl.GL_FALSE) gl.glColor4f(0, 0, 0, .5) if shape.value == 0: glut.glutWireCube(1) elif shape.value == 1: glut.glutWireTorus(0.25, 0.50, 32, 32) else: glut.glutWireTeapot(.75) gl.glDepthMask(gl.GL_TRUE)
def __init__(self, inner=1, outer=1, color=(0, 0, 0, 1)): Renderable.__init__(self, color) GL.glNewList(self.gl_list, GL.GL_COMPILE) f = inner + outer * 2. GLUT.glutSolidTorus(inner / (f * 2.), outer / f, Torus.slices, Torus.rings) GL.glEndList()
def draw_teapot(): if fill.value: gl.glEnable (gl.GL_LIGHTING) gl.glEnable (gl.GL_DEPTH_TEST) gl.glColor3f(color[0],color[1],color[2]) gl.glPolygonOffset (1, 1) gl.glEnable (gl.GL_POLYGON_OFFSET_FILL) if shape.value == 0: glut.glutSolidCube(1) elif shape.value == 1: glut.glutSolidTorus(0.25, 0.50, 32, 32) else: glut.glutSolidTeapot(.75) gl.glDisable (gl.GL_LIGHTING) gl.glDisable (gl.GL_POLYGON_OFFSET_FILL) gl.glEnable (gl.GL_LINE_SMOOTH) gl.glEnable (gl.GL_BLEND) gl.glDepthMask (gl.GL_FALSE) gl.glColor4f(0,0,0,.5) if shape.value == 0: glut.glutWireCube(1) elif shape.value == 1: glut.glutWireTorus(0.25, 0.50, 32, 32) else: glut.glutWireTeapot(.75) gl.glDepthMask (gl.GL_TRUE)
def to_OpenGL(self): if not GL_enabled: return GL.glPushMatrix() GL.glTranslate(self.center[0], self.center[1], self.center[2]) GLUT.glutSolidTorus(self.minorradius, self.majorradius, 10, 20) if not hasattr(self, "_cylinder"): self._cylinder = GLU.gluNewQuadric() GLU.gluCylinder(self._cylinder, self.radius, self.radius, self.height, 10, 20) GL.glPopMatrix() GL.glPushMatrix() GL.glTranslate(self.location[0], self.location[1], self.location[2]) if not hasattr(self, "_disk"): self._disk = GLU.gluNewQuadric() GLU.gluDisk(self._disk, 0, self.majorradius, 20, 10) GL.glPopMatrix()
def create_torus(minr=0.5, maxr=1.0, lat=30, lng=30, color=None): """ Creates a torus. :param minr: Minimum radius :param maxr: Maximum radius :param lat: Latitude :param lng: Longitude :param color: Color :type minr: float, int :type maxr: float, int :type lat: int :type lng: int :type color: list :return: OpenGl list """ if lat >= 3 and lng >= 3: obj = _gl.glGenLists(1) _gl.glNewList(obj, _gl.GL_COMPILE) _gl.glPushMatrix() if color is not None: _gl.glColor4fv(color) # noinspection PyBroadException try: _glut.glutSolidTorus(minr, maxr, lat, lng) except: if not _FIGURES_ERRS[2]: _print_gl_error( 'OpenGL actual version does not support glutSolidTorus function' ) _FIGURES_ERRS[2] = True _gl.glPopMatrix() _gl.glEndList() return obj else: raise Exception( 'Latitude and longitude of the figure must be greater than 3')
def __init__(self, inner=1, outer=1, color=(0, 0, 0, 1)): Renderable.__init__(self, color) GL.glNewList(self.gl_list, GL.GL_COMPILE) f = inner + outer * 2. GLUT.glutSolidTorus(inner/(f*2.), outer/f, Torus.slices, Torus.rings) GL.glEndList()