My ECE 2035 final project

Dependencies:   4DGL-uLCD-SE mbed wave_player

Fork of MazeRunner_Fall2017-shell by ECE 2035 TA

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?

UserRevisionLine numberNew 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