tpt-physics-engine

Rust

High-performance physics simulation engine written in Rust — rigid body dynamics, collision detection, constraint solver, broad/narrow phase algorithms, and game-ready integration. MIT licensed.

0 stars0 forks0 watchers
collision-detectiongame-developmentgame-engineopen-sourcephysics-enginerigid-body-dynamicsrustsimulation

Languages

Rust100.0%
README

TPT Physics Engine

A comprehensive, high-performance physics simulation engine written in Rust, designed for research, education, and industry applications across multiple domains of physics.

Overview

The TPT Physics Engine is a unified framework that provides accurate and efficient simulations across classical mechanics, electromagnetism, quantum approximations, fluid dynamics, and advanced research applications. Built with Rust for performance and safety, it offers both 2D and 3D physics simulation capabilities with extensive customization options.

Key Features

Core Physics Domains

  • Classical Mechanics: Rigid body dynamics, soft bodies, particle systems, constraints
  • Fluid Dynamics: SPH (Smoothed Particle Hydrodynamics) with planned grid-based methods
  • Electromagnetism: Charge systems, field calculations, Maxwell's equations
  • Quantum Mechanics: Schrödinger equation solvers, quantum tunneling approximations
  • Thermodynamics: Heat transfer, phase changes, entropy calculations
  • Acoustics: Wave propagation, Doppler effects, acoustic materials
  • Optics: Ray tracing, wave optics, lens/mirror systems

Advanced Capabilities

  • Research Tools: Knowledge mapping, hypothesis testing, theory validation
  • Educational Applications: Interactive curriculum modules, virtual labs
  • Industry Applications: Game physics, engineering simulations, robotics
  • Performance: SIMD operations, multithreading, GPU acceleration support
  • Integration: Python bindings, REST API, WebAssembly, ROS integration

Technical Features

  • Entity Component System (ECS) architecture
  • Multiple integration methods (Euler, Verlet, RK4)
  • Spatial partitioning (octree, BVH)
  • Constraint-based solvers (PGS, impulse-based)
  • Event system for physics interactions
  • Comprehensive collision detection (GJK, EPA, SAT)

Installation

Prerequisites

  • Rust 1.70+ (stable toolchain recommended)
  • Cargo package manager

Building from Source

# Clone the repository
git clone https://github.com/yourusername/tpt-physics-engine.git
cd tpt-physics-engine

# Build the entire workspace
cargo build --release

# Run tests
cargo test --workspace

# Run examples
cargo run --example basic_physics

Python Bindings (Planned)

# Install Python dependencies
pip install pyo3 numpy

# Build Python extension
cargo build --release --features python

Quick Start

Basic Rigid Body Simulation

use tpt_core::{World, Entity};
use physics_3d::{RigidBody, RigidBodyBuilder};

fn main() {
    let mut world = World::new();

    // Create a rigid body
    let entity = world.create_entity();
    let rigid_body = RigidBodyBuilder::new()
        .position(Vector3::new(0.0, 10.0, 0.0))
        .mass(1.0)
        .build();

    world.add_component(entity, rigid_body);

    // Run simulation
    for _ in 0..1000 {
        world.update(0.016); // 60 FPS
        // Access updated positions, velocities, etc.
    }
}

Particle System

use physics_2d::{ParticleSystem, ParticleEmitter};

let mut particle_system = ParticleSystem::new();
let emitter = ParticleEmitter::new()
    .position(Vector2::new(0.0, 0.0))
    .emission_rate(100.0)
    .lifetime(5.0)
    .build();

particle_system.add_emitter(emitter);

Fluid Simulation

use physics_2d::{SPHFluid, FluidParticle};

let mut fluid = SPHFluid::new();
fluid.add_particle(FluidParticle::new(Vector2::new(0.0, 0.0), 1.0));
// Add more particles and simulate

Architecture

Core Modules

  • tpt-core: ECS framework, math utilities, time management
  • physics-2d: 2D physics simulation (rigid bodies, particles, fluids)
  • physics-3d: 3D physics simulation with advanced features
  • knowledge-mapping: Research tools and ontology management
  • python-bindings: Python integration layer

Entity Component System

The engine uses an ECS architecture for maximum flexibility:

// Define components
#[derive(Component)]
struct Position(Vector3<f32>);

#[derive(Component)]
struct Velocity(Vector3<f32>);

// Create systems
struct PhysicsSystem;
impl System for PhysicsSystem {
    fn update(&mut self, world: &mut World, dt: f32) {
        // Update physics for all entities with Position and Velocity
    }
}

Examples

Run the included examples to see the engine in action:

# Basic physics demonstration
cargo run --example basic_physics

# 2D physics sandbox
cargo run --example physics_2d_demo

# Particle system demo
cargo run --example particle_demo

# Soft body simulation
cargo run --example soft_body_demo

# Fluid dynamics
cargo run --example fluid_demo

# Knowledge mapping tools
cargo run --example knowledge_mapping_demo

Research Applications

Physics Conjecture Challenge

The engine includes a framework for testing computational physics conjectures:

use knowledge_mapping::conjectures::ConjectureEngine;

let mut engine = ConjectureEngine::new();
engine.load_conjectures();
// Test conjectures computationally

Theory Validation

Automated hypothesis testing and validation:

use knowledge_mapping::validation::TheoryValidator;

let validator = TheoryValidator::new();
validator.test_theory(theory, experimental_data);

Performance

Benchmarks

| Simulation Type | Performance (particles/second) | |-----------------|--------------------------------| | Rigid Bodies (3D) | 10,000+ | | Particles (2D) | 100,000+ | | SPH Fluid | 50,000+ | | Soft Bodies | 25,000+ |

Optimization Features

  • SIMD vectorization for math operations
  • Parallel computation using Rayon
  • Memory-efficient data structures
  • Level-of-detail (LOD) systems
  • GPU acceleration support (planned)

Testing and Validation

# Run all tests
cargo test --workspace

# Run benchmarks
cargo bench

# Physics validation
cargo run --example physics_validation

Documentation

API Documentation

Generate and view API docs:

cargo doc --open

Tutorials

Contributing

We welcome contributions! Please see our Contributing Guide for details.

Development Setup

# Install development dependencies
cargo install cargo-watch cargo-expand cargo-udeps

# Run tests in watch mode
cargo watch -x test

# Check for unused dependencies
cargo udeps

Code Style

# Format code
cargo fmt

# Lint code
cargo clippy

License

This project is licensed under the MIT License - see the LICENSE file for details.

Roadmap

Current Development Focus

  • [ ] Complete Python bindings
  • [ ] Add GPU acceleration
  • [ ] Implement advanced fluid dynamics
  • [ ] Expand research tool capabilities

Future Plans

  • WebAssembly bindings for browser-based education
  • ROS integration for robotics applications
  • Machine learning integration for physics discovery
  • Real-time collaborative physics simulation

Citation

If you use this engine in your research, please cite:

@software{tpt_physics_engine,
  title = {TPT Physics Engine},
  author = {Your Name},
  year = {2025},
  url = {https://github.com/yourusername/tpt-physics-engine}
}

Support

Acknowledgments

This project builds upon the excellent Rust ecosystem and draws inspiration from established physics engines while focusing on research and educational applications.