
<!-- I release these notes into the public domain -->

# 3D Physics (`physics3d`)

## Table of Contents

<!-- TOC -->
* [Home](./CONTENTS.md#planning-documentation-for-fennec)
* [3D Physics (`physics3d`)](#3d-physics-physics3d)
  * [Table of Contents](#table-of-contents)
  * [Introduction](#introduction)
  * [System Layout](#system-layout)
<!-- TOC -->


## Introduction

&ensp; This system will handle newtonian physics for 3D rigid and soft-bodies. This should include
articulated skeletal systems, particle physics, and soft-body physics. The following soft-body systems
will be supported with the associated implementation; elastics with finite element simulation, cloth
physics with position-based dynamics, oceans with iWave, 3D fluid dynamics with smoothed-particle
hydrodynamics, 2D surface fluid dynamics with force-based dynamics.


## System Layout

* Rigid Body Physics
    * Newtonian Physics and Collision Resolution
    * Articulated Skeletal Systems
        * Inverse Kinematics
        * Stiff Rods
- Particle Physics
* Soft Body Physics
    * Elastics &rarr; Finite Element Simulation
    * Cloth &rarr; Position-Based Dynamics
    * Water
        * Oceans &rarr; iWave
            * Reasoning: iWave provides interactive lightweight fluid dynamics suitable for flat planes of water.
              <br><br>

        * 3D Fluid Dynamics &rarr; Smoothed-Particle Hydrodynamics
            * Reasoning: This is the simplest method for simulating 3D bodies of water. This should exclusively be
              used for small scale simulations where self-interactive fluids are necessary. I.E. pouring water into
              a glass.
              <br><br>

        * 2D Surface Fluid Dynamics &rarr; Force-Based Dynamics
            * Reasoning: This model, like iWave, provides lightweight interactive fluid dynamics, but is more easily
              adapted to flowing surfaces such as streams and rivers.