From 3ed16a426bcd7dd81e3df0ea6153011c999ba6bb Mon Sep 17 00:00:00 2001 From: jacob Date: Fri, 13 Sep 2024 15:27:46 -0500 Subject: [PATCH] minor cleanup --- src/game.c | 5 +++-- src/gjk.c | 17 ++++++----------- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/src/game.c b/src/game.c index 55ec433a..bcc35727 100644 --- a/src/game.c +++ b/src/game.c @@ -128,8 +128,8 @@ INTERNAL void spawn_test_entities(void) struct v2 size = V2(1, 1); //f32 r = PI / 4; //f32 r = PI / 3; - f32 r = PI / 2; - //f32 r = 0; + //f32 r = PI / 2; + f32 r = 0; f32 skew = 0; struct entity *e = entity_alloc(root); @@ -187,6 +187,7 @@ INTERNAL void spawn_test_entities(void) //struct v2 pos = V2(0.5, -0.5); struct v2 pos = V2(0.5, -1); struct v2 size = V2(1, 1); + //f32 rot = PI / 4; f32 rot = 0; struct entity *e = entity_alloc(root); diff --git a/src/gjk.c b/src/gjk.c index 8166459a..85f87e69 100644 --- a/src/gjk.c +++ b/src/gjk.c @@ -371,15 +371,14 @@ struct gjk_contact_points_result gjk_contact_points(struct v2_array shape0, stru /* Resolve points */ if (s.len == 1) { + num_pairs = 1; pair0.p0 = s.a.p0; pair0.p1 = s.a.p1; - num_pairs = 1; } else { ASSERT(s.len == 2); - b32 p0_is_on_edge = !v2_eq(s.a.p0, s.b.p0); - b32 p1_is_on_edge = !v2_eq(s.a.p1, s.b.p1); - if (p0_is_on_edge && p1_is_on_edge) { - /* Closest features are both faces, use midpoint of clipped faces to represent contact points */ + /* TODO: Epsilon */ + if (!v2_eq(s.a.p0, s.b.p0) && !v2_eq(s.a.p1, s.b.p1)) { + /* Closest features are both faces, return clipped edge points of each face */ num_pairs = 2; struct v2 a = s.a.p0; struct v2 b = s.b.p0; @@ -404,12 +403,8 @@ struct gjk_contact_points_result gjk_contact_points(struct v2_array shape0, stru } else { /* Determine ratio between edge a & b that projected origin lies */ num_pairs = 1; - f32 ratio; - { - struct v2 vab = v2_sub(s.b.p, s.a.p); - struct v2 vao = v2_neg(s.a.p); - ratio = clamp_f32(v2_dot(vab, vao) / v2_dot(vab, vab), 0, 1); - } + struct v2 vab = v2_sub(s.b.p, s.a.p); + f32 ratio = clamp_f32(v2_dot(vab, v2_neg(s.a.p)) / v2_dot(vab, vab), 0, 1); pair0.p0 = v2_add(s.a.p0, v2_mul(v2_sub(s.b.p0, s.a.p0), ratio)); pair0.p1 = v2_add(s.a.p1, v2_mul(v2_sub(s.b.p1, s.a.p1), ratio)); }