1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
// Copyright (C) 2026 Jorge Andre Castro
// GPL-2.0-or-later
//! # embassy-ssd1306-physics
//!
//! Dessins 2D `no_std` d'objets physiques pour écrans OLED SSD1306 (128×64),
//! construite au-dessus de `[`embassy-ssd1306-graphics`]`.
//!
//! ## Objets disponibles
//!
//! | Module | Struct | Description |
//! |-----------------|----------------|----------------------------------------------|
//! | [`robotic_arm`] | [`RoboticArm`] | Bras industriel 2D (socle + pince pneumatique) |
//! | [`pendulum`] | [`Pendulum`] | Pendule simple (encastrement + tige + masse) |
//! | [`spring_mass`] | [`SpringMass`] | Système ressort-masse vertical |
//! | [`compass`] | [`Compass`] | Boussole (cadran + cardinaux + aiguille) |
//! | [`gear`] | [`Gear`] | Engrenage (dents + moyeu creux) |
//! | [`piston`] | [`Piston`] | Piston 2D mécanique (chambre + tige guidée) |
//!
//! ## Patron sin/cos injecté
//!
//! Chaque `draw()` accepte `cos_fn` et `sin_fn` de type `fn(f32) -> f32`.
//! Passez votre crate trig `no_std` :
//!
//! ```rust,no_run
//! use embedded_trig_f32 as trig;
//! arm.draw(&mut gfx, 0.785, -0.524, true, trig::cos, trig::sin);
//! ```
//!
//! ## Ajouter un nouvel objet
//!
//! 1. Créer `src/mon_objet.rs` : impl struct + `draw()` + `erase()`
//! 2. Déclarer `pub mod mon_objet;` dans `src/lib.rs`
//! 3. Ajouter `pub use mon_objet::MonObjet;` si re-export souhaité
//!
//! Aucun autre fichier à modifier.
pub use RoboticArm;
pub use Pendulum;
pub use SpringMass;
pub use Compass;
pub use Gear;
pub use GearPair;
pub use GearTrain;
pub use Piston;
pub use Facing;