JSFiddle - React, Tailwind, and code Playground
by evgkch
TypeScript
type Options = {
// a scale factor; should be grater of equal one
pixelSize: number;
// must be a power of 4 (1, 4, 16, ...)
gridSize: number;
}
const withProjective = (p: number) => (field: Uint16Array): Uint16Array => {
const n = Math.log2(field.length) / 2;
const projectiveField = new Uint16Array((4 ** (n + 1) - 1) / 3);
for (let i = 0, length = projectiveField.length; i < length; i++)
{
}
}
const Field = (p: number) => (n: number) => (new Uint32Array(p ** n)).fill(0);
const ProjectiveField = (p: number) => (n: number) =>
new Proxy(
(new Uint32Array((p ** (n + 1) - 1) / (p - 1)).fill(0),
{
set(target: Uint32Array, i: number, val: number): void {
let shift = Math.floor(i / 4),
target[i + shift] = val % 2;
}
get(target: Uint32Array, i: number): void {
let shift = Math.floor(i / 4);
return target[shift];
}
}
)