Feedback Diagrams

This module provides classes and functions for creating control system block diagram animations.

Class Overview

ControlSystem

A complete control system diagram manager.

ControlBlock

A configurable block for control system diagrams.

Connection

A connection between two control blocks with optional labeling.

Detailed Documentation

ControlSystem Class

class ControlSystem[source]

Bases: object

A complete control system diagram manager.

This class manages the creation, connection, and animation of control system components including blocks, connections, inputs, outputs, and feedback paths.

__init__()[source]
add_block(name, block_type, position, params=None)[source]

Adds a new block to the system

Parameters:
  • name (str) – Name of the block

  • block_type (str) –

    Type of block, which can be of type:

    -summing_junction: Creates a summing junction (circular) -transfer_function: Creates a transfer function (rectangular)

  • position (np.ndarray | Sequence[float]) – The position of the block

  • params (any) –

    Further parameter specifications of the block:

    -label; use_math_tex, …

connect(source_block, output_port, dest_block, input_port, style='default', label=None, font_size=30, use_math_tex=True, **kwargs)[source]

Connect blocks with arrow and optional label

Parameters:
  • source_block (ControlBlock | str) – The block the connection should start from

  • output_port (str) – The port of the source_block where the connection should start from

  • dest_block (ControlBlock | str) – The block the connection should go to

  • input_port (str) – The port of the dest_block where the connection should go to

  • style (str) – Style of the arrow which can be any of: -default: Continuous connection with standard settings -dashed: Dashed connection -bold: Continuous connection with increased stroke_width

  • label (str) – Label of the connection

  • font_size (float) – Font size of the label

  • use_math_tex (bool) – Boolean which determines whether the label should be rendered in LaTeX or regular text: -If true: LaTeX -If false: Regular text

  • **kwargs (any) – Additional arguments to be passed to the connection such as: Color: color of the connection stroke_width: Thickness of the line connection

insert_between(new_block, source_block, dest_block)[source]

Inserts a block between two existing blocks

Parameters:
  • new_block (ControlBlock | str) – Add new block

  • source_block (ControlBlock | str) – The block where the connection originates from

  • dest_block (ControlBlock | str) – The block where the connection goes to

add_input(target_block, input_port, length=2, buff=0.05, label=None, use_math_tex=True, font_size=30, **kwargs)[source]

Adds an input arrow to a block.

Parameters:
  • target_block (ControlBlock | str) – The block where the input should be applied to

  • input_port (str) – The input port where the input should go to from the selected target block

  • length (float) – The length of the input connection

  • buff (float) – The buffer between the end point of the arrow and the input port

  • label (str) – Label of the input

  • font_size (float) – Font size of the label

  • use_math_tex (bool) – Boolean which determines whether the label should be rendered in LaTeX or regular text

  • **kwargs (any) – Additional arguments to be passed to Arrow: -stroke_width: Thickness of the arrow line -stroke_opacity: Opacity of the arrow -color: color of the arrow

add_output(source_block, output_port, length=2, use_math_tex=True, label=None, font_size=25, color=ManimColor('#FFFFFF'), rel_label_pos=array([0., 1., 0.]), **kwargs)[source]

Adds an output arrow from a block

Parameters:
  • source_block (ControlBlock | str) – The block where the output should originate from

  • output_port (str) – The output port where the output should start from

  • length (float) – The length of the output connection

  • buff (float) – The buffer between the end point of the arrow and the output port

  • label (str) – Label of the output

  • font_size (float) – Font size of the label

  • use_math_tex (bool) – Boolean which determines whether the label should be rendered in LaTeX or regular text

  • **kwargs (any) – Additional arguments to be passed to Arrow: -stroke_width: Thickness of the arrow line -stroke_opacity: Opacity of the arrow -color: color of the arrow

add_feedback_path(source_block, output_port, dest_block, input_port, vertical_distance=1.5, horizontal_distance=None, rel_start_offset=None, rel_end_offset=None, label=None, use_math_tex=True, color=ManimColor('#FFFFFF'), label_pos=array([0., 1., 0.]), label_buff=0.2, **kwargs)[source]

