示例#1
0
 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)
示例#2
0
 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()
示例#3
0
 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)
示例#4
0
 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()
示例#5
0
 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()
示例#6
0
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')
示例#7
0
 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()