mirror of
https://github.com/3b1b/manim.git
synced 2025-08-05 16:49:03 +00:00
Improved VectorSpaceScene.get_vector_label
This commit is contained in:
parent
9dbf4e4b89
commit
bc03093c81
1 changed files with 25 additions and 11 deletions
|
@ -10,6 +10,7 @@ from animation.creation import Write
|
||||||
from animation.transform import ApplyFunction
|
from animation.transform import ApplyFunction
|
||||||
from animation.transform import ApplyPointwiseFunction
|
from animation.transform import ApplyPointwiseFunction
|
||||||
from animation.creation import FadeOut
|
from animation.creation import FadeOut
|
||||||
|
from animation.creation import GrowArrow
|
||||||
from animation.transform import Transform
|
from animation.transform import Transform
|
||||||
from mobject.mobject import Mobject
|
from mobject.mobject import Mobject
|
||||||
from mobject.svg.tex_mobject import TexMobject
|
from mobject.svg.tex_mobject import TexMobject
|
||||||
|
@ -83,7 +84,7 @@ class VectorScene(Scene):
|
||||||
if not isinstance(vector, Arrow):
|
if not isinstance(vector, Arrow):
|
||||||
vector = Vector(vector, color=color, **kwargs)
|
vector = Vector(vector, color=color, **kwargs)
|
||||||
if animate:
|
if animate:
|
||||||
self.play(ShowCreation(vector))
|
self.play(GrowArrow(vector))
|
||||||
self.add(vector)
|
self.add(vector)
|
||||||
return vector
|
return vector
|
||||||
|
|
||||||
|
@ -120,6 +121,7 @@ class VectorScene(Scene):
|
||||||
])
|
])
|
||||||
|
|
||||||
def get_vector_label(self, vector, label,
|
def get_vector_label(self, vector, label,
|
||||||
|
at_tip=False,
|
||||||
direction="left",
|
direction="left",
|
||||||
rotate=False,
|
rotate=False,
|
||||||
color=None,
|
color=None,
|
||||||
|
@ -134,6 +136,11 @@ class VectorScene(Scene):
|
||||||
label.scale(label_scale_factor)
|
label.scale(label_scale_factor)
|
||||||
label.add_background_rectangle()
|
label.add_background_rectangle()
|
||||||
|
|
||||||
|
if at_tip:
|
||||||
|
vect = vector.get_vector()
|
||||||
|
vect /= np.linalg.norm(vect)
|
||||||
|
label.next_to(vector.get_end(), vect, buff=SMALL_BUFF)
|
||||||
|
else:
|
||||||
angle = vector.get_angle()
|
angle = vector.get_angle()
|
||||||
if not rotate:
|
if not rotate:
|
||||||
label.rotate(-angle, about_point=ORIGIN)
|
label.rotate(-angle, about_point=ORIGIN)
|
||||||
|
@ -373,12 +380,19 @@ class LinearTransformationScene(VectorScene):
|
||||||
self.add_foreground_mobject(coords)
|
self.add_foreground_mobject(coords)
|
||||||
return coords
|
return coords
|
||||||
|
|
||||||
def add_transformable_label(self, vector, label, new_label=None, **kwargs):
|
def add_transformable_label(
|
||||||
|
self, vector, label,
|
||||||
|
transformation_name="L",
|
||||||
|
new_label=None,
|
||||||
|
**kwargs):
|
||||||
label_mob = self.label_vector(vector, label, **kwargs)
|
label_mob = self.label_vector(vector, label, **kwargs)
|
||||||
if new_label:
|
if new_label:
|
||||||
label_mob.target_text = new_label
|
label_mob.target_text = new_label
|
||||||
else:
|
else:
|
||||||
label_mob.target_text = "L(%s)" % label_mob.get_tex_string()
|
label_mob.target_text = "%s(%s)" % (
|
||||||
|
transformation_name,
|
||||||
|
label_mob.get_tex_string()
|
||||||
|
)
|
||||||
label_mob.vector = vector
|
label_mob.vector = vector
|
||||||
label_mob.kwargs = kwargs
|
label_mob.kwargs = kwargs
|
||||||
if "animate" in label_mob.kwargs:
|
if "animate" in label_mob.kwargs:
|
||||||
|
|
Loading…
Add table
Reference in a new issue