12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- from __future__ import annotations
- from manimlib.animation.composition import LaggedStart
- from manimlib.animation.transform import Restore
- from manimlib.constants import BLACK, WHITE
- from manimlib.mobject.geometry import Circle
- from manimlib.mobject.types.vectorized_mobject import VGroup
- from typing import TYPE_CHECKING
- if TYPE_CHECKING:
- import numpy as np
- from manimlib.typing import ManimColor
- class Broadcast(LaggedStart):
- def __init__(
- self,
- focal_point: np.ndarray,
- small_radius: float = 0.0,
- big_radius: float = 5.0,
- n_circles: int = 5,
- start_stroke_width: float = 8.0,
- color: ManimColor = WHITE,
- run_time: float = 3.0,
- lag_ratio: float = 0.2,
- remover: bool = True,
- **kwargs
- ):
- self.focal_point = focal_point
- self.small_radius = small_radius
- self.big_radius = big_radius
- self.n_circles = n_circles
- self.start_stroke_width = start_stroke_width
- self.color = color
- circles = VGroup()
- for x in range(n_circles):
- circle = Circle(
- radius=big_radius,
- stroke_color=BLACK,
- stroke_width=0,
- )
- circle.add_updater(lambda c: c.move_to(focal_point))
- circle.save_state()
- circle.set_width(small_radius * 2)
- circle.set_stroke(color, start_stroke_width)
- circles.add(circle)
- super().__init__(
- *map(Restore, circles),
- run_time=run_time,
- lag_ratio=lag_ratio,
- remover=remover,
- **kwargs
- )
|