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];
      }
    }
  )