minor cleanup
This commit is contained in:
parent
e8bc83df3a
commit
3ed16a426b
@ -128,8 +128,8 @@ INTERNAL void spawn_test_entities(void)
|
|||||||
struct v2 size = V2(1, 1);
|
struct v2 size = V2(1, 1);
|
||||||
//f32 r = PI / 4;
|
//f32 r = PI / 4;
|
||||||
//f32 r = PI / 3;
|
//f32 r = PI / 3;
|
||||||
f32 r = PI / 2;
|
//f32 r = PI / 2;
|
||||||
//f32 r = 0;
|
f32 r = 0;
|
||||||
f32 skew = 0;
|
f32 skew = 0;
|
||||||
|
|
||||||
struct entity *e = entity_alloc(root);
|
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, -0.5);
|
||||||
struct v2 pos = V2(0.5, -1);
|
struct v2 pos = V2(0.5, -1);
|
||||||
struct v2 size = V2(1, 1);
|
struct v2 size = V2(1, 1);
|
||||||
|
//f32 rot = PI / 4;
|
||||||
f32 rot = 0;
|
f32 rot = 0;
|
||||||
struct entity *e = entity_alloc(root);
|
struct entity *e = entity_alloc(root);
|
||||||
|
|
||||||
|
|||||||
17
src/gjk.c
17
src/gjk.c
@ -371,15 +371,14 @@ struct gjk_contact_points_result gjk_contact_points(struct v2_array shape0, stru
|
|||||||
|
|
||||||
/* Resolve points */
|
/* Resolve points */
|
||||||
if (s.len == 1) {
|
if (s.len == 1) {
|
||||||
|
num_pairs = 1;
|
||||||
pair0.p0 = s.a.p0;
|
pair0.p0 = s.a.p0;
|
||||||
pair0.p1 = s.a.p1;
|
pair0.p1 = s.a.p1;
|
||||||
num_pairs = 1;
|
|
||||||
} else {
|
} else {
|
||||||
ASSERT(s.len == 2);
|
ASSERT(s.len == 2);
|
||||||
b32 p0_is_on_edge = !v2_eq(s.a.p0, s.b.p0);
|
/* TODO: Epsilon */
|
||||||
b32 p1_is_on_edge = !v2_eq(s.a.p1, s.b.p1);
|
if (!v2_eq(s.a.p0, s.b.p0) && !v2_eq(s.a.p1, s.b.p1)) {
|
||||||
if (p0_is_on_edge && p1_is_on_edge) {
|
/* Closest features are both faces, return clipped edge points of each face */
|
||||||
/* Closest features are both faces, use midpoint of clipped faces to represent contact points */
|
|
||||||
num_pairs = 2;
|
num_pairs = 2;
|
||||||
struct v2 a = s.a.p0;
|
struct v2 a = s.a.p0;
|
||||||
struct v2 b = s.b.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 {
|
} else {
|
||||||
/* Determine ratio between edge a & b that projected origin lies */
|
/* Determine ratio between edge a & b that projected origin lies */
|
||||||
num_pairs = 1;
|
num_pairs = 1;
|
||||||
f32 ratio;
|
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);
|
||||||
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);
|
|
||||||
}
|
|
||||||
pair0.p0 = v2_add(s.a.p0, v2_mul(v2_sub(s.b.p0, s.a.p0), ratio));
|
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));
|
pair0.p1 = v2_add(s.a.p1, v2_mul(v2_sub(s.b.p1, s.a.p1), ratio));
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user