Skip to main content

SymPy Mechanics Plotter

Project description

SymMePlot

PyPI Tests

SymMePlot is a visualization tool designed for mechanical systems created using the mechanics module in SymPy, sympy.physics.mechanics.

The sympy.physics.mechanics module allows users to define mechanical systems symbolically to derive their analytic equations of motion. During this process, users can construct various objects such as reference frames, points, bodies, and more.

SymMePlot enhances this process by providing a way to visualize these constructed objects. It integrates with visualization backends like Matplotlib, and creates visual representations based on the parametrization of the symbols involved in the system.

SymMePlot is available on both PyPI and Conda-Forge. To install the latest release including Matplotlib from PyPI, run:

pip install symmeplot matplotlib

Usage

Most of your programs are expected to follow this structure:

  1. Creation of the system in sympy using the objects from sympy.physics.mechanics.
  2. Initiate a Scene with the inertial frame and absolute origin.
  3. Add your frames, vectors and points to the plotter instance.
  4. Lambdify and evaluate the system.
  5. Plot the system.

Below is a basic example of how this looks in practise:

import numpy as np
from symmeplot.matplotlib import Scene3D
from sympy.physics.mechanics import Point, ReferenceFrame, dynamicsymbols

# Create the system in sympy
N = ReferenceFrame("N")
A = ReferenceFrame("A")
q = dynamicsymbols("q")
A.orient_axis(N, N.z, q)
N0 = Point("N_0")
v = 0.2 * N.x + 0.2 * N.y + 0.7 * N.z
A0 = N0.locatenew("A_0", v)
# Create the instance of the scene specifying the inertial frame and origin
scene = Scene3D(N, N0, scale=0.5)
# Add the objects to the system
scene.add_vector(v)
scene.add_frame(A, A0, ls="--")
scene.add_point(A0, color="g")
# Evaluate the system.
scene.lambdify_system(q)
scene.evaluate_system(0.5)
# Plot the system
scene.plot()

# You can also animate this system.
ani = scene.animate(lambda q: (q,), frames=np.linspace(0, 2 * np.pi, 60))
ani.save("animation.gif", fps=30)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

symmeplot-0.2.2.tar.gz (364.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

symmeplot-0.2.2-py3-none-any.whl (36.2 kB view details)

Uploaded Python 3

File details

Details for the file symmeplot-0.2.2.tar.gz.

File metadata

  • Download URL: symmeplot-0.2.2.tar.gz
  • Upload date:
  • Size: 364.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for symmeplot-0.2.2.tar.gz
Algorithm Hash digest
SHA256 b6bf722492b4840f8573c77da1c6e1bf1e72405218d2d0cdd0b1d3d7b8105625
MD5 7e49f0598532235f057dadf9b3b656e1
BLAKE2b-256 42842c67f085278f8213da10d4cb2f51f9435f614ff590eb1bdcd027134fb2ba

See more details on using hashes here.

File details

Details for the file symmeplot-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: symmeplot-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 36.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for symmeplot-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 649a517ff8ee539b3a1e4a4f3be47233f48c63176b58f84a6007869b44fcabd7
MD5 e5f9c59a2da56ae802f2bb3b7dd31ee2
BLAKE2b-256 340b8c3632abc7abe7aed89568a400737340102ab910f6ad645dbfa7857f1897

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page