mirror of
https://github.com/3b1b/manim.git
synced 2025-09-19 04:41:56 +00:00
Add VHighlight
This commit is contained in:
parent
fe3e10acd2
commit
9d5e2b32fa
1 changed files with 24 additions and 0 deletions
|
@ -10,6 +10,8 @@ import moderngl
|
||||||
import numpy.typing as npt
|
import numpy.typing as npt
|
||||||
|
|
||||||
from manimlib.constants import *
|
from manimlib.constants import *
|
||||||
|
from manimlib.constants import GREY_C
|
||||||
|
from manimlib.constants import GREY_E
|
||||||
from manimlib.mobject.mobject import Mobject
|
from manimlib.mobject.mobject import Mobject
|
||||||
from manimlib.mobject.mobject import Point
|
from manimlib.mobject.mobject import Point
|
||||||
from manimlib.utils.bezier import bezier
|
from manimlib.utils.bezier import bezier
|
||||||
|
@ -20,6 +22,7 @@ from manimlib.utils.bezier import interpolate
|
||||||
from manimlib.utils.bezier import inverse_interpolate
|
from manimlib.utils.bezier import inverse_interpolate
|
||||||
from manimlib.utils.bezier import integer_interpolate
|
from manimlib.utils.bezier import integer_interpolate
|
||||||
from manimlib.utils.bezier import partial_quadratic_bezier_points
|
from manimlib.utils.bezier import partial_quadratic_bezier_points
|
||||||
|
from manimlib.utils.color import color_gradient
|
||||||
from manimlib.utils.color import rgb_to_hex
|
from manimlib.utils.color import rgb_to_hex
|
||||||
from manimlib.utils.iterables import make_even
|
from manimlib.utils.iterables import make_even
|
||||||
from manimlib.utils.iterables import resize_array
|
from manimlib.utils.iterables import resize_array
|
||||||
|
@ -1174,3 +1177,24 @@ class DashedVMobject(VMobject):
|
||||||
# Family is already taken care of by get_subcurve
|
# Family is already taken care of by get_subcurve
|
||||||
# implementation
|
# implementation
|
||||||
self.match_style(vmobject, recurse=False)
|
self.match_style(vmobject, recurse=False)
|
||||||
|
|
||||||
|
|
||||||
|
class VHighlight(VGroup):
|
||||||
|
def __init__(
|
||||||
|
self,
|
||||||
|
vmobject: VMobject,
|
||||||
|
n_layers: int = 3,
|
||||||
|
color_bounds: tuple[ManimColor] = (GREY_C, GREY_E),
|
||||||
|
max_stroke_width: float = 10.0,
|
||||||
|
):
|
||||||
|
outline = vmobject.replicate(n_layers)
|
||||||
|
outline.set_fill(opacity=0)
|
||||||
|
added_widths = np.linspace(0, max_stroke_width, n_layers + 1)[1:]
|
||||||
|
colors = color_gradient(color_bounds, n_layers)
|
||||||
|
for part, added_width, color in zip(reversed(outline), added_widths, colors):
|
||||||
|
for sm in part.family_members_with_points():
|
||||||
|
part.set_stroke(
|
||||||
|
width=sm.get_stroke_width() + added_width,
|
||||||
|
color=color,
|
||||||
|
)
|
||||||
|
super().__init__(*outline)
|
||||||
|
|
Loading…
Add table
Reference in a new issue