summaryrefslogtreecommitdiffstats
path: root/balls.h
diff options
context:
space:
mode:
Diffstat (limited to 'balls.h')
-rw-r--r--balls.h16
1 files changed, 16 insertions, 0 deletions
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);