From 6f0496835d1e65b2ee1f1ca9b7d43c4b8894b4ba Mon Sep 17 00:00:00 2001 From: Rosyid Haryadi Date: Mon, 25 Dec 2023 22:56:20 +0700 Subject: test heading vector --- src/main.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/main.c b/src/main.c index 96d6a4a..d8b4a4d 100644 --- a/src/main.c +++ b/src/main.c @@ -29,6 +29,7 @@ typedef struct Object { float radius; Color color; float headingAngle; + float distanceTraveled; } Object; void doDrawing(Object *object); @@ -38,10 +39,11 @@ int main(void) { doInitialization(); Object object = { - .pos = (Vector2) {0, 0}, + .pos = (Vector2) {100, 0}, .radius = 20.0f, .color = BLUE, - .headingAngle = 90 + .headingAngle = 90, + .distanceTraveled = 0 }; while (!WindowShouldClose()) @@ -86,6 +88,17 @@ Vector2 angle2HeadingVector(float angle) { void doUpdate(Object *object) { float dt = GetFrameTime(); + float speed = 200.0f; + if (object->distanceTraveled <= 50) { + float nextPosDistance = speed * dt; + object->distanceTraveled += nextPosDistance; + Vector2 headingVector = angle2HeadingVector(object->headingAngle); + Vector2 nextPos = Vector2Add(Vector2Scale(headingVector, nextPosDistance), object->pos); + object->pos = nextPos; + } else { + object->headingAngle = fmodf(object->headingAngle + 15, 360.0f); + object->distanceTraveled = 0; + } } void doDrawing(Object *object) { -- cgit v1.2.3-70-g09d2