Beispiel #1
0
 def setup_in_uv_space(self):
     u_values, v_values = self.get_u_values_and_v_values()
     faces = VGroup()
     for i in range(len(u_values) - 1):
         for j in range(len(v_values) - 1):
             u1, u2 = u_values[i:i + 2]
             v1, v2 = v_values[j:j + 2]
             face = ThreeDVMobject()
             face.set_points_as_corners([
                 [u1, v1, 0],
                 [u2, v1, 0],
                 [u2, v2, 0],
                 [u1, v2, 0],
                 [u1, v1, 0],
             ])
             faces.add(face)
             face.u_index = i
             face.v_index = j
             face.u1 = u1
             face.u2 = u2
             face.v1 = v1
             face.v2 = v2
     faces.set_fill(color=self.fill_color, opacity=self.fill_opacity)
     faces.set_stroke(
         color=self.stroke_color,
         width=self.stroke_width,
         opacity=self.stroke_opacity,
     )
     self.add(*faces)
     if self.checkerboard_colors:
         self.set_fill_by_checkerboard(*self.checkerboard_colors)
Beispiel #2
0
 def create_lines(self):
     lines = VGroup()
     for angle in np.arange(0, consts.TAU, consts.TAU / self.num_lines):
         line = Line(consts.ORIGIN, self.line_length * consts.RIGHT)
         line.shift((self.flash_radius - self.line_length) * consts.RIGHT)
         line.rotate(angle, about_point=consts.ORIGIN)
         lines.add(line)
     lines.set_color(self.color)
     lines.set_stroke(width=3)
     lines.add_updater(lambda l: l.move_to(self.point))
     return lines