def _draw_frame(self, frame):
for sph in frame.sphlist:
glPushMatrix()
glColor3f(*sph.color)
glTranslatef(sph.pos[0], sph.pos[1], sph.pos[2])
glutSolidSphere(sph.radius, self.sphere_slices, self.sphere_slices)
glPopMatrix()
for cyl in frame.cyllist:
p1, p2 = cyl.p1, cyl.p2
vec = p2 - p1
vlen = float(np.sqrt(np.square(vec).sum()))
angle = np.arccos(vec[2] / vlen) * 180.0 / np.pi
if vec[2] < 0:
angle = -angle
glPushMatrix()
glColor3f(*cyl.color)
glTranslatef(p1[0], p1[1], p1[2])
glRotatef(angle, -vec[1]*vec[2], vec[0]*vec[2], 0.0)
gluCylinder(self._quadric, 3.0, 3.0, vlen, 10, 10)
glPopMatrix()
评论列表
文章目录