From 18a86e1038b20cb6f8922beead08dcc24ba2a4d3 Mon Sep 17 00:00:00 2001 From: raven Date: Wed, 8 Apr 2026 22:51:39 -0500 Subject: rewrite and port to SDL3 --- src/curve.h | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 src/curve.h (limited to 'src/curve.h') diff --git a/src/curve.h b/src/curve.h new file mode 100644 index 0000000..dc003c1 --- /dev/null +++ b/src/curve.h @@ -0,0 +1,25 @@ +#ifndef CURVE_H +#define CURVE_H + +#include + +#define BIT_OF(X, I) (((X) >> (I)) & 1ULL) + +static uintptr_t zorder(int x, int y) { + uintptr_t z = 0; + // interleaving bits results in a point on the z-order curve + for (int i = 0; i < sizeof(x) * CHAR_BIT; i++) + z |= (BIT_OF(x, i) << i*2) | (BIT_OF(y, i) << (i*2 + 1)); + return z; +} + +static void unzorder(uintptr_t z, int *x, int *y) { + *x = 0; *y = 0; + for (int i = 0; i < sizeof(z) * CHAR_BIT / 2; i++) { + *x |= BIT_OF(z, i*2) << i; + *y |= BIT_OF(z, i*2 + 1) << i; + } +} + +#undef BIT_OF +#endif -- cgit v1.2.3