rotation d'objet

This commit is contained in:
Frater 2026-05-11 17:53:07 +02:00
commit 69b06b5b14
3 changed files with 108 additions and 6 deletions

View file

@ -234,6 +234,45 @@ add_math_surface(uni, 0, 0, 0, int_to_f(120), int_to_f(120), 30, 30, COLOR6, 0,
---
## Manipulation des Mesh
Une fois générés, les objets peuvent être positionnés, transformés ou recolorés à l'aide des fonctions suivantes (définies dans `engine.c` / `geometry.c`) :
* **`void set_object_pos(Object3D *obj, fixed x, fixed y, fixed z);`**
```
void set_object_pos (Object3D *obj, fixed x, fixed y, fixed z);
```
Définit la position locale absolue de l'objet (`base_pos`) par rapport au centre de son espace d'orbite.
* **`void move_object(Object3D *obj, fixed dx, fixed dy, fixed dz);`**
```
void move_object (Object3D *obj, fixed dx, fixed dy, fixed dz);
```
Applique une translation relative à l'objet en ajoutant le décalage spécifié à sa position courante.
* **`void set_object_color(Object3D *obj, uint8_t col);`**
```
void set_object_color (Object3D *obj, uint8_t col);
```
Modifie l'index de couleur de base (0-15) utilisé pour le rendu de l'ensemble des faces de l'objet.
* **`void bake_object_rotation(Universe *uni, Object3D *obj, int ax, int ay, int az);`**
```
void bake_object_rotation(Universe *uni, Object3D *obj, int ax, int ay, int az);
```
Applique une rotation *permanente* (Baking) aux sommets et aux normales de l'objet directement dans le pool de l'univers.
Particulièrement utile pour orienter une primitive lors de l'initialisation (ex: coucher un cylindre sur le flanc) sans induire le moindre coût de calcul matriciel supplémentaire pendant la boucle de rendu en temps réel.
---
## Orbite de l'observateur (`main.c`)
Les objets ont des positions de base fixes dans l'espace scène, définies par rapport au centre `(0, 0, 300)` :