My ECE 2035 final project
Dependencies: 4DGL-uLCD-SE mbed wave_player
Fork of MazeRunner_Fall2017-shell by
physics.cpp@1:2c6ae0fe9a2a, 2017-12-29 (annotated)
- Committer:
- navaem
- Date:
- Fri Dec 29 15:32:31 2017 +0000
- Revision:
- 1:2c6ae0fe9a2a
- Parent:
- 0:cf4396614a79
December 29, 2017;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
rconnorlawson | 0:cf4396614a79 | 1 | #include "physics.h" |
rconnorlawson | 0:cf4396614a79 | 2 | #include "math_extra.h" |
navaem | 1:2c6ae0fe9a2a | 3 | #include "globals.h" |
navaem | 1:2c6ae0fe9a2a | 4 | |
navaem | 1:2c6ae0fe9a2a | 5 | |
navaem | 1:2c6ae0fe9a2a | 6 | #include<stdio.h> |
navaem | 1:2c6ae0fe9a2a | 7 | |
rconnorlawson | 0:cf4396614a79 | 8 | |
rconnorlawson | 0:cf4396614a79 | 9 | void forward_euler(Physics* state, float delta) |
rconnorlawson | 0:cf4396614a79 | 10 | { |
rconnorlawson | 0:cf4396614a79 | 11 | // TODO: Implement proper forward euler updates for position and velocity |
navaem | 1:2c6ae0fe9a2a | 12 | |
navaem | 1:2c6ae0fe9a2a | 13 | |
navaem | 1:2c6ae0fe9a2a | 14 | state->px = state->px + state->vx*delta; |
navaem | 1:2c6ae0fe9a2a | 15 | state->py = state->py + state->vy*delta; |
navaem | 1:2c6ae0fe9a2a | 16 | |
navaem | 1:2c6ae0fe9a2a | 17 | state->vx = state->vx + state->ax*delta*200; |
navaem | 1:2c6ae0fe9a2a | 18 | state->vy = state->vy + state->ay*delta*200; |
navaem | 1:2c6ae0fe9a2a | 19 | |
rconnorlawson | 0:cf4396614a79 | 20 | // Compute random motion |
navaem | 1:2c6ae0fe9a2a | 21 | // float damp = 0.5; |
navaem | 1:2c6ae0fe9a2a | 22 | // float dx = damp*coin_flip(); |
navaem | 1:2c6ae0fe9a2a | 23 | // float dy = damp*coin_flip(); |
rconnorlawson | 0:cf4396614a79 | 24 | |
rconnorlawson | 0:cf4396614a79 | 25 | // Update position and velocity |
navaem | 1:2c6ae0fe9a2a | 26 | // state->px = state->px + dx; |
navaem | 1:2c6ae0fe9a2a | 27 | // state->py = state->py + dy; |
navaem | 1:2c6ae0fe9a2a | 28 | // state->vx = dx; |
navaem | 1:2c6ae0fe9a2a | 29 | // state->vy = dy; |
navaem | 1:2c6ae0fe9a2a | 30 | |
navaem | 1:2c6ae0fe9a2a | 31 | if(state->px < radius + 1) |
navaem | 1:2c6ae0fe9a2a | 32 | { |
navaem | 1:2c6ae0fe9a2a | 33 | state->px = 5; |
navaem | 1:2c6ae0fe9a2a | 34 | state->vx = 0; |
navaem | 1:2c6ae0fe9a2a | 35 | } |
navaem | 1:2c6ae0fe9a2a | 36 | if(state->px > SIZE_X - (radius + 1)) |
navaem | 1:2c6ae0fe9a2a | 37 | { |
navaem | 1:2c6ae0fe9a2a | 38 | state->px = SIZE_X - (radius); |
navaem | 1:2c6ae0fe9a2a | 39 | state->vx = 0; |
navaem | 1:2c6ae0fe9a2a | 40 | } |
navaem | 1:2c6ae0fe9a2a | 41 | |
navaem | 1:2c6ae0fe9a2a | 42 | if(state->py < radius + 1) |
navaem | 1:2c6ae0fe9a2a | 43 | { |
navaem | 1:2c6ae0fe9a2a | 44 | state->py = 5; |
navaem | 1:2c6ae0fe9a2a | 45 | state->vy = 0; |
navaem | 1:2c6ae0fe9a2a | 46 | } |
navaem | 1:2c6ae0fe9a2a | 47 | if(state->py > SIZE_Y - (radius + 1)) |
navaem | 1:2c6ae0fe9a2a | 48 | { |
navaem | 1:2c6ae0fe9a2a | 49 | state->py = SIZE_Y-(radius); |
navaem | 1:2c6ae0fe9a2a | 50 | state->vy = 0; |
navaem | 1:2c6ae0fe9a2a | 51 | } |
navaem | 1:2c6ae0fe9a2a | 52 | |
navaem | 1:2c6ae0fe9a2a | 53 | if(state->vx > 8) |
navaem | 1:2c6ae0fe9a2a | 54 | state->vx = 8.0; |
navaem | 1:2c6ae0fe9a2a | 55 | if(state->vy > 8) |
navaem | 1:2c6ae0fe9a2a | 56 | state->vy = 8.0; |
navaem | 1:2c6ae0fe9a2a | 57 | } |
navaem | 1:2c6ae0fe9a2a | 58 | |
navaem | 1:2c6ae0fe9a2a | 59 | Physics* copy_physics(Physics* curr){ |
navaem | 1:2c6ae0fe9a2a | 60 | Physics* newPhys = (Physics*)malloc(sizeof(Physics)); |
navaem | 1:2c6ae0fe9a2a | 61 | newPhys->px = curr->px; |
navaem | 1:2c6ae0fe9a2a | 62 | newPhys->py = curr->py; |
navaem | 1:2c6ae0fe9a2a | 63 | newPhys->vx = curr->vx; |
navaem | 1:2c6ae0fe9a2a | 64 | newPhys->vy = curr->vy; |
navaem | 1:2c6ae0fe9a2a | 65 | return newPhys; |
navaem | 1:2c6ae0fe9a2a | 66 | } |
navaem | 1:2c6ae0fe9a2a | 67 |