diff --git a/docs/produktrapport.md b/docs/produktrapport.md index 017e23b..da3ddde 100644 --- a/docs/produktrapport.md +++ b/docs/produktrapport.md @@ -15,7 +15,8 @@ Koden ligger i `game/` i repo'et. For at køre spillet, installer Rust, SDL3 og SDL3_ttf, og kør `cargo run`. -![entity relations diagram](./h5-mst-game-entity-relations.drawio.svg) + + ### Vindue, taster-input og 2D-rasterizering @@ -33,7 +34,7 @@ Vi har 2 behov, som SDL3 skal udfylde. Det første er IO-håndtering. Dvs. opret Funktionalitet til 2D-renderingen er beskrevet som et Rust trait (interface) `trait Renderer` i `src/engine/game.rs`. Dette trait definerer de funktioner, vi skal bruge til at tegne geometri, hovedsageligt `fn draw_triangles`. Dette trait er implementeret for objektet (Rust struct) `struct SdlIo`, defineret i `src/game/sdl_io.rs`. Dette struct indeholder alt SDL-specifik kode. Trait'et er implementeret, så at de positioner og størrelser man passer i `Renderer`'s funktioner er normaliserede i et koordinatsystem. `SdlIo` implementation oversætter disse positioner og størrelser til reelle skærm-værdier. -![position translation](./position-translation.png) + Funktionalitet til vindue- og event-håndtering er også enkapsuleret i `struct SdlIo`. Interface'et mellem `SdlIo` og spillet er defineret i `trait engine::Game` trait'et. Dette trait definerer funktioner, som defineret af spillet og kaldet af `SdlIo`. Dette består af `fn update`, `fn render` og `fn event` funktionerne. @@ -47,8 +48,8 @@ Vi vil gerne lave 3D-rendering til vores spil. Vi har valgt at implementere 3D-r 3D-projektionen er implementeret med *Perspective Projection*[^5] som funktioner på `V3` og `Triangle3` i methods ved navn `project_2d`. Følgende formel er anvendt: - - + + Pointen med formelen er at 2D-positionerne bestemmes via forskellen mellem skærmen og punktet på z-aksen i 3D. Dvs. jo længere væk et punkt er, dvs. jo større forskellen er på z-aksen, jo tættere på midten vil punktet ligge i 2D. Dvs. objekter tæt på skærmen vises som større og objekter, der ligger længere væk, vises som mindre. Det er dette, der giver effekten af 3D. @@ -226,8 +227,8 @@ Ved at undersøge projekter på internettet med Arduino eller ESP32 og accelerom MPU6050'eren er forbundet til ESP32'eren via I2C. Modulet får også strøm fra ESP32-board'et. Pin-konfigurationen er at `VCC` og `GND` på MPU'en er forbundet til `3.3V` og `GND` på ESP32-board'et, og `SCA` og `SCL` er forbundet til henholdvis `A5` og `A4` på boardet. - - + + General information om brug af MPU6050 kan findes i produktspecifikationen (databladet)[^21]. MPU6050 kan køre på, og bliver forsynet med 3.3V. I2C-bussen skal have, og har, en clock rate på 400MHz. Opsætning af MPU'en gøres ved at skrive til I2C registers og læsning af målinger ved læsning af registers.