Skip to content

PuspenduPH/Roulette-Curves-Visualization

Repository files navigation

🎡 Roulette Curves: Cycloids, Trochoids & Beyond

Explore the mesmerising world of roulette curves — from cycloids to hypotrochoids and epitrochoids — using Python, math, and animations.

Trochoids Hypotrochoids Epitrochoids

📘 Overview

This repository contains a Jupyter Notebook that dives deep into roulette curves, a fascinating class of curves generated by the rolling motion of one curve on another. Through interactive plots, visualizations, and animations, this project unpacks both the theory and beauty of these curves.

✨ Highlights

🔁 Trochoids

  • Rolling of a circle along a straight line.

  • Discussed and visualized:

    • Common Cycloids

    • Curtate Cycloids

    • Prolate Cycloids

  • Generalized via a reusable Trochoids class.

  • Animated rolling motion with traced paths.

🔵 Hypotrochoids

  • Rolling of a circle inside another circle.

  • Special cases:

    • Hypocycloids

      Integer n Rational n Irrational n
    • Rose Curves

      Integer n Rational n
    • Ellipses

  • Investigated how the ratio $n = \frac{a}{b}$ (fixed to rolling circle radius) influences shape, periodicity, and closure.

🔴 Epitrochoids

  • Rolling of a circle outside another circle.

  • Special cases:

    • Epicycloids

      • Integer n

        Cardiod (n=1) Nephroid (n=2) Trefoiloid (n=3) Ranunculoid (n=4)
      • Rational and Irrational n

        Integer n Rational n Irrational n
    • Rose Curves

      Integer n Rational n
    • Circles

    • Limacons

  • Explored behaviour under different values of $n$.

Tautochronic Property of Cycloids

  • Showcased the unique property where all particles take the same time to reach the bottom of an inverted cycloid, regardless of starting point.

  • Simulated:

    • Cycloidal Pendulum motion

    • Balls sliding along the path simultaneously

  • Illustrated using animations and physics-based modelling.

📁 Repository Structure

roulette-curves/
│
├── 📓 RouletteCurves.ipynb          \# Main Jupyter notebook
├── 📁 ANIMATIONS/                   \# GIFs and MP4s of animated curves
├── 📁 IMAGES/                       \# Static images used in README or notebook
├── 📄 README.md                     \# Project documentation
├── 📄 requirements.txt              \# Required Python packages

🛠️ Installation & Usage

  1. Clone the repository:

    git clone https://github.com/PuspenduPH/Roulette-Curves-Visualization.git
    cd Roulette-Curves-Visualization
  2. Install dependencies:

    It's recommended to use a virtual environment.

    pip install -r requirements.txt
  3. Launch the notebook:

    jupyter notebook RouletteCurves.ipynb

📦 Requirements

  • Python ≥ 3.8
  • NumPy
  • Matplotlib
  • SciPy
  • IPython
  • Jupyter
  • (Optional) tqdm for animation progress

All dependencies are listed in requirements.txt.

🧠 Inspiration & Learning Goals

  • Understand how rolling motions generate intricate geometric paths.
  • Analyze how parameter ratios affect shape and periodicity.
  • Explore physics applications like the tautochronic problem and pendulums.
  • Combine theory with visualization to enhance mathematical intuition.

📜 License

This project is licensed under the MIT License.

About

A Python-based interactive notebook exploring the beauty of roulettes — cycloids, hypotrochoids, and epitrochoids — with theory, plots, and animations.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors