# manim.mobject.vector_field.VectorField¶

class VectorField(func, color=None, color_scheme=None, min_color_scheme_value=0, max_color_scheme_value=2, colors=['#1C758A', '#83C167', '#FFFF00', '#FC6255'], **kwargs)[source]

A vector field.

Vector fields are based on a function defining a vector at every position. This class does by default not include any visible elements but provides methods to move other Mobject s along the vector field.

Parameters
• func (Callable[[numpy.ndarray], numpy.ndarray]) – The function defining the rate of change at every position of the VectorField.

• color (Optional[colour.Color]) – The color of the vector field. If set, position-specific coloring is disabled.

• color_scheme (Optional[Callable[[numpy.ndarray], float]]) – A function mapping a vector to a single value. This value gives the position in the color gradient defined using min_color_scheme_value, max_color_scheme_value and colors.

• min_color_scheme_value (float) – The value of the color_scheme function to be mapped to the first color in colors. Lower values also result in the first color of the gradient.

• max_color_scheme_value (float) – The value of the color_scheme function to be mapped to the last color in colors. Higher values also result in the last color of the gradient.

• colors (Sequence[colour.Color]) – The colors defining the color gradient of the vector field.

• kwargs (Any) – Additional arguments to be passed to the VGroup constructor

Methods

 get_colored_background_image Generate an image that displays the vector field. get_nudge_updater Get an update function to move a Mobject along the vector field. nudge Nudge a Mobject along the vector field. nudge_submobjects Apply a nudge along the vector field to all submobjects. scale_func Scale a vector field function. shift_func Shift a vector field function. start_submobject_movement Start continuously moving all submobjects along the vector field. stop_submobject_movement Stops the continous movement started using start_submobject_movement().

Attributes

 animate Used to animate the application of a method. depth The depth of the mobject. height The height of the mobject. width The width of the mobject.
get_colored_background_image(sampling_rate=5)[source]

Generate an image that displays the vector field.

The color at each position is calculated by passing the positing through a series of steps: Calculate the vector field function at that position, map that vector to a single value using self.color_scheme and finally generate a color from that value using the color gradient.

Parameters

sampling_rate (int) – The stepsize at which pixels get included in the image. Lower values give more accurate results, but may take a long time to compute.

Returns

The vector field image.

Return type

Image.Imgae

get_nudge_updater(speed=1, pointwise=False)[source]

Get an update function to move a Mobject along the vector field.

When used with add_updater(), the mobject will move along the vector field, where its speed is determined by the magnitude of the vector field.

Parameters
• speed (float) – At speed=1 the distance a mobject moves per second is equal to the magnitude of the vector field along its path. The speed value scales the speed of such a mobject.

• pointwise (bool) – Whether to move the mobject along the vector field. See nudge() for details.

Returns

The update function.

Return type

Callable[[Mobject, float], Mobject]

nudge(mob, dt=1, substeps=1, pointwise=False)[source]

Nudge a Mobject along the vector field.

Parameters
• mob (manim.mobject.mobject.Mobject) – The mobject to move along the vector field

• dt (float) – A scalar to the amount the mobject is moved along the vector field. The actual distance is based on the magnitude of the vector field.

• substeps (int) – The amount of steps the whole nudge is divided into. Higher values give more accurate approximations.

• pointwise (bool) – Whether to move the mobject along the vector field. If True the vector field takes effect on the center of the given Mobject. If False the vector field takes effect on the points of the individual points of the Mobject, potentially distorting it.

Returns

This vector field.

Return type

VectorField

Examples

Example: Nudging

from manim import *

class Nudging(Scene):
def construct(self):
func = lambda pos: np.sin(pos[1]/2)*RIGHT+np.cos(pos[0]/2)*UP
vector_field = ArrowVectorField(func, delta_x=1, delta_y=1, length_func=lambda x:x/2)
dot = Dot().move_to(circle)

vector_field.nudge(circle, -2, 60, True)
vector_field.nudge(dot, -2, 60)

self.wait(6)

nudge_submobjects(dt=1, substeps=1, pointwise=False)[source]

Apply a nudge along the vector field to all submobjects.

Parameters
• dt (float) – A scalar to the amount the mobject is moved along the vector field. The actual distance is based on the magnitude of the vector field.

• substeps (int) – The amount of steps the whole nudge is devided into. Higher values give more accurate approximations.

• pointwise (bool) – Whether to move the mobject along the vector field. See nudge() for details.

Returns

This vector field.

Return type

VectorField

static scale_func(func, scalar)[source]

Scale a vector field function.

Parameters
• func (Callable[[numpy.ndarray], numpy.ndarray]) – The function defining a vector field.

• shift_vector – The scalar to be applied to the vector field.

• scalar (float) –

Return type

Callable[[numpy.ndarray], numpy.ndarray]

Examples

Example: ScaleVectorFieldFunction

from manim import *

class ScaleVectorFieldFunction(Scene):
def construct(self):
func = lambda pos: np.sin(pos[1])*RIGHT+np.cos(pos[0])*UP
vector_field = ArrowVectorField(func)
self.wait()

func = VectorField.scale_func(func, 0.5)
self.play(vector_field.animate.become(ArrowVectorField(func)))
self.wait()

Returns

The scaled vector field function.

Return type

Callable[[np.ndarray], np.ndarray]

Parameters
• func (Callable[[numpy.ndarray], numpy.ndarray]) –

• scalar (float) –

static shift_func(func, shift_vector)[source]

Shift a vector field function.

Parameters
• func (Callable[[numpy.ndarray], numpy.ndarray]) – The function defining a vector field.

• shift_vector (numpy.ndarray) – The shift to be applied to the vector field.

Returns

The shifted vector field function.

Return type

Callable[[np.ndarray], np.ndarray]

start_submobject_movement(speed=1, pointwise=False)[source]

Start continuously moving all submobjects along the vector field.

Calling this method multiple times will result in removing the previous updater created by this method.

Parameters
Returns

This vector field.

Return type

VectorField

stop_submobject_movement()[source]

Stops the continous movement started using start_submobject_movement().

Returns

This vector field.

Return type

VectorField