Mobject#
Qualified name: manim.mobject.mobject.Mobject
- class Mobject(color='#FFFFFF', name=None, dim=3, target=None, z_index=0)[source]#
Bases:
object
Mathematical Object: base class for objects that can be displayed on screen.
There is a compatibility layer that allows for getting and setting generic attributes with
get_*
andset_*
methods. Seeset()
for more details.Methods
Add mobjects as submobjects.
Add an animation override.
Add a BackgroundRectangle as submobject.
add_background_rectangle_to_family_members_with_points
add_background_rectangle_to_submobjects
add_n_more_submobjects
Add all passed mobjects to the back of the submobjects.
Add an update function to this mobject.
Aligns the data of this mobject with another mobject.
Direction just needs to be a vector pointing towards side or corner in the 2d plane.
align_points
align_points_with_larger
align_submobjects
Aligns mobject to another
Mobject
in a certain direction.Returns the function defining a specific animation override for this class.
Applies a complex function to a
Mobject
.apply_function
apply_function_to_position
apply_function_to_submobject_positions
apply_matrix
apply_over_attr_arrays
apply_points_function_about_point
Apply a function to
self
and every submobject with points recursively.Sorts
Mobject
next to each other on screen.Arrange submobjects in a grid.
Arrange the position of
submobjects
with a small buffer.Edit points, colors and submobjects to be identical to another
Mobject
center
Remove every updater.
Create and return an identical copy of the
Mobject
including allsubmobjects
.fade
fade_to
family_members_with_points
Flips/Mirrors an mobject about its center.
Initializes
points
and therefore the shape.generate_target
Return all points from this mobject and all submobjects.
get_array_attrs
Get bottom coordinates of a box bounding the
Mobject
get_boundary_point
Get center coordinates
get_center_of_mass
Returns the color of the
Mobject
Meant to generalize
get_x
,get_y
andget_z
Get corner coordinates for certain direction.
Picture a box bounding the
Mobject
.Get edge coordinates for certain direction.
Returns the point, where the stroke that surrounds the
Mobject
ends.get_extremum_along_dim
get_family
get_family_updaters
get_group_class
get_image
Get left coordinates of a box bounding the
Mobject
Return all of a given attribute from this mobject and all submobjects.
Get coordinates of the middle of the path that forms the
Mobject
.Return the base class of this mobject type.
Get nadir (opposite the zenith) coordinates of a box bounding a 3D
Mobject
.get_num_points
get_pieces
The simplest
Mobject
to be transformed to or from self.get_points_defining_boundary
Get right coordinates of a box bounding the
Mobject
Returns the point, where the stroke that surrounds the
Mobject
starts.Returns starting and ending point of a stroke as a
tuple
.Return all updaters using the
dt
parameter.Get top coordinates of a box bounding the
Mobject
Return all updaters.
Returns x coordinate of the center of the
Mobject
asfloat
Returns y coordinate of the center of the
Mobject
asfloat
Returns z coordinate of the center of the
Mobject
asfloat
get_z_index_reference_point
Get zenith coordinates of a box bounding a 3D
Mobject
.Check if
Mobject
does not contains points.Check if
Mobject
contains points.Test if
self
has a time based updater.Initializes the colors.
Inserts a mobject at a specific position into self.submobjects
Turns this
Mobject
into an interpolation betweenmobject1
andmobject2
.interpolate_color
Inverts the list of
submobjects
.is_off_screen
Measure the length of an
Mobject
in a certain direction.Match the color with the color of another
Mobject
.Match the coordinates with the coordinates of another
Mobject
.Match the depth with the depth of another
Mobject
.Match the specified dimension with the dimension of another
Mobject
.Match the height with the height of another
Mobject
.Edit points, positions, and submobjects to be identical to another
Mobject
, while keeping the style unchanged.Match the updaters of the given mobject.
Match the width with the width of another
Mobject
.Match x coord.
Match y coord.
Match z coord.
Move center of the
Mobject
to certain coordinate.nonempty_submobjects
If a
Mobject
with points is being aligned to one without, treat both as groups, and push the one with points into its own submobjects list.point_from_proportion
pose_at_angle
proportion_from_point
push_self_into_submobjects
put_start_and_end_on
Find the min or max value from a dimension across all points in this and submobjects.
Remove
submobjects
.Remove an updater.
This can make transition animations nicer
repeat_submobject
replace
rescale_to_fit
Sets
points
to be an empty array.Restores the state that was previously saved with
save_state()
.Enable updating from updaters and animations.
reverse_points
Rotates the
Mobject
about a certain point.Rotates the
Mobject
about the ORIGIN, which is at [0,0,0].Saves an image of only this
Mobject
at its position to a png file.Save the current state (position, color & size).
Scale the size by a factor.
Scales the
Mobject
to fit a depth while keeping width/height proportional.Scales the
Mobject
to fit a height while keeping width/depth proportional.Scales the
Mobject
to fit a width while keeping height/depth proportional.Sets attributes.
Condition is function which takes in one arguments, (x, y, z).
set_color_by_gradient
set_colors_by_radial_gradient
set_coord
Sets the default values of keyword arguments.
set_submobject_colors_by_gradient
set_submobject_colors_by_radial_gradient
Set x value of the center of the
Mobject
(int
orfloat
)Set y value of the center of the
Mobject
(int
orfloat
)Set z value of the center of the
Mobject
(int
orfloat
)Sets the
Mobject
'sz_index
to the value specified in z_index_value.Sets the
Mobject
's z coordinate to the value ofz_index
.Shift by the given vectors.
shift_onto_screen
show
Shuffles the list of
submobjects
.Shuffles the order of
submobjects
Sorts the list of
submobjects
by a function defined bysubmob_func
.Sort the
submobjects
space_out_submobjects
split
stretch
stretch_about_point
Stretches the
Mobject
to fit a depth, not keeping width/height proportional.Stretches the
Mobject
to fit a height, not keeping width/depth proportional.Stretches the
Mobject
to fit a width, not keeping height/depth proportional.surround
Disable updating from updaters and animations.
throw_error_if_no_points
to_corner
to_edge
to_original_color
Apply all updaters.
wag
Attributes
Used to animate the application of any method of
self
.animation_overrides
The depth of the mobject.
The height of the mobject.
The width of the mobject.
- add(*mobjects)[source]#
Add mobjects as submobjects.
The mobjects are added to
submobjects
.Subclasses of mobject may implement
+
and+=
dunder methods.- Parameters
mobjects (Mobject) – The mobjects to add.
- Returns
self
- Return type
- Raises
ValueError – When a mobject tries to add itself.
TypeError – When trying to add an object that is not an instance of
Mobject
.
Notes
A mobject cannot contain itself, and it cannot contain a submobject more than once. If the parent mobject is displayed, the newly-added submobjects will also be displayed (i.e. they are automatically added to the parent Scene).
See also
Examples
>>> outer = Mobject() >>> inner = Mobject() >>> outer = outer.add(inner)
Duplicates are not added again:
>>> outer = outer.add(inner) >>> len(outer.submobjects) 1
Adding an object to itself raises an error:
>>> outer.add(outer) Traceback (most recent call last): ... ValueError: Mobject cannot contain self
A given mobject cannot be added as a submobject twice to some parent:
>>> parent = Mobject(name="parent") >>> child = Mobject(name="child") >>> parent.add(child, child) [...] WARNING ... parent >>> parent.submobjects [child]
- classmethod add_animation_override(animation_class, override_func)[source]#
Add an animation override.
This does not apply to subclasses.
- Parameters
- Raises
MultiAnimationOverrideException – If the overridden animation was already overridden.
- add_background_rectangle(color=None, opacity=0.75, **kwargs)[source]#
Add a BackgroundRectangle as submobject.
The BackgroundRectangle is added behind other submobjects.
This can be used to increase the mobjects visibility in front of a noisy background.
- Parameters
color (Colors | None) – The color of the BackgroundRectangle
opacity (float) – The opacity of the BackgroundRectangle
kwargs – Additional keyword arguments passed to the BackgroundRectangle constructor
- Returns
self
- Return type
See also
- add_to_back(*mobjects)[source]#
Add all passed mobjects to the back of the submobjects.
If
submobjects
already contains the given mobjects, they just get moved to the back instead.Note
Technically, this is done by adding (or moving) the mobjects to the head of
submobjects
. The head of this list is rendered first, which places the corresponding mobjects behind the subsequent list members.- Raises
ValueError – When a mobject tries to add itself.
TypeError – When trying to add an object that is not an instance of
Mobject
.
- Parameters
mobjects (Mobject) –
Notes
A mobject cannot contain itself, and it cannot contain a submobject more than once. If the parent mobject is displayed, the newly-added submobjects will also be displayed (i.e. they are automatically added to the parent Scene).
- add_updater(update_function, index=None, call_updater=False)[source]#
Add an update function to this mobject.
Update functions, or updaters in short, are functions that are applied to the Mobject in every frame.
- Parameters
update_function (Updater) – The update function to be added. Whenever
update()
is called, this update function gets called usingself
as the first parameter. The updater can have a second parameterdt
. If it uses this parameter, it gets called using a second valuedt
, usually representing the time in seconds since the last call ofupdate()
.index (int | None) – The index at which the new updater should be added in
self.updaters
. In caseindex
isNone
the updater will be added at the end.call_updater (bool) – Whether or not to call the updater initially. If
True
, the updater will be called usingdt=0
.
- Returns
self
- Return type
Examples
Example: NextToUpdater ¶
from manim import * class NextToUpdater(Scene): def construct(self): def dot_position(mobject): mobject.set_value(dot.get_center()[0]) mobject.next_to(dot) dot = Dot(RIGHT*3) label = DecimalNumber() label.add_updater(dot_position) self.add(dot, label) self.play(Rotating(dot, about_point=ORIGIN, angle=TAU, run_time=TAU, rate_func=linear))
Example: DtUpdater ¶
from manim import * class DtUpdater(Scene): def construct(self): line = Square() #Let the line rotate 90° per second line.add_updater(lambda mobject, dt: mobject.rotate(dt*90*DEGREES)) self.add(line) self.wait(2)
See also
- align_data(mobject, skip_point_alignment=False)[source]#
Aligns the data of this mobject with another mobject.
Afterwards, the two mobjects will have the same number of submobjects (see
align_submobjects()
), the same parent structure (seenull_point_align()
). Ifskip_point_alignment
is false, they will also have the same number of points (seealign_points()
).- Parameters
mobject (Mobject) – The other mobject this mobject should be aligned to.
skip_point_alignment (bool) – Controls whether or not the computationally expensive point alignment is skipped (default: False).
- align_on_border(direction, buff=0.5)[source]#
Direction just needs to be a vector pointing towards side or corner in the 2d plane.
- align_to(mobject_or_point, direction=array([0., 0., 0.]))[source]#
Aligns mobject to another
Mobject
in a certain direction.Examples: mob1.align_to(mob2, UP) moves mob1 vertically so that its top edge lines ups with mob2’s top edge.
- Parameters
mobject_or_point (Mobject | np.ndarray | list) –
- property animate: _AnimationBuilder | T#
Used to animate the application of any method of
self
.Any method called on
animate
is converted to an animation of applying that method on the mobject itself.For example,
square.set_fill(WHITE)
sets the fill color of a square, whilesquare.animate.set_fill(WHITE)
animates this action.Multiple methods can be put in a single animation once via chaining:
self.play(my_mobject.animate.shift(RIGHT).rotate(PI))
Warning
Passing multiple animations for the same
Mobject
in one call toplay()
is discouraged and will most likely not work properly. Instead of writing an animation likeself.play(my_mobject.animate.shift(RIGHT), my_mobject.animate.rotate(PI))
make use of method chaining.
Keyword arguments that can be passed to
Scene.play()
can be passed directly after accessing.animate
, like so:self.play(my_mobject.animate(rate_func=linear).shift(RIGHT))
This is especially useful when animating simultaneous
.animate
calls that you want to behave differently:self.play( mobject1.animate(run_time=2).rotate(PI), mobject2.animate(rate_func=there_and_back).shift(RIGHT), )
See also
Examples
Example: AnimateExample ¶
from manim import * class AnimateExample(Scene): def construct(self): s = Square() self.play(Create(s)) self.play(s.animate.shift(RIGHT)) self.play(s.animate.scale(2)) self.play(s.animate.rotate(PI / 2)) self.play(Uncreate(s))
Example: AnimateChainExample ¶
from manim import * class AnimateChainExample(Scene): def construct(self): s = Square() self.play(Create(s)) self.play(s.animate.shift(RIGHT).scale(2).rotate(PI / 2)) self.play(Uncreate(s))
Example: AnimateWithArgsExample ¶
from manim import * class AnimateWithArgsExample(Scene): def construct(self): s = Square() c = Circle() VGroup(s, c).arrange(RIGHT, buff=2) self.add(s, c) self.play( s.animate(run_time=2).rotate(PI / 2), c.animate(rate_func=there_and_back).shift(RIGHT), )
Warning
.animate
will interpolate the
Mobject
between its points prior to.animate
and its points after applying.animate
to it. This may result in unexpected behavior when attempting to interpolate along paths, or rotations. If you want animations to consider the points between, consider usingValueTracker
with updaters instead.
- classmethod animation_override_for(animation_class)[source]#
Returns the function defining a specific animation override for this class.
- apply_complex_function(function, **kwargs)[source]#
Applies a complex function to a
Mobject
. The x and y coordinates correspond to the real and imaginary parts respectively.Example
Example: ApplyFuncExample ¶
from manim import * class ApplyFuncExample(Scene): def construct(self): circ = Circle().scale(1.5) circ_ref = circ.copy() circ.apply_complex_function( lambda x: np.exp(x*1j) ) t = ValueTracker(0) circ.add_updater( lambda x: x.become(circ_ref.copy().apply_complex_function( lambda x: np.exp(x+t.get_value()*1j) )).set_color(BLUE) ) self.add(circ_ref) self.play(TransformFromCopy(circ_ref, circ)) self.play(t.animate.set_value(TAU), run_time=3)
- apply_to_family(func)[source]#
Apply a function to
self
and every submobject with points recursively.- Parameters
func (Callable[[Mobject], None]) – The function to apply to each mobject.
func
gets passed the respective (sub)mobject as parameter.- Returns
self
- Return type
See also
family_members_with_points()
- arrange(direction=array([1., 0., 0.]), buff=0.25, center=True, **kwargs)[source]#
Sorts
Mobject
next to each other on screen.Examples
Example: Example ¶
from manim import * class Example(Scene): def construct(self): s1 = Square() s2 = Square() s3 = Square() s4 = Square() x = VGroup(s1, s2, s3, s4).set_x(0).arrange(buff=1.0) self.add(x)
- Parameters
direction (Sequence[float]) –
- arrange_in_grid(rows=None, cols=None, buff=0.25, cell_alignment=array([0., 0., 0.]), row_alignments=None, col_alignments=None, row_heights=None, col_widths=None, flow_order='rd', **kwargs)[source]#
Arrange submobjects in a grid.
- Parameters
rows (int | None) – The number of rows in the grid.
cols (int | None) – The number of columns in the grid.
buff (float | tuple[float, float]) – The gap between grid cells. To specify a different buffer in the horizontal and vertical directions, a tuple of two values can be given -
(row, col)
.cell_alignment (np.ndarray) – The way each submobject is aligned in its grid cell.
row_alignments (str | None) – The vertical alignment for each row (top to bottom). Accepts the following characters:
"u"
- up,"c"
- center,"d"
- down.col_alignments (str | None) – The horizontal alignment for each column (left to right). Accepts the following characters
"l"
- left,"c"
- center,"r"
- right.row_heights (Iterable[float | None] | None) – Defines a list of heights for certain rows (top to bottom). If the list contains
None
, the corresponding row will fit its height automatically based on the highest element in that row.col_widths (Iterable[float | None] | None) – Defines a list of widths for certain columns (left to right). If the list contains
None
, the corresponding column will fit its width automatically based on the widest element in that column.flow_order (str) – The order in which submobjects fill the grid. Can be one of the following values: “rd”, “dr”, “ld”, “dl”, “ru”, “ur”, “lu”, “ul”. (“rd” -> fill rightwards then downwards)
- Returns
self
- Return type
- Raises
ValueError – If
rows
andcols
are too small to fit all submobjects.ValueError – If
cols
,col_alignments
andcol_widths
orrows
,row_alignments
androw_heights
have mismatching sizes.
Notes
If only one of
cols
androws
is set implicitly, the other one will be chosen big enough to fit all submobjects. If neither is set, they will be chosen to be about the same, tending towardscols
>rows
(simply because videos are wider than they are high).If both
cell_alignment
androw_alignments
/col_alignments
are defined, the latter has higher priority.Examples
Example: ExampleBoxes ¶
from manim import * class ExampleBoxes(Scene): def construct(self): boxes=VGroup(*[Square() for s in range(0,6)]) boxes.arrange_in_grid(rows=2, buff=0.1) self.add(boxes)
Example: ArrangeInGrid ¶
from manim import * class ArrangeInGrid(Scene): def construct(self): boxes = VGroup(*[ Rectangle(WHITE, 0.5, 0.5).add(Text(str(i+1)).scale(0.5)) for i in range(24) ]) self.add(boxes) boxes.arrange_in_grid( buff=(0.25,0.5), col_alignments="lccccr", row_alignments="uccd", col_widths=[1, *[None]*4, 1], row_heights=[1, None, None, 1], flow_order="dr" )
- arrange_submobjects(*args, **kwargs)[source]#
Arrange the position of
submobjects
with a small buffer.Examples
Example: ArrangeSumobjectsExample ¶
from manim import * class ArrangeSumobjectsExample(Scene): def construct(self): s= VGroup(*[Dot().shift(i*0.1*RIGHT*np.random.uniform(-1,1)+UP*np.random.uniform(-1,1)) for i in range(0,15)]) s.shift(UP).set_color(BLUE) s2= s.copy().set_color(RED) s2.arrange_submobjects() s2.shift(DOWN) self.add(s,s2)
- become(mobject, copy_submobjects=True, match_height=False, match_width=False, match_depth=False, match_center=False, stretch=False)[source]#
Edit points, colors and submobjects to be identical to another
Mobject
Note
If both match_height and match_width are
True
then the transformedMobject
will match the height first and then the width- Parameters
match_height (bool) – If
True
, then the transformedMobject
will match the height of the originalmatch_width (bool) – If
True
, then the transformedMobject
will match the width of the originalmatch_depth (bool) – If
True
, then the transformedMobject
will match the depth of the originalmatch_center (bool) – If
True
, then the transformedMobject
will match the center of the originalstretch (bool) – If
True
, then the transformedMobject
will stretch to fit the proportions of the originalmobject (Mobject) –
copy_submobjects (bool) –
Examples
Example: BecomeScene ¶
from manim import * class BecomeScene(Scene): def construct(self): circ = Circle(fill_color=RED, fill_opacity=0.8) square = Square(fill_color=BLUE, fill_opacity=0.2) self.add(circ) self.wait(0.5) circ.become(square) self.wait(0.5)
- clear_updaters(recursive=True)[source]#
Remove every updater.
- Parameters
recursive (bool) – Whether to recursively call
clear_updaters
on all submobjects.- Returns
self
- Return type
See also
- copy()[source]#
Create and return an identical copy of the
Mobject
including allsubmobjects
.- Returns
The copy.
- Return type
- Parameters
self (T) –
Note
The clone is initially not visible in the Scene, even if the original was.
- property depth#
The depth of the mobject.
- Return type
float
See also
- flip(axis=array([0., 1., 0.]), **kwargs)[source]#
Flips/Mirrors an mobject about its center.
Examples
Example: FlipExample ¶
from manim import * class FlipExample(Scene): def construct(self): s= Line(LEFT, RIGHT+UP).shift(4*LEFT) self.add(s) s2= s.copy().flip() self.add(s2)
- generate_points()[source]#
Initializes
points
and therefore the shape.Gets called upon creation. This is an empty method that can be implemented by subclasses.
- get_all_points()[source]#
Return all points from this mobject and all submobjects.
May contain duplicates; the order is in a depth-first (pre-order) traversal of the submobjects.
- Return type
ndarray
- get_critical_point(direction)[source]#
Picture a box bounding the
Mobject
. Such a box has 9 ‘critical points’: 4 corners, 4 edge center, the center. This returns one of them, along the given direction.sample = Arc(start_angle=PI/7, angle = PI/5) # These are all equivalent max_y_1 = sample.get_top()[1] max_y_2 = sample.get_critical_point(UP)[1] max_y_3 = sample.get_extremum_along_dim(dim=1, key=1)
- get_merged_array(array_attr)[source]#
Return all of a given attribute from this mobject and all submobjects.
May contain duplicates; the order is in a depth-first (pre-order) traversal of the submobjects.
- Return type
ndarray
- get_midpoint()[source]#
Get coordinates of the middle of the path that forms the
Mobject
.Examples
Example: AngleMidPoint ¶
from manim import * class AngleMidPoint(Scene): def construct(self): line1 = Line(ORIGIN, 2*RIGHT) line2 = Line(ORIGIN, 2*RIGHT).rotate_about_origin(80*DEGREES) a = Angle(line1, line2, radius=1.5, other_angle=False) d = Dot(a.get_midpoint()).set_color(RED) self.add(line1, line2, a, d) self.wait()
- Return type
ndarray
- get_nadir()[source]#
Get nadir (opposite the zenith) coordinates of a box bounding a 3D
Mobject
.- Return type
ndarray
- get_point_mobject(center=None)[source]#
The simplest
Mobject
to be transformed to or from self. Should by a point of the appropriate type
- get_time_based_updaters()[source]#
Return all updaters using the
dt
parameter.The updaters use this parameter as the input for difference in time.
- Returns
The list of time based updaters.
- Return type
List[
Callable
]
See also
- get_updaters()[source]#
Return all updaters.
- Returns
The list of updaters.
- Return type
List[
Callable
]
See also
- get_x(direction=array([0., 0., 0.]))[source]#
Returns x coordinate of the center of the
Mobject
asfloat
- Return type
float64
- get_y(direction=array([0., 0., 0.]))[source]#
Returns y coordinate of the center of the
Mobject
asfloat
- Return type
float64
- get_z(direction=array([0., 0., 0.]))[source]#
Returns z coordinate of the center of the
Mobject
asfloat
- Return type
float64
- has_time_based_updater()[source]#
Test if
self
has a time based updater.- Returns
class –
True
if at least one updater uses thedt
parameter,False
otherwise.- Return type
bool
See also
- property height#
The height of the mobject.
- Return type
float
Examples
Example: HeightExample ¶
from manim import * class HeightExample(Scene): def construct(self): decimal = DecimalNumber().to_edge(UP) rect = Rectangle(color=BLUE) rect_copy = rect.copy().set_stroke(GRAY, opacity=0.5) decimal.add_updater(lambda d: d.set_value(rect.height)) self.add(rect_copy, rect, decimal) self.play(rect.animate.set(height=5)) self.wait()
See also
- init_colors()[source]#
Initializes the colors.
Gets called upon creation. This is an empty method that can be implemented by subclasses.
- insert(index, mobject)[source]#
Inserts a mobject at a specific position into self.submobjects
Effectively just calls
self.submobjects.insert(index, mobject)
, whereself.submobjects
is a list.Highly adapted from
Mobject.add
.- Parameters
index (int) – The index at which
mobject (Mobject) – The mobject to be inserted.
- interpolate(mobject1, mobject2, alpha, path_func=<function interpolate>)[source]#
Turns this
Mobject
into an interpolation betweenmobject1
andmobject2
.Examples
Example: DotInterpolation ¶
from manim import * class DotInterpolation(Scene): def construct(self): dotR = Dot(color=DARK_GREY) dotR.shift(2 * RIGHT) dotL = Dot(color=WHITE) dotL.shift(2 * LEFT) dotMiddle = VMobject().interpolate(dotL, dotR, alpha=0.3) self.add(dotL, dotR, dotMiddle)
- invert(recursive=False)[source]#
Inverts the list of
submobjects
.- Parameters
recursive – If
True
, all submobject lists of this mobject’s family are inverted.
Examples
Example: InvertSumobjectsExample ¶
from manim import * class InvertSumobjectsExample(Scene): def construct(self): s = VGroup(*[Dot().shift(i*0.1*RIGHT) for i in range(-20,20)]) s2 = s.copy() s2.invert() s2.shift(DOWN) self.play(Write(s), Write(s2))
- match_color(mobject)[source]#
Match the color with the color of another
Mobject
.- Parameters
mobject (Mobject) –
- match_coord(mobject, dim, direction=array([0., 0., 0.]))[source]#
Match the coordinates with the coordinates of another
Mobject
.- Parameters
mobject (Mobject) –
- match_depth(mobject, **kwargs)[source]#
Match the depth with the depth of another
Mobject
.- Parameters
mobject (Mobject) –
- match_dim_size(mobject, dim, **kwargs)[source]#
Match the specified dimension with the dimension of another
Mobject
.- Parameters
mobject (Mobject) –
- match_height(mobject, **kwargs)[source]#
Match the height with the height of another
Mobject
.- Parameters
mobject (Mobject) –
- match_points(mobject, copy_submobjects=True)[source]#
Edit points, positions, and submobjects to be identical to another
Mobject
, while keeping the style unchanged.Examples
Example: MatchPointsScene ¶
from manim import * class MatchPointsScene(Scene): def construct(self): circ = Circle(fill_color=RED, fill_opacity=0.8) square = Square(fill_color=BLUE, fill_opacity=0.2) self.add(circ) self.wait(0.5) self.play(circ.animate.match_points(square)) self.wait(0.5)
- Parameters
mobject (Mobject) –
copy_submobjects (bool) –
- match_updaters(mobject)[source]#
Match the updaters of the given mobject.
- Parameters
mobject (Mobject) – The mobject whose updaters get matched.
- Returns
self
- Return type
Note
All updaters from submobjects are removed, but only updaters of the given mobject are matched, not those of it’s submobjects.
See also
- match_width(mobject, **kwargs)[source]#
Match the width with the width of another
Mobject
.- Parameters
mobject (Mobject) –
- match_x(mobject, direction=array([0., 0., 0.]))[source]#
Match x coord. to the x coord. of another
Mobject
.- Parameters
mobject (Mobject) –
- match_y(mobject, direction=array([0., 0., 0.]))[source]#
Match y coord. to the x coord. of another
Mobject
.- Parameters
mobject (Mobject) –
- match_z(mobject, direction=array([0., 0., 0.]))[source]#
Match z coord. to the x coord. of another
Mobject
.- Parameters
mobject (Mobject) –
- move_to(point_or_mobject, aligned_edge=array([0., 0., 0.]), coor_mask=array([1, 1, 1]))[source]#
Move center of the
Mobject
to certain coordinate.
- next_to(mobject_or_point, direction=array([1., 0., 0.]), buff=0.25, aligned_edge=array([0., 0., 0.]), submobject_to_align=None, index_of_submobject_to_align=None, coor_mask=array([1, 1, 1]))[source]#
Move this
Mobject
next to another’sMobject
or coordinate.Examples
Example: GeometricShapes ¶
from manim import * class GeometricShapes(Scene): def construct(self): d = Dot() c = Circle() s = Square() t = Triangle() d.next_to(c, RIGHT) s.next_to(c, LEFT) t.next_to(c, DOWN) self.add(d, c, s, t)
- null_point_align(mobject)[source]#
If a
Mobject
with points is being aligned to one without, treat both as groups, and push the one with points into its own submobjects list.
- reduce_across_dimension(reduce_func, dim)[source]#
Find the min or max value from a dimension across all points in this and submobjects.
- Parameters
dim (int) –
- Return type
float
- remove(*mobjects)[source]#
Remove
submobjects
.The mobjects are removed from
submobjects
, if they exist.Subclasses of mobject may implement
-
and-=
dunder methods.See also
- remove_updater(update_function)[source]#
Remove an updater.
If the same updater is applied multiple times, every instance gets removed.
- Parameters
update_function (Union[Callable[[Mobject], None], Callable[[Mobject, float], None]]) – The update function to be removed.
- Returns
self
- Return type
See also
- restore()[source]#
Restores the state that was previously saved with
save_state()
.
- resume_updating(recursive=True)[source]#
Enable updating from updaters and animations.
- Parameters
recursive (bool) – Whether to recursively enable updating on all submobjects.
- Returns
self
- Return type
See also
- rotate(angle, axis=array([0., 0., 1.]), about_point=None, **kwargs)[source]#
Rotates the
Mobject
about a certain point.- Parameters
about_point (Sequence[float] | None) –
- rotate_about_origin(angle, axis=array([0., 0., 1.]), axes=[])[source]#
Rotates the
Mobject
about the ORIGIN, which is at [0,0,0].
- save_state()[source]#
Save the current state (position, color & size). Can be restored with
restore()
.
- scale(scale_factor, **kwargs)[source]#
Scale the size by a factor.
Default behavior is to scale about the center of the mobject.
- Parameters
scale_factor (float) – The scaling factor \(\alpha\). If \(0 < |\alpha| < 1\), the mobject will shrink, and for \(|\alpha| > 1\) it will grow. Furthermore, if \(\alpha < 0\), the mobject is also flipped.
kwargs – Additional keyword arguments passed to
apply_points_function_about_point()
.
- Returns
self
- Return type
Examples
Example: MobjectScaleExample ¶
from manim import * class MobjectScaleExample(Scene): def construct(self): f1 = Text("F") f2 = Text("F").scale(2) f3 = Text("F").scale(0.5) f4 = Text("F").scale(-1) vgroup = VGroup(f1, f2, f3, f4).arrange(6 * RIGHT) self.add(vgroup)
See also
- scale_to_fit_depth(depth, **kwargs)[source]#
Scales the
Mobject
to fit a depth while keeping width/height proportional.
- scale_to_fit_height(height, **kwargs)[source]#
Scales the
Mobject
to fit a height while keeping width/depth proportional.- Returns
self
- Return type
Examples
>>> from manim import * >>> sq = Square() >>> sq.width 2.0 >>> sq.scale_to_fit_height(5) Square >>> sq.height 5.0 >>> sq.width 5.0
- scale_to_fit_width(width, **kwargs)[source]#
Scales the
Mobject
to fit a width while keeping height/depth proportional.- Returns
self
- Return type
Examples
>>> from manim import * >>> sq = Square() >>> sq.height 2.0 >>> sq.scale_to_fit_width(5) Square >>> sq.width 5.0 >>> sq.height 5.0
- set(**kwargs)[source]#
Sets attributes.
I.e.
my_mobject.set(foo=1)
appliesmy_mobject.foo = 1
.This is a convenience to be used along with
animate
to animate setting attributes.In addition to this method, there is a compatibility layer that allows
get_*
andset_*
methods to get and set generic attributes. For instance:>>> mob = Mobject() >>> mob.set_foo(0) Mobject >>> mob.get_foo() 0 >>> mob.foo 0
This compatibility layer does not interfere with any
get_*
orset_*
methods that are explicitly defined.Warning
This compatibility layer is for backwards compatibility and is not guaranteed to stay around. Where applicable, please prefer getting/setting attributes normally or with the
set()
method.- Parameters
**kwargs – The attributes and corresponding values to set.
- Returns
self
- Return type
Examples
>>> mob = Mobject() >>> mob.set(foo=0) Mobject >>> mob.foo 0
- set_color(color='#FFFF00', family=True)[source]#
Condition is function which takes in one arguments, (x, y, z). Here it just recurses to submobjects, but in subclasses this should be further implemented based on the the inner workings of color
- Parameters
color (Color) –
family (bool) –
- classmethod set_default(**kwargs)[source]#
Sets the default values of keyword arguments.
If this method is called without any additional keyword arguments, the original default values of the initialization method of this class are restored.
- Parameters
kwargs – Passing any keyword argument will update the default values of the keyword arguments of the initialization function of this class.
Examples
>>> from manim import Square, GREEN >>> Square.set_default(color=GREEN, fill_opacity=0.25) >>> s = Square(); s.color, s.fill_opacity (<Color #83c167>, 0.25) >>> Square.set_default() >>> s = Square(); s.color, s.fill_opacity (<Color white>, 0.0)
Example: ChangedDefaultTextcolor ¶
from manim import * config.background_color = WHITE class ChangedDefaultTextcolor(Scene): def construct(self): Text.set_default(color=BLACK) self.add(Text("Changing default values is easy!")) # we revert the colour back to the default to prevent a bug in the docs. Text.set_default(color=WHITE)
- set_x(x, direction=array([0., 0., 0.]))[source]#
Set x value of the center of the
Mobject
(int
orfloat
)
- set_y(y, direction=array([0., 0., 0.]))[source]#
Set y value of the center of the
Mobject
(int
orfloat
)
- set_z(z, direction=array([0., 0., 0.]))[source]#
Set z value of the center of the
Mobject
(int
orfloat
)
- set_z_index(z_index_value, family=True)[source]#
Sets the
Mobject
’sz_index
to the value specified in z_index_value.- Parameters
z_index_value (float) – The new value of
z_index
set.family (bool) – If
True
, thez_index
value of all submobjects is also set.
- Returns
The Mobject itself, after
z_index
is set. For chaining purposes. (Returns self.)- Return type
Examples
Example: SetZIndex ¶
from manim import * class SetZIndex(Scene): def construct(self): text = Text('z_index = 3', color = PURE_RED).shift(UP).set_z_index(3) square = Square(2, fill_opacity=1).set_z_index(2) tex = Tex(r'zIndex = 1', color = PURE_BLUE).shift(DOWN).set_z_index(1) circle = Circle(radius = 1.7, color = GREEN, fill_opacity = 1) # z_index = 0 # Displaying order is now defined by z_index values self.add(text) self.add(square) self.add(tex) self.add(circle)
- set_z_index_by_z_coordinate()[source]#
Sets the
Mobject
’s z coordinate to the value ofz_index
.- Returns
The Mobject itself, after
z_index
is set. (Returns self.)- Return type
- shift(*vectors)[source]#
Shift by the given vectors.
- Parameters
vectors (ndarray) – Vectors to shift by. If multiple vectors are given, they are added together.
- Returns
self
- Return type
See also
- shuffle(recursive=False)[source]#
Shuffles the list of
submobjects
.
- shuffle_submobjects(*args, **kwargs)[source]#
Shuffles the order of
submobjects
Examples
Example: ShuffleSubmobjectsExample ¶
from manim import * class ShuffleSubmobjectsExample(Scene): def construct(self): s= VGroup(*[Dot().shift(i*0.1*RIGHT) for i in range(-20,20)]) s2= s.copy() s2.shuffle_submobjects() s2.shift(DOWN) self.play(Write(s), Write(s2))
- sort(point_to_num_func=<function Mobject.<lambda>>, submob_func=None)[source]#
Sorts the list of
submobjects
by a function defined bysubmob_func
.
- sort_submobjects(*args, **kwargs)[source]#
Sort the
submobjects
- stretch_to_fit_depth(depth, **kwargs)[source]#
Stretches the
Mobject
to fit a depth, not keeping width/height proportional.
- stretch_to_fit_height(height, **kwargs)[source]#
Stretches the
Mobject
to fit a height, not keeping width/depth proportional.- Returns
self
- Return type
Examples
>>> from manim import * >>> sq = Square() >>> sq.width 2.0 >>> sq.stretch_to_fit_height(5) Square >>> sq.height 5.0 >>> sq.width 2.0
- stretch_to_fit_width(width, **kwargs)[source]#
Stretches the
Mobject
to fit a width, not keeping height/depth proportional.- Returns
self
- Return type
Examples
>>> from manim import * >>> sq = Square() >>> sq.height 2.0 >>> sq.stretch_to_fit_width(5) Square >>> sq.width 5.0 >>> sq.height 2.0
- suspend_updating(recursive=True)[source]#
Disable updating from updaters and animations.
- Parameters
recursive (bool) – Whether to recursively suspend updating on all submobjects.
- Returns
self
- Return type
See also
- update(dt=0, recursive=True)[source]#
Apply all updaters.
Does nothing if updating is suspended.
- Parameters
dt (float) – The parameter
dt
to pass to the update functions. Usually this is the time in seconds since the last call ofupdate
.recursive (bool) – Whether to recursively update all submobjects.
- Returns
self
- Return type
See also
- property width#
The width of the mobject.
- Return type
float
Examples
Example: WidthExample ¶
from manim import * class WidthExample(Scene): def construct(self): decimal = DecimalNumber().to_edge(UP) rect = Rectangle(color=BLUE) rect_copy = rect.copy().set_stroke(GRAY, opacity=0.5) decimal.add_updater(lambda d: d.set_value(rect.width)) self.add(rect_copy, rect, decimal) self.play(rect.animate.set(width=7)) self.wait()
See also