Exemple #1
0
 def draw_spheres(self, solid=False):
     gl.glMatrixMode(gl.GL_MODELVIEW)
     gray = 0.3
     gl.glColor3f(gray, gray, gray)
     if solid:
         gl.glEnable(gl.GL_LIGHTING)
         gl.glEnable(gl.GL_LIGHT0)
         gl.glLightfv(gl.GL_LIGHT0, gl.GL_AMBIENT, [1, 1, 1, 1])
         gl.glLightfv(gl.GL_LIGHT0, gl.GL_POSITION, [0, 0, 1, 0])
         gl.glEnable(gl.GL_BLEND)
         gl.glBlendFunc(gl.GL_SRC_ALPHA, gl.GL_ONE_MINUS_SRC_ALPHA)
         gl.glMaterialfv(gl.GL_FRONT, gl.GL_DIFFUSE, [1, 1, 1, 0.5])
         sphere = gltbx.util.SolidSphere
         grid = 50
     else:
         sphere = gltbx.util.WireSphere
         grid = 20
     for i, (x, r) in enumerate(self.spheres):
         gl.glPushMatrix()
         gl.glTranslated(*(x))
         sphere(radius=r, slices=grid, stacks=grid)
         gl.glPopMatrix()
     if solid:
         gl.glDisable(gl.GL_LIGHTING)
         gl.glDisable(gl.GL_LIGHT0)
         gl.glDisable(gl.GL_BLEND)
Exemple #2
0
 def fit_into_viewport(self):
     dx, dy, dz = self.compute_home_translation()
     move_factor = self.translation_move_factor((dx, dy, dz))
     mvm = gltbx.util.get_gl_modelview_matrix()
     for f in animation_stepper(time_move=self.animation_time,
                                move_factor=move_factor):
         gl.glMatrixMode(gl.GL_MODELVIEW)
         gl.glLoadIdentity()
         gl.glTranslated(f * dx, f * dy, f * dz)
         gl.glMultMatrixd(mvm)
         self.OnRedraw()
Exemple #3
0
 def move_to_center_of_viewport(self, obj_coor):
     dx, dy = [-x for x in gltbx.util.object_as_eye_coordinates(obj_coor)[:2]]
     move_factor = self.translation_move_factor((dx, dy, 0))
     mvm = gltbx.util.get_gl_modelview_matrix()
     for f in animation_stepper(
         time_move=self.animation_time, move_factor=move_factor
     ):
         gl.glMatrixMode(gl.GL_MODELVIEW)
         gl.glLoadIdentity()
         gl.glTranslated(f * dx, f * dy, 0)
         gl.glMultMatrixd(mvm)
         self.OnRedraw()
Exemple #4
0
 def initialize_modelview(self, eye_vector=None, angle=None):
     gl.glMatrixMode(gl.GL_MODELVIEW)
     gl.glLoadIdentity()
     self.setup_lighting()
     glu.gluLookAt(0, 0, 0, 0, 0, -1, 0, 1, 0)
     translation = self.compute_home_translation()
     gl.glTranslated(*translation)
     rc = self.minimum_covering_sphere.center()
     self.rotation_center = rc
     if eye_vector is None:
         eye_vector = (1, 1, 1)
     if angle is None:
         angle = -120
     gltbx.util.rotate_object_about_eye_vector(
         xcenter=rc[0],
         ycenter=rc[1],
         zcenter=rc[2],
         xvector=eye_vector[0],
         yvector=eye_vector[1],
         zvector=eye_vector[2],
         angle=angle,
     )