Adds a feedback path that adapts to the input port direction of the destination.

Parameters:
  • source_block (ControlBlock | str) – The block the feedback path should start from

  • output_port (str) – The output port of the source block where the feedback path should start from

  • dest_block (ControlBlock | str) – The block the feedback path should go to

  • input_port (str) – The input port of the destination block the feedback path should go to

  • vertical_distance (float) – The vertical distance the feedback path should shift upwards or downwards

  • distance (Horizontal) – The vertical distance the feedback path should shift upwards or downwards

  • rel_start_offset (np.ndarray | None) – The start offset relative to the output port of the source block of the feedback path

  • rel_end_offset (np.ndarray | None) – The end offset relative to the input port of the destination block of the feedback path

  • label (str | None) – Label of the feedback path

  • use_math_tex (bool) – When True, uses Mathtex for the label. If False, uses regular Text.

  • label_pos (np.ndarray | None) – Position relative to the path where the label should be placed. Common values are UP, DOWN, LEFT, RIGHT or specific direction arrays.

  • label_buff (float) – Buffer distance between the label and the feedback path.

  • color (Manim color) – Color of the feedback path

  • **kwargs (Any) – Additional arguments passed to the Line constructor (e.g., stroke_width, stroke_opacity).

Returns:

A VGroup containing a set of lines representing the feedback path

Return type:

VGroup

add_feedforward_path(source_block, output_port, dest_block, input_port, vertical_distance=None, horizontal_distance=None, label=None, use_math_tex=True, label_buff=0.2, rel_start_offset=None, rel_end_offset=None, font_size=30, color=ManimColor('#FFFFFF'), **kwargs)[source]

Adds a feedforward path that adapts to the input port direction of the destination.

Parameters:
  • source_block (ControlBlock | str) – The block the feedforward path should start from

  • output_port (str) – The output port of the source block where the feedforward path should start from

  • dest_block (ControlBlock | str) – The block the feedforward path should go to

  • input_port (str) – The input port of the destination block the feedforward path should go to

  • vertical_distance (float) – The vertical distance the feedforward path should shift upwards or downwards

  • distance (Horizontal) – The horizontal distance the feedforward path should shift upwards or downwards

  • rel_start_offset (np.ndarray | None) – The start offset relative to the output port of the source block of the feedforward path

  • rel_end_offset (np.ndarray | None) – The end offset relative to the input port of the destination block of the feedforward path

  • label (String) – Label of the feedforward path

  • use_math_tex (bool) – When True, uses Mathtex for the label. If False, uses regular Text.

  • label_pos (np.ndarray | None) – Relative label position

  • label_buff (float) – Buffer between arrow/Line and label

  • font_size (float) – font size of label

  • color (Manim color) – Color of the feedback path

  • **kwargs (Any) – Additional arguments passed to the Line constructor (e.g., stroke_width, stroke_opacity).

Returns:

A VGroup containing a set of lines representing the feedforward path

Return type:

VGroup

get_all_components()[source]

Function which returns all current components of the block diagram in one single VGroup

animate_signals(scene, *blocks, spawn_interval=0.5, signal_speed=1.5, duration=10.0, color=ManimColor('#F7D96F'), feedback_color=ManimColor('#F7D96F'), feedforward_color=ManimColor('#F7D96F'), radius=0.08, include_input=True, include_output=True, include_feedback=True, include_feedforward=True, feedforward_delay=None, feedback_delay=None)[source]

Animates real-time signal flow for a given block diagram.

Creates moving dots that travel along connections, inputs, outputs, feedback, and feedforward paths to visualize signal propagation through the control system.

