Pyqtgraph’s Scene#
Classes:
|
Class for plotting sympy mechanics in pyqtgraph. |
- class symmeplot.pyqtgraph.scene.Scene3D(inertial_frame: sympy.physics.vector.frame.ReferenceFrame, zero_point: sympy.physics.vector.point.Point, view: GLViewWidget | None = None, **inertial_frame_properties)#
Bases:
SceneBase
Class for plotting sympy mechanics in pyqtgraph.
- 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.view (
pyqtgraph.opengl.GLViewWidget
, optional) – The view in which the scene should be plotted. If None, a new view is created.**inertial_frame_properties (
dict
, optional) – Keyword arguments are parsed to thesymmeplot.pyqtgraph.plot_objects.PlotFrame
representing the inertial reference frame.
Examples
import sympy.physics.mechanics as me from symmeplot.pyqtgraph import Scene3D N = me.ReferenceFrame("N") A = me.ReferenceFrame("A") A.orient_axis(N, N.z, 1) N0 = me.Point("N_0") v = 0.2 * N.x + 0.2 * N.y + 0.7 * N.z A0 = N0.locatenew("A_0", v) scene = Scene3D(N, N0, scale=0.5) scene.add_vector(v, name="v") scene.add_frame(A, A0, as_mesh=True) scene.lambdify_system(()) scene.evaluate_system() scene.plot()
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
.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 asympy_object
.update
()Update the objects on the scene, based on the currect values.
Attributes:
Artists used to plot the object.
Plot objects.
The reference frame with respect to which all objects will be oriented.
Plot objects.
List of evaluated values for the object's variables.
The view in which the scene is plotted.
The absolute origin with respect to which all objects will be positioned.
- add_body(body, **kwargs)#
Add a sympy body to the scene.
- Parameters:
body (
sympy.physics.mechanics.rigidbody.RigidBody
orsympy.physics.mechanics.particle.Particle
) – The body that should be plotted.**kwargs (
dict
, optional) – Kwargs that are parsed to both internally used plot objects.
- 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:
frame (
sympy.physics.vector.frame.ReferenceFrame
) – The reference frame that should be plotted.origin (
sympy.physics.vector.point.Point
,sympy.physics.vector.vector.Vector
, optional) – The origin of the reference frame. Default is the zero_point.**kwargs (
dict
, optional) – Kwargs that are parsed to plot object.
- 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:
points (
list
ofsympy.physics.vector.point.Point
orsympy.physics.vector.vector.Vector
) – The points or vectors through which the line should be plotted.name (
str
, optional) – The name of the line. Default is None.**kwargs – Kwargs that are parsed to plot object.
- 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:
point (
sympy.physics.vector.point.Point
orsympy.physics.vector.vector.Vector
) – The point or vector to be plotted as point in space.**kwargs – Keyword arguments are parsed to the plot object.
- 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:
vector (
sympy.physics.vector.vector.Vector
) – The vector that should be plotted with respect to the zero_point.origin (
sympy.physics.vector.point.Point
,sympy.physics.vector.vector.Vector
, optional) – The origin of the reference frame. Default is the zero_point.**kwargs (
dict
, optional) – Kwargs that are parsed to the plot object.
- Returns:
The added plot object.
- Return type:
PlotVector
- animate(get_args: Callable[[Any], tuple], frames: Iterable[Any] | int, interval: int = 30) None #
Animate the scene.
- Parameters:
get_args (
Callable
) – Function that returns the arguments for theevaluate_system
method. The function should takes the current frame as input.frames (
int
oriterable
) – Number of frames or iterable with frames.interval (
int
, optional) – Time interval between frames in milliseconds. Default is 30.
- property artists: tuple[ArtistBase, ...]#
Artists used to plot the object.
- 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 exampleReferenceFrame('N')
will give thePlotFrame
of that reference frame. If theplot_object
has not been added it will returnNone
.- Parameters:
sympy_object (
Any
orstr
) – SymPy object to search for. If it is a string it will search for the name.- Returns:
Retrieved plot object.
- Return type:
PlotBase
orNone
- 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()
. Seesympy.utilities.lambdify.lambdify()
for more information.
- plot() None #
Plot all plot objects.
- set_visibility(sympy_object: Any | str, is_visible: bool, raise_error: bool = True) None #
Hide or show a
plot_object
based on asympy_object
.- Parameters:
sympy_object (
sympy.physics.vector.point.Point
orsympy.physics.vector.vector.Vector
orsympy.physics.vector.frame.ReferenceFrame
orsympy.physics.mechanics.particle.Particle
orsympy.physics.mechanics.rigidbody.RigidBody
orstr
) – SymPy object to show or hide.is_visible (
bool
) – If True showplot_object
, otherwise hide plot_object.raise_error (
bool
, optional) – If plot_object not found raise an error. Default is True.
- 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 view: GLViewWidget#
The view in which the scene is plotted.
- property zero_point: sympy.physics.vector.point.Point#
The absolute origin with respect to which all objects will be positioned.