fixing control
This commit is contained in:
parent
6b556ee993
commit
2c525cb5e0
3 changed files with 48 additions and 33 deletions
14
WORKDOC.md
14
WORKDOC.md
|
|
@ -193,7 +193,7 @@ add_math_surface(uni, 0, 0, 0, int_to_f(120), int_to_f(120), 30, 30, COLOR6, 0,
|
|||
|
||||
---
|
||||
|
||||
## Orbite de l'observateur (`main.c`)
|
||||
## Orbite et distance (`main.c`)
|
||||
|
||||
Les objets ont des positions de base fixes dans l'espace scène, définies par rapport au centre `(0, 0, 300)` :
|
||||
|
||||
|
|
@ -202,13 +202,13 @@ Les objets ont des positions de base fixes dans l'espace scène, définies par r
|
|||
| Sphère (universe[0]) | (+60, 0, 0) |
|
||||
| Cylindre (universe[1]) | (−60, 0, 0) |
|
||||
|
||||
Chaque frame, la matrice d'orbite `orbit = rotX(anglex) × rotY(angley)` est calculée et appliquée uniformément à chaque objet (transform 3D complet sur `base_pos`) :
|
||||
Chaque frame, la matrice d'orbite `orbit = rotX(anglex) × rotY(angley)` est calculée et appliquée uniformément à chaque objet (transform 3D complet sur `base_pos`). La distance (initialement 300) peut être modifiée :
|
||||
|
||||
```c
|
||||
obj->rot = orbit;
|
||||
obj->pos.x = f_mul(bx, orbit.m[0][0]) + f_mul(by, orbit.m[1][0]) + f_mul(bz, orbit.m[2][0]);
|
||||
obj->pos.y = f_mul(bx, orbit.m[0][1]) + f_mul(by, orbit.m[1][1]) + f_mul(bz, orbit.m[2][1]);
|
||||
obj->pos.z = int_to_f(300) + f_mul(bx, orbit.m[0][2]) + f_mul(by, orbit.m[1][2]) + f_mul(bz, orbit.m[2][2]);
|
||||
obj->pos.z = distance + f_mul(bx, orbit.m) + f_mul(by, orbit.m) + f_mul(bz, orbit.m);
|
||||
```
|
||||
|
||||
Les trois composantes de `base_pos` (bx, by, bz) sont toutes prises en compte — les objets à `base_pos.y != 0` ou `base_pos.z != 0` sont correctement transformés.
|
||||
|
|
@ -224,13 +224,13 @@ La caméra reste à l'origine (+ translations clavier). L'effet visuel est celui
|
|||
| Z / S | Caméra avance / recule (axe Z) |
|
||||
| Q / D | Caméra gauche / droite (axe X) |
|
||||
| A / E | Caméra haut / bas (axe Y) |
|
||||
| + / − | Orbite vertical (anglex ±3°) |
|
||||
| / / * | Orbite horizontal (angley ±3°) |
|
||||
| 1 / 2 / 3 | Mode fil-de-fer / caché / solide |
|
||||
| Flèche Haut / Bas | Orbite vertical (anglex ±3°) |
|
||||
| Flèche Gauche / Droite | Orbite horizontal (angley ±3°) |
|
||||
| F1 / F2 / F3 | Mode fil-de-fer / caché / solide |
|
||||
| R | Reset caméra + angles |
|
||||
| Esc | Quitter |
|
||||
|
||||
Les touches étendues (F1–F12, flèches…) retournent `0` depuis `getch()` ; le scan code suivant est consommé sans effet.
|
||||
Les touches étendues (F1–F12, flèches…) retournent `0` depuis `getch()` ; le scan code suivant est alors consommé pour identifier la touche spéciale.
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue