From 5be3a4ce48b376600bed651ef27cbe2a952a2eae Mon Sep 17 00:00:00 2001 From: Ole Morud Date: Tue, 7 Jun 2022 15:28:29 +0200 Subject: [PATCH] gravity constant and gravitational acceleration --- physics.c | 44 ++++++++++++++++++++++++++------------------ 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/physics.c b/physics.c index 0bc8afc..5336df2 100644 --- a/physics.c +++ b/physics.c @@ -4,13 +4,16 @@ #include #include +#define GRAVITY 0.01f +#define FRAMERATE 10 + typedef struct Point{ - uint x; - uint y; - uint px; - uint py; - uint fx; - uint fy; + double x; + double y; + double px; + double py; + double fx; + double fy; } Point; typedef struct Link { @@ -22,14 +25,14 @@ typedef struct Link { void draw_link(Canvas* c, Link* l){ - line(&c, l->a->x, l->a->y, l->b->x, l->b->y); + line(c, l->a->x, l->a->y, l->b->x, l->b->y); } void update_point(Point* p){ uint tempx = p->x; uint tempy = p->y; - p->x += (p->x - p->px) + fx; - p->y += (p->y - p->py) + fy; + p->x += (p->x - p->px) + p->fx; + p->y += (p->y - p->py) + p->fy; p->px = tempx; p->py = tempy; } @@ -38,25 +41,30 @@ void update_point(Point* p){ int main(){ char *data = malloc(40*40); Canvas c = {40, 40, data}; - memset(c.data, '.', c.x * c.y); + Point a = { 10.0, 10.0, + 10.0, 10.0, + 0.0, GRAVITY/FRAMERATE}; + + Point b = { 20.0, 10.0, + 20.0, 10.0, + 0.0, GRAVITY/FRAMERATE}; - Point a = {10, 10, 10, 10, 0, 5}; - Point b = {20, 10, 10, 10, 0, 5}; Link l_ab = {&a, &b, 10}; - - //line(&c, 1, 1, 8, 8); - //line(&c, 8, 8, 1, 1); - //line(&c, 0, 5, 8, 8); - for(int i=0; i<100; i++){ + while(1){ + // clear canvas, calculate next frame and draw + memset(c.data, '.', c.x * c.y); draw_link(&c, &l_ab); update_point(&a); update_point(&b); + + // then render and wait + render(&c); + usleep(1000000/FRAMERATE); } - render(&c); return 0; }