Parameters:
  • scene (Scene) – The Manim scene object where the animation will be rendered.

  • *blocks (ControlBlock or str) – Variable number of blocks defining the main signal path sequence. Blocks can be provided as ControlBlock objects or block names. The animation will follow the connection path between these blocks in order.

  • spawn_interval (float, optional) – Time interval between spawning new signal dots, in seconds. Smaller values create more frequent signals. (default: 0.5)

  • signal_speed (float, optional) – Speed of signal dots movement in units per second. (default: 0.8)

  • duration (float, optional) – Total duration of the animation in seconds. (default: 10.0)

  • color (Manim color, optional) – Color of the main signal path dots. (default: YELLOW)

  • feedback_color (Manim color, optional) – Color of the feedback path signal dots. (default: YELLOW)

  • feedforward_color (Manim color, optional) – Color of the feedforward path signal dots. (default: YELLOW)

  • radius (float, optional) – Radius of the signal dots. (default: 0.12)

  • include_input (bool, optional) – Whether to animate signals on system input arrows. (default: True)

  • include_output (bool, optional) – Whether to animate signals on system output arrows. (default: True)

  • include_feedback (bool, optional) – Whether to animate signals on feedback paths. (default: True)

  • include_feedforward (bool, optional) – Whether to animate signals on feedforward paths. (default: True)

  • feedforward_delay (float or None, optional) – Delay before starting feedforward signal animation, in seconds. If None, automatically calculated based on signal path geometry. (default: None)

  • feedback_delay (float or None, optional) – Delay before starting feedback signal animation, in seconds. If None, automatically calculated based on signal path geometry. (default: None)

  • **kwargs (Any) – Additional arguments passed to the Dot constructor for signal dots: - fill_opacity: float - Opacity of the signal dots - stroke_width: float - Border stroke width - stroke_color: Manim color - Border color

Returns:

An animation of real-time signal flow

Return type:

Scene

__init__()[source]
add_block(name, block_type, position, params=None)[source]

Adds a new block to the system

Parameters:
  • name (str) – Name of the block

  • block_type (str) –

    Type of block, which can be of type:

    -summing_junction: Creates a summing junction (circular) -transfer_function: Creates a transfer function (rectangular)

  • position (np.ndarray | Sequence[float]) – The position of the block

  • params (any) –

    Further parameter specifications of the block:

    -label; use_math_tex, …

add_feedback_path(source_block, output_port, dest_block, input_port, vertical_distance=1.5, horizontal_distance=None, rel_start_offset=None, rel_end_offset=None, label=None, use_math_tex=True, color=ManimColor('#FFFFFF'), label_pos=array([0., 1., 0.]), label_buff=0.2, **kwargs)[source]

Adds a feedback path that adapts to the input port direction of the destination.

Parameters:
  • source_block (ControlBlock | str) – The block the feedback path should start from

  • output_port (str) – The output port of the source block where the feedback path should start from

  • dest_block (ControlBlock | str) – The block the feedback path should go to

  • input_port (str) – The input port of the destination block the feedback path should go to

  • vertical_distance (float) – The vertical distance the feedback path should shift upwards or downwards

  • distance (Horizontal) – The vertical distance the feedback path should shift upwards or downwards

  • rel_start_offset (np.ndarray | None) – The start offset relative to the output port of the source block of the feedback path

  • rel_end_offset (np.ndarray | None) – The end offset relative to the input port of the destination block of the feedback path

  • label (str | None) – Label of the feedback path

  • use_math_tex (bool) – When True, uses Mathtex for the label. If False, uses regular Text.

  • label_pos (np.ndarray | None) – Position relative to the path where the label should be placed. Common values are UP, DOWN, LEFT, RIGHT or specific direction arrays.

  • label_buff (float) – Buffer distance between the label and the feedback path.

  • color (Manim color) – Color of the feedback path

  • **kwargs (Any) – Additional arguments passed to the Line constructor (e.g., stroke_width, stroke_opacity).

Returns:

A VGroup containing a set of lines representing the feedback path

Return type:

VGroup

add_feedforward_path(source_block, output_port, dest_block, input_port, vertical_distance=None, horizontal_distance=None, label=None, use_math_tex=True, label_buff=0.2, rel_start_offset=None, rel_end_offset=None, font_size=30, color=ManimColor('#FFFFFF'), **kwargs)[source]

