From 73a4a9569041c984416466aacb42be2d8868dad3 Mon Sep 17 00:00:00 2001 From: Sam Anthony Date: Tue, 29 Oct 2024 20:16:06 -0400 Subject: ball-ball collisions (untested) --- balls.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'balls.h') diff --git a/balls.h b/balls.h index 051c185..a767db0 100644 --- a/balls.h +++ b/balls.h @@ -4,6 +4,22 @@ typedef struct { float2 min, max; } Rectangle; +/* + * A partition of the set of all possible collisions between pairs of balls. + * Collisions within a cell of the partition can run concurrently. Cells must + * run sequentially. +*/ +typedef struct { + struct cell { + size_t (*ballIndices)[2]; /* Array of pairs of ball indices. */ + size_t size; /* Length of ballIndices. */ + } *cells; /* Array of cells. */ + size_t size; /* Length of cell array. */ +} Partition; + +Partition partitionCollisions(size_t nBalls); +void freePartition(Partition part); + int isCollision(float2 p1, float r1, float2 p2, float r2); Rectangle insetRect(Rectangle r, float n); -- cgit v1.2.3