def create_eyes(self, mode=None, thing_to_look_at=None): if mode is None: mode = self.mode if thing_to_look_at is None: thing_to_look_at = self.thing_to_look_at self.thing_to_look_at = thing_to_look_at self.mode = mode looking_direction = None pi = PiCreature(mode=mode) eyes = VGroup(pi.eyes, pi.pupils) if self.submobjects: eyes.match_height(self) eyes.move_to(self, DOWN) looking_direction = self[1].get_center() - self[0].get_center() else: eyes.set_height(self.height) eyes.move_to(self.body.get_top(), DOWN) height = eyes.get_height() if thing_to_look_at is not None: pi.look_at(thing_to_look_at) elif looking_direction is not None: pi.look(looking_direction) eyes.set_height(height) return eyes
def create_eyes(self, mode=None, thing_to_look_at=None): if mode is None: mode = self.mode if thing_to_look_at is None: thing_to_look_at = self.thing_to_look_at self.thing_to_look_at = thing_to_look_at self.mode = mode looking_direction = None pi = PiCreature(mode=mode) eyes = VGroup(pi.eyes, pi.pupils) if self.submobjects: eyes.match_height(self) eyes.move_to(self, DOWN) looking_direction = self[1].get_center() - self[0].get_center() else: eyes.set_height(self.height) eyes.move_to(self.body.get_top(), DOWN) height = eyes.get_height() if thing_to_look_at is not None: pi.look_at(thing_to_look_at) elif looking_direction is not None: pi.look(looking_direction) eyes.set_height(height) return eyes
def __init__(self, point, color=YELLOW, **kwargs): digest_config(self, kwargs) lines = VGroup() for angle in np.arange(0, TAU, TAU / self.num_lines): line = Line(ORIGIN, self.line_length * RIGHT) line.shift((self.flash_radius - self.line_length) * RIGHT) line.rotate(angle, about_point=ORIGIN) lines.add(line) lines.move_to(point) lines.set_color(color) lines.set_stroke(width=3) line_anims = [ ShowCreationThenDestruction( line, rate_func=squish_rate_func(smooth, 0, 0.5) ) for line in lines ] fade_anims = [ UpdateFromAlphaFunc( line, lambda m, a: m.set_stroke( width=self.line_stroke_width * (1 - a) ), rate_func=squish_rate_func(smooth, 0, 0.75) ) for line in lines ] AnimationGroup.__init__( self, *line_anims + fade_anims, **kwargs )
def get_cross(self): cross = VGroup(Line(UP + LEFT, DOWN + RIGHT, **self.cross_kwargs), Line(UP + RIGHT, DOWN + LEFT, **self.cross_kwargs)) cross.stretch_to_fit_width(self.box.get_width()) cross.stretch_to_fit_height(self.box.get_height()) cross.scale(0.5) cross.move_to(self.box) return cross
def get_checkmark(self): checkmark = VGroup( Line(UP / 2 + 2 * LEFT, DOWN + LEFT, **self.checkmark_kwargs), Line(DOWN + LEFT, UP + RIGHT, **self.checkmark_kwargs)) checkmark.stretch_to_fit_width(self.box.get_width()) checkmark.stretch_to_fit_height(self.box.get_height()) checkmark.scale(0.5) checkmark.move_to(self.box) return checkmark
def __init__(self, *args, **kwargs): PiCreature.__init__(self, *args, **kwargs) self.scale(self.scale_factor) self.shift(LEFT) self.to_edge(DOWN, buff=LARGE_BUFF) eyes = VGroup(self.eyes, self.pupils) eyes_bottom = eyes.get_bottom() eyes.scale(self.eye_scale_factor) eyes.move_to(eyes_bottom, aligned_edge=DOWN) looking_direction = self.get_looking_direction() for pupil in self.pupils: pupil.scale_in_place(self.pupil_scale_factor) self.look(looking_direction)
def __init__(self, *args, **kwargs): PiCreature.__init__(self, *args, **kwargs) self.scale(self.scale_factor) self.shift(LEFT) self.to_edge(DOWN, buff=LARGE_BUFF) eyes = VGroup(self.eyes, self.pupils) eyes_bottom = eyes.get_bottom() eyes.scale(self.eye_scale_factor) eyes.move_to(eyes_bottom, aligned_edge=DOWN) looking_direction = self.get_looking_direction() for pupil in self.pupils: pupil.scale_in_place(self.pupil_scale_factor) self.look(looking_direction)