All Projects → tmcclintock → FrisPy

tmcclintock / FrisPy

Licence: MIT license
Frisbee flight simulator written in Python.

Programming Languages

Jupyter Notebook
11667 projects
python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to FrisPy

Torque
2d 纯计算高性能刚体物理引擎
Stars: ✭ 62 (+169.57%)
Mutual labels:  physics, physics-simulation
Spirit
Atomistic Spin Simulation Framework
Stars: ✭ 67 (+191.3%)
Mutual labels:  physics, physics-simulation
Picongpu
Particle-in-Cell Simulations for the Exascale Era ✨
Stars: ✭ 452 (+1865.22%)
Mutual labels:  physics, physics-simulation
GAMES103
notes and related materials for GAMES103
Stars: ✭ 21 (-8.7%)
Mutual labels:  physics, physics-simulation
gopem
GUI for OPEM library
Stars: ✭ 20 (-13.04%)
Mutual labels:  physics, physics-simulation
N-body-numerical-simulation
Script written in Python to integrate the equations of motion of N particles interacting with each other gravitationally. The script computes the equations of motion and use scipy.integrate to integrate them. Then it uses matplotlib to visualize the solution.
Stars: ✭ 40 (+73.91%)
Mutual labels:  physics, physics-simulation
Mcmd
Monte Carlo and Molecular Dynamics Simulation Package
Stars: ✭ 52 (+126.09%)
Mutual labels:  physics, physics-simulation
magpylib
Python package for computation of magnetic fields of magnets, currents and moments.
Stars: ✭ 95 (+313.04%)
Mutual labels:  physics, physics-simulation
BowlerStudio
A Full-Stack Robotics Development Environment
Stars: ✭ 95 (+313.04%)
Mutual labels:  physics, physics-simulation
Dynamics
A Compositional Object-Based Approach to Learning Physical Dynamics
Stars: ✭ 159 (+591.3%)
Mutual labels:  physics, physics-simulation
opem
OPEM (Open Source PEM Fuel Cell Simulation Tool)
Stars: ✭ 107 (+365.22%)
Mutual labels:  physics, physics-simulation
creative-coding-notebooks
🎨 An authorial collection of fundamental recipes on Creative Coding and Recreational Programming.
Stars: ✭ 17 (-26.09%)
Mutual labels:  physics, physics-simulation
fdtd
A 3D electromagnetic FDTD simulator written in Python
Stars: ✭ 195 (+747.83%)
Mutual labels:  physics, physics-simulation
Sicmutils
Scmutils in Clojure
Stars: ✭ 447 (+1843.48%)
Mutual labels:  physics, physics-simulation
Incoherent-Light-Simulation
Simulation of the propagation of incoherent light, aiming to illustrate the concept of spatial coherence.
Stars: ✭ 98 (+326.09%)
Mutual labels:  physics, physics-simulation
Latticeboltzmann
A 2D Lattice Boltzmann program
Stars: ✭ 34 (+47.83%)
Mutual labels:  physics, physics-simulation
Qrack
Comprehensive, GPU accelerated framework for developing universal virtual quantum processors
Stars: ✭ 79 (+243.48%)
Mutual labels:  physics, physics-simulation
Py3ODE
Port of PyODE for Python 3
Stars: ✭ 29 (+26.09%)
Mutual labels:  physics, physics-simulation
Libbulletjme
A JNI interface to Bullet Physics and V-HACD
Stars: ✭ 55 (+139.13%)
Mutual labels:  physics, physics-simulation
kosm
Kosm for Android source code
Stars: ✭ 33 (+43.48%)
Mutual labels:  physics

TRAVIS COVERALLS LICENSE

FrisPy

Documentation for FrisPy package can be found here on RTD.

This repository contains a physical model for a flying disc. Using this code, one can simulate trajectories of discs with varying initial conditions, while also changing the underlying physical modlel. This is useful for analyzing the mechanics of a disc in terms of its design, as well as creating simulated throws for things like disc launchers or other helpful tools.

This is a pure Python rebuild of the old FrisPy code, which included a version of the integrator written in C for speed. To obtain a fast version of the modeling code, either roll back to an old version or check out the Frisbee_Simulator repository.

The earliest implementation of this model that I could find was by Sara Ann Hummel for their 2003 Masters thesis for UC Davis. You can find the document in full on this page.

Installation

The easiest way to install this package is with pip. The PyPI package can be viewed here.

pip install frispy

To install from source, there are other steps involved. First, you must obtain the code from Github. If you have git installed you can clone the repository from the command line:

git clone https://github.com/tmcclintock/FrisPy.git

or with the GitHub Desktop application. Once you have the code, change into the directory and proceed.

Note, the only hard requirements for this package are python>=3.6, numpy, scipy, and matplotlib (plotting only). Note that this package uses the relatively recent scipy.integrate.solve_ivp method, which may not exist in older versions of scipy. If you have these three packages, you can install this package with the setup.py file without worrying about creating an environment.

From an Anaconda environment

The preferred method of installation is with anaconda You can install all the requirements into a compatible environment called frispy by running the following command:

conda env create -f environment.yml

You can then install the package the usual way

python setup.py install

You can also use pip to install the requirements from the requirements.txt file by running:

pip install -r requirements.txt

Then follow this by using the setup.py file to install.

Testing

Verify your installation by running:

pytest

Please report any problems you encounter on the issues page. Thank you!

Running

Check out example.py to see how to run and view results. In words, you create a disc and compute its trajectory.

from frispy import Disc

disc = Disc()
result = disc.compute_trajectory()
times = result.times
x, y, z = result.x, result.y, result.z

Once you have a trajectory, you can use that to create visualizations. For instance, to plot the height of the disc against one of its horizontal coordintes (x), you can run:

import matplotlib.pyplot as plt

plt.plot(x, z)
plt.show()

Soon

There are some big upgrades on the horizon! Stay tuned for:

  • animated trajectories
  • documentation
  • example Jupyter notebooks
  • plotting routines
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].