Adds a feedforward path that adapts to the input port direction of the destination.

Parameters:
  • source_block (ControlBlock | str) – The block the feedforward path should start from

  • output_port (str) – The output port of the source block where the feedforward path should start from

  • dest_block (ControlBlock | str) – The block the feedforward path should go to

  • input_port (str) – The input port of the destination block the feedforward path should go to

  • vertical_distance (float) – The vertical distance the feedforward path should shift upwards or downwards

  • distance (Horizontal) – The horizontal distance the feedforward path should shift upwards or downwards

  • rel_start_offset (np.ndarray | None) – The start offset relative to the output port of the source block of the feedforward path

  • rel_end_offset (np.ndarray | None) – The end offset relative to the input port of the destination block of the feedforward path

  • label (String) – Label of the feedforward path

  • use_math_tex (bool) – When True, uses Mathtex for the label. If False, uses regular Text.

  • label_pos (np.ndarray | None) – Relative label position

  • label_buff (float) – Buffer between arrow/Line and label

  • font_size (float) – font size of label

  • color (Manim color) – Color of the feedback path

  • **kwargs (Any) – Additional arguments passed to the Line constructor (e.g., stroke_width, stroke_opacity).

Returns:

A VGroup containing a set of lines representing the feedforward path

Return type:

VGroup

add_input(target_block, input_port, length=2, buff=0.05, label=None, use_math_tex=True, font_size=30, **kwargs)[source]

Adds an input arrow to a block.

Parameters:
  • target_block (ControlBlock | str) – The block where the input should be applied to

  • input_port (str) – The input port where the input should go to from the selected target block

  • length (float) – The length of the input connection

  • buff (float) – The buffer between the end point of the arrow and the input port

  • label (str) – Label of the input

  • font_size (float) – Font size of the label

  • use_math_tex (bool) – Boolean which determines whether the label should be rendered in LaTeX or regular text

  • **kwargs (any) – Additional arguments to be passed to Arrow: -stroke_width: Thickness of the arrow line -stroke_opacity: Opacity of the arrow -color: color of the arrow

add_output(source_block, output_port, length=2, use_math_tex=True, label=None, font_size=25, color=ManimColor('#FFFFFF'), rel_label_pos=array([0., 1., 0.]), **kwargs)[source]

Adds an output arrow from a block

Parameters:
  • source_block (ControlBlock | str) – The block where the output should originate from

  • output_port (str) – The output port where the output should start from

  • length (float) – The length of the output connection

  • buff (float) – The buffer between the end point of the arrow and the output port

  • label (str) – Label of the output

  • font_size (float) – Font size of the label

  • use_math_tex (bool) – Boolean which determines whether the label should be rendered in LaTeX or regular text

  • **kwargs (any) – Additional arguments to be passed to Arrow: -stroke_width: Thickness of the arrow line -stroke_opacity: Opacity of the arrow -color: color of the arrow

animate_signals(scene, *blocks, spawn_interval=0.5, signal_speed=1.5, duration=10.0, color=ManimColor('#F7D96F'), feedback_color=ManimColor('#F7D96F'), feedforward_color=ManimColor('#F7D96F'), radius=0.08, include_input=True, include_output=True, include_feedback=True, include_feedforward=True, feedforward_delay=None, feedback_delay=None)[source]

Animates real-time signal flow for a given block diagram.

Creates moving dots that travel along connections, inputs, outputs, feedback, and feedforward paths to visualize signal propagation through the control system.

