Expand description
§Moteur Physique 2D no_std
Moteur de simulation physique 2D minimaliste, déterministe et conçu pour
les environnements contraints ou embarqués sans allocation dynamique (#![no_std]).
§Caractéristiques
- Sans allocation (
no_std) : Utilise des tableaux à taille fixe génériques[Option<Body>; N]. - Intégration d’Euler semi-implicite : Garantit une bonne stabilité numérique pour la vélocité et la position.
- Gestion des frontières : Détection et résolution automatique des collisions avec rebond (
restitution). - Viscosité et gravité : Prise en charge des forces environnementales globales.
§Exemple d’utilisation
ⓘ
use drew_physics::{Body, Vec2, World, WorldSettings};
// Configuration de l'environnement
let settings = WorldSettings {
gravity: Vec2::new(0.0, 9.81),
viscosity: 0.1,
bounds_min: Vec2::ZERO,
bounds_max: Vec2::new(800.0, 600.0),
};
// Instanciation d'un monde capable de contenir jusqu'à 10 corps
let mut world = World::<10>::new(settings);
// Création d'un corps dynamique (masse = 2.0, rayon = 5.0)
let body = Body::new(Vec2::new(100.0, 100.0), 2.0, 5.0);
let body_idx = world.add_body(body).expect("Monde plein");
// Simulation d'un pas de temps (dt = 16ms)
world.step(0.016);Structs§
- Body
- Description d’un corps physique particulaire dans la simulation.
- Vec2
- Vecteur 2D à composantes en virgule flottante (
f32). - World
- Monde physique gérant l’intégration et la simulation globale.
- World
Settings - Paramètres globaux de l’environnement physique.