
Simulating Mechanical Curve Drawing using PyMunk
https://coe.psu.ac.th/ad/curveDraw/
================================================
  Andrew Davison
  Dept. of Computer Engineering
  Prince of Songkla University
  Hat Yai, Songkhla 90110, Thailand
  E-mail: ad@coe.psu.ac.th
  February 2025


This zip file contains the following Python code.

* linkUtils.py  -- the module used for ball and beam creation

The code depends on the following modules:
* Pymunk (http://www.pymunk.org/en/latest/)
* Pygame (https://www.pygame.org/news)
* Matplotlib (https://matplotlib.org/)
* Scipy (https://scipy.org/) (for parabolaVS.py only)


Examples 
========
For detailed explanations please read CurveDrawing.pdf (available
at the website), and the code is also documented.

1. Simple Examples 
------------------
* circle.py
* crank.py, crankRocker.py
* parallelogramBraced.py
* contraPar.py, contraParBraced.py

2. Straight Lines
-----------------
* watts.py
* chebyshev.py, chebLambda.py, plantigrade.py
* roberts.py
* peaucellier.py
* hartAFrame.py

3. Conic Section Curves
-----------------------
* parabolaVS.py (uses SciPy), parabolaT.py
* ellipseCT.py, ellipseBS.py, trammel.py
* hyperbolaFrame.py, hyperbolaX.py

4. Other Curves
---------------
* conchoid.py
* cissoid.py 
* limacon.py
* quadratrix.py

4.1. Using Wheels
-----------------
* cycloid.py, cycloidBeam.py
* hypocycloid.py
* cardioid.py, cardioidBeam.py

4.2. Using Couplers
-------------------
* trainCoupler.py
* lissajous.py
* agnesi.py

4.3. Spirals
------------
* logSpiral.py
* archSpiralL.py

5. Others
---------
* chain.py
* constraints.py (a PyMunk example)