Parameters:
  • scene (Scene) – The Manim scene object where the animation will be rendered.

  • *blocks (ControlBlock or str) – Variable number of blocks defining the main signal path sequence. Blocks can be provided as ControlBlock objects or block names. The animation will follow the connection path between these blocks in order.

  • spawn_interval (float, optional) – Time interval between spawning new signal dots, in seconds. Smaller values create more frequent signals. (default: 0.5)

  • signal_speed (float, optional) – Speed of signal dots movement in units per second. (default: 0.8)

  • duration (float, optional) – Total duration of the animation in seconds. (default: 10.0)

  • color (Manim color, optional) – Color of the main signal path dots. (default: YELLOW)

  • feedback_color (Manim color, optional) – Color of the feedback path signal dots. (default: YELLOW)

  • feedforward_color (Manim color, optional) – Color of the feedforward path signal dots. (default: YELLOW)

  • radius (float, optional) – Radius of the signal dots. (default: 0.12)

  • include_input (bool, optional) – Whether to animate signals on system input arrows. (default: True)

  • include_output (bool, optional) – Whether to animate signals on system output arrows. (default: True)

  • include_feedback (bool, optional) – Whether to animate signals on feedback paths. (default: True)

  • include_feedforward (bool, optional) – Whether to animate signals on feedforward paths. (default: True)

  • feedforward_delay (float or None, optional) – Delay before starting feedforward signal animation, in seconds. If None, automatically calculated based on signal path geometry. (default: None)

  • feedback_delay (float or None, optional) – Delay before starting feedback signal animation, in seconds. If None, automatically calculated based on signal path geometry. (default: None)

  • **kwargs (Any) – Additional arguments passed to the Dot constructor for signal dots: - fill_opacity: float - Opacity of the signal dots - stroke_width: float - Border stroke width - stroke_color: Manim color - Border color

Returns:

An animation of real-time signal flow

Return type:

Scene

connect(source_block, output_port, dest_block, input_port, style='default', label=None, font_size=30, use_math_tex=True, **kwargs)[source]

Connect blocks with arrow and optional label

Parameters:
  • source_block (ControlBlock | str) – The block the connection should start from

  • output_port (str) – The port of the source_block where the connection should start from

  • dest_block (ControlBlock | str) – The block the connection should go to

  • input_port (str) – The port of the dest_block where the connection should go to

  • style (str) – Style of the arrow which can be any of: -default: Continuous connection with standard settings -dashed: Dashed connection -bold: Continuous connection with increased stroke_width

  • label (str) – Label of the connection

  • font_size (float) – Font size of the label

  • use_math_tex (bool) – Boolean which determines whether the label should be rendered in LaTeX or regular text: -If true: LaTeX -If false: Regular text

  • **kwargs (any) – Additional arguments to be passed to the connection such as: Color: color of the connection stroke_width: Thickness of the line connection

get_all_components()[source]

Function which returns all current components of the block diagram in one single VGroup

insert_between(new_block, source_block, dest_block)[source]

Inserts a block between two existing blocks

Parameters:
  • new_block (ControlBlock | str) – Add new block

  • source_block (ControlBlock | str) – The block where the connection originates from

  • dest_block (ControlBlock | str) – The block where the connection goes to

ControlSystem Methods

ControlSystem.add_block(name, block_type, position, params=None)[source]

Adds a new block to the system

Parameters:
  • name (str) – Name of the block

  • block_type (str) –

    Type of block, which can be of type:

    -summing_junction: Creates a summing junction (circular) -transfer_function: Creates a transfer function (rectangular)

  • position (np.ndarray | Sequence[float]) – The position of the block

  • params (any) –

    Further parameter specifications of the block:

    -label; use_math_tex, …

ControlSystem.connect(source_block, output_port, dest_block, input_port, style='default', label=None, font_size=30, use_math_tex=True, **kwargs)[source]

Connect blocks with arrow and optional label

Parameters:
  • source_block (ControlBlock | str) – The block the connection should start from

  • output_port (str) – The port of the source_block where the connection should start from

  • dest_block (ControlBlock | str) – The block the connection should go to

  • input_port (str) – The port of the dest_block where the connection should go to

  • style (str) – Style of the arrow which can be any of: -default: Continuous connection with standard settings -dashed: Dashed connection -bold: Continuous connection with increased stroke_width

  • label (str) – Label of the connection

  • font_size (float) – Font size of the label

  • use_math_tex (bool) – Boolean which determines whether the label should be rendered in LaTeX or regular text: -If true: LaTeX -If false: Regular text

  • **kwargs (any) – Additional arguments to be passed to the connection such as: Color: color of the connection stroke_width: Thickness of the line connection

