Core’s Scene#

Classes:

SceneBase(inertial_frame, zero_point, ...)

Base class for a visualization scene for sympy mechanics.

class symmeplot.core.scene.SceneBase(inertial_frame: ReferenceFrame, zero_point: Point, **inertial_frame_properties)#

Bases: ABC

Base class for a visualization scene for sympy mechanics.

Parameters:
  • inertial_frame (sympy.physics.vector.frame.ReferenceFrame) – The reference frame with respect to which all objects will be oriented.

  • origin (sympy.physics.vector.point.Point) – The absolute origin with respect to which all objects will be positioned.

  • **inertial_frame_properties – Keyword arguments are parsed to the PlotFrame representing the inertial reference frame.

Methods:

add_body(body, **kwargs)

Add a sympy body to the scene.

add_frame(frame[, origin])

Add a sympy ReferenceFrame to the scene.

add_line(points[, name])

Add a sympy Vector to the scene.

add_plot_object(plot_object)

Add a plot object to the scene.

add_point(point, **kwargs)

Add a sympy Vector to the scene.

add_vector(vector[, origin])

Add a sympy Vector to the scene.

animate(get_args, frames[, interval])

Animate the scene.

evaluate_system(*args)

Evaluate the system using the function created with lambdify_system.

get_expressions_to_evaluate()

Return a tuple of the necessary expressions for plotting.

get_plot_object(sympy_object)

Return the plot_object based on a sympy object.

lambdify_system(args[, modules, printer, ...])

Lambdify the system.

plot()

Plot all plot objects.

set_visibility(sympy_object, is_visible[, ...])

Hide or show a plot_object based on a sympy_object.

update()

Update the objects on the scene, based on the currect values.

Attributes:

artists

Artists used to plot the object.

children

Plot objects.

inertial_frame

The reference frame with respect to which all objects will be oriented.

plot_objects

Plot objects.

values

List of evaluated values for the object's variables.

zero_point

The absolute origin with respect to which all objects will be positioned.

add_body(body, **kwargs)#

Add a sympy body to the scene.

Parameters:
Returns:

The added plot object.

Return type:

PlotBody

add_frame(frame: ReferenceFrame, origin: Point | Vector | None = None, **kwargs)#

Add a sympy ReferenceFrame to the scene.

Parameters:
Returns:

The added plot object.

Return type:

PlotFrame

add_line(points: Iterable[Point | Vector], name: str | None = None, **kwargs)#

Add a sympy Vector to the scene.

Parameters:
Returns:

The added plot object.

Return type:

PlotLine

add_plot_object(plot_object: PlotBase)#

Add a plot object to the scene.

Parameters:

plot_object (PlotBase) – The plot object that should be added.

add_point(point: Point | Vector, **kwargs) type[PlotBase]#

Add a sympy Vector to the scene.

Parameters:
Returns:

The added plot object.

Return type:

PlotPoint

add_vector(vector: Vector, origin: Point | Vector | None = None, **kwargs)#

Add a sympy Vector to the scene.

Parameters:
Returns:

The added plot object.

Return type:

PlotVector

animate(get_args: Callable[[Any], tuple], frames: Iterable[Any] | int, interval: int = 30, **kwargs) None#

Animate the scene.

Parameters:
  • get_args (Callable) – Function that returns the arguments for the evaluate_system method. The function should takes the current frame as input.

  • frames (int or iterable) – Number of frames or iterable with frames.

  • interval (int, optional) – Time interval between frames in milliseconds. Default is 30.

  • **kwargs – Keyword arguments are parsed to the internally used animation function.

property artists: tuple[ArtistBase, ...]#

Artists used to plot the object.

property children: tuple[PlotBase, ...]#

Plot objects.

evaluate_system(*args) None#

Evaluate the system using the function created with lambdify_system.

get_expressions_to_evaluate() tuple#

Return a tuple of the necessary expressions for plotting.

get_plot_object(sympy_object: Any | str) PlotBase | None#

Return the plot_object based on a sympy object.

Explanation

Return the plot_object based on a provided sympy object. For example ReferenceFrame('N') will give the PlotFrame of that reference frame. If the plot_object has not been added it will return None.

Parameters:

sympy_object (Any or str) – SymPy object to search for. If it is a string it will search for the name.

Returns:

Retrieved plot object.

Return type:

PlotBase or None

property inertial_frame: sympy.physics.vector.frame.ReferenceFrame#

The reference frame with respect to which all objects will be oriented.

lambdify_system(args, modules=None, printer=None, use_imps=True, dummify=False, cse=True) Callable#

Lambdify the system.

Explanation

Lambdify the system for faster evaluation, when combined with symmeplot.core.scene.SceneBase.evaluate_system(). See sympy.utilities.lambdify.lambdify() for more information.

plot() None#

Plot all plot objects.

property plot_objects: tuple[PlotBase, ...]#

Plot objects.

set_visibility(sympy_object: Any | str, is_visible: bool, raise_error: bool = True) None#

Hide or show a plot_object based on a sympy_object.

Parameters:
update() None#

Update the objects on the scene, based on the currect values.

property values: tuple#

List of evaluated values for the object’s variables.

property zero_point: sympy.physics.vector.point.Point#

The absolute origin with respect to which all objects will be positioned.