ControlSystem.insert_between(new_block, source_block, dest_block)[source]

Inserts a block between two existing blocks

Parameters:
  • new_block (ControlBlock | str) – Add new block

  • source_block (ControlBlock | str) – The block where the connection originates from

  • dest_block (ControlBlock | str) – The block where the connection goes to

ControlSystem.add_input(target_block, input_port, length=2, buff=0.05, label=None, use_math_tex=True, font_size=30, **kwargs)[source]

Adds an input arrow to a block.

Parameters:
  • target_block (ControlBlock | str) – The block where the input should be applied to

  • input_port (str) – The input port where the input should go to from the selected target block

  • length (float) – The length of the input connection

  • buff (float) – The buffer between the end point of the arrow and the input port

  • label (str) – Label of the input

  • font_size (float) – Font size of the label

  • use_math_tex (bool) – Boolean which determines whether the label should be rendered in LaTeX or regular text

  • **kwargs (any) – Additional arguments to be passed to Arrow: -stroke_width: Thickness of the arrow line -stroke_opacity: Opacity of the arrow -color: color of the arrow

ControlSystem.add_output(source_block, output_port, length=2, use_math_tex=True, label=None, font_size=25, color=ManimColor('#FFFFFF'), rel_label_pos=array([0., 1., 0.]), **kwargs)[source]

Adds an output arrow from a block

Parameters:
  • source_block (ControlBlock | str) – The block where the output should originate from

  • output_port (str) – The output port where the output should start from

  • length (float) – The length of the output connection

  • buff (float) – The buffer between the end point of the arrow and the output port

  • label (str) – Label of the output

  • font_size (float) – Font size of the label

  • use_math_tex (bool) – Boolean which determines whether the label should be rendered in LaTeX or regular text

  • **kwargs (any) – Additional arguments to be passed to Arrow: -stroke_width: Thickness of the arrow line -stroke_opacity: Opacity of the arrow -color: color of the arrow

ControlSystem.add_feedback_path(source_block, output_port, dest_block, input_port, vertical_distance=1.5, horizontal_distance=None, rel_start_offset=None, rel_end_offset=None, label=None, use_math_tex=True, color=ManimColor('#FFFFFF'), label_pos=array([0., 1., 0.]), label_buff=0.2, **kwargs)[source]

Adds a feedback path that adapts to the input port direction of the destination.

Parameters:
  • source_block (ControlBlock | str) – The block the feedback path should start from

  • output_port (str) – The output port of the source block where the feedback path should start from

  • dest_block (ControlBlock | str) – The block the feedback path should go to

  • input_port (str) – The input port of the destination block the feedback path should go to

  • vertical_distance (float) – The vertical distance the feedback path should shift upwards or downwards

  • distance (Horizontal) – The vertical distance the feedback path should shift upwards or downwards

  • rel_start_offset (np.ndarray | None) – The start offset relative to the output port of the source block of the feedback path

  • rel_end_offset (np.ndarray | None) – The end offset relative to the input port of the destination block of the feedback path

  • label (str | None) – Label of the feedback path

  • use_math_tex (bool) – When True, uses Mathtex for the label. If False, uses regular Text.

  • label_pos (np.ndarray | None) – Position relative to the path where the label should be placed. Common values are UP, DOWN, LEFT, RIGHT or specific direction arrays.

  • label_buff (float) – Buffer distance between the label and the feedback path.

  • color (Manim color) – Color of the feedback path

  • **kwargs (Any) – Additional arguments passed to the Line constructor (e.g., stroke_width, stroke_opacity).

Returns:

A VGroup containing a set of lines representing the feedback path

Return type:

VGroup

ControlSystem.add_feedforward_path(source_block, output_port, dest_block, input_port, vertical_distance=None, horizontal_distance=None, label=None, use_math_tex=True, label_buff=0.2, rel_start_offset=None, rel_end_offset=None, font_size=30, color=ManimColor('#FFFFFF'), **kwargs)[source]

Adds a feedforward path that adapts to the input port direction of the destination.

Parameters:
  • source_block (ControlBlock | str) – The block the feedforward path should start from

  • output_port (str) – The output port of the source block where the feedforward path should start from

  • dest_block (ControlBlock | str) – The block the feedforward path should go to

  • input_port (str) – The input port of the destination block the feedforward path should go to

  • vertical_distance (float) – The vertical distance the feedforward path should shift upwards or downwards

  • distance (Horizontal) – The horizontal distance the feedforward path should shift upwards or downwards

  • rel_start_offset (np.ndarray | None) – The start offset relative to the output port of the source block of the feedforward path

  • rel_end_offset (np.ndarray | None) – The end offset relative to the input port of the destination block of the feedforward path

  • label (String) – Label of the feedforward path

  • use_math_tex (bool) – When True, uses Mathtex for the label. If False, uses regular Text.

  • label_pos (np.ndarray | None) – Relative label position

  • label_buff (float) – Buffer between arrow/Line and label

  • font_size (float) – font size of label

  • color (Manim color) – Color of the feedback path

  • **kwargs (Any) – Additional arguments passed to the Line constructor (e.g., stroke_width, stroke_opacity).

Returns:

A VGroup containing a set of lines representing the feedforward path

Return type:

VGroup

ControlSystem.get_all_components()[source]

Function which returns all current components of the block diagram in one single VGroup

ControlSystem.animate_signals(scene, *blocks, spawn_interval=0.5, signal_speed=1.5, duration=10.0, color=ManimColor('#F7D96F'), feedback_color=ManimColor('#F7D96F'), feedforward_color=ManimColor('#F7D96F'), radius=0.08, include_input=True, include_output=True, include_feedback=True, include_feedforward=True, feedforward_delay=None, feedback_delay=None)[source]

Animates real-time signal flow for a given block diagram.

Creates moving dots that travel along connections, inputs, outputs, feedback, and feedforward paths to visualize signal propagation through the control system.

Parameters:
  • scene (Scene) – The Manim scene object where the animation will be rendered.

  • *blocks (ControlBlock or str) – Variable number of blocks defining the main signal path sequence. Blocks can be provided as ControlBlock objects or block names. The animation will follow the connection path between these blocks in order.

  • spawn_interval (float, optional) – Time interval between spawning new signal dots, in seconds. Smaller values create more frequent signals. (default: 0.5)

  • signal_speed (float, optional) – Speed of signal dots movement in units per second. (default: 0.8)

  • duration (float, optional) – Total duration of the animation in seconds. (default: 10.0)

  • color (Manim color, optional) – Color of the main signal path dots. (default: YELLOW)

  • feedback_color (Manim color, optional) – Color of the feedback path signal dots. (default: YELLOW)

  • feedforward_color (Manim color, optional) – Color of the feedforward path signal dots. (default: YELLOW)

  • radius (float, optional) – Radius of the signal dots. (default: 0.12)

  • include_input (bool, optional) – Whether to animate signals on system input arrows. (default: True)

  • include_output (bool, optional) – Whether to animate signals on system output arrows. (default: True)

  • include_feedback (bool, optional) – Whether to animate signals on feedback paths. (default: True)

  • include_feedforward (bool, optional) – Whether to animate signals on feedforward paths. (default: True)

  • feedforward_delay (float or None, optional) – Delay before starting feedforward signal animation, in seconds. If None, automatically calculated based on signal path geometry. (default: None)

  • feedback_delay (float or None, optional) – Delay before starting feedback signal animation, in seconds. If None, automatically calculated based on signal path geometry. (default: None)

  • **kwargs (Any) – Additional arguments passed to the Dot constructor for signal dots: - fill_opacity: float - Opacity of the signal dots - stroke_width: float - Border stroke width - stroke_color: Manim color - Border color

Returns:

An animation of real-time signal flow

Return type:

Scene