Skip to content

Instantly share code, notes, and snippets.

@colorincode
Created July 11, 2024 21:02
Show Gist options
  • Save colorincode/6455808fddb150f3e918dae8468748c9 to your computer and use it in GitHub Desktop.
Save colorincode/6455808fddb150f3e918dae8468748c9 to your computer and use it in GitHub Desktop.
// leaving as-is for now
function factorial(n: bigint, x = 1n): bigint {
if (n <= 1) return x;
return factorial(n - 1n, n * x);
}
function factorialAux(n: bigint, x = 1n): bigint | Thunk<bigint> {
if (n <= 1) return x;
return () => factorial(n - 1n, n * x);
}
const trampolinedFactorial = tramp(factorialAux);
// Vertex setup..i hope
interface Vertex {
x: number;
y: number;
z: number;
}
function processVertices(sphere: any): Vertex[] {
const geometry = sphere.geometry as THREE.BufferGeometry;
const position = geometry.attributes.position;
let sphereCount = position!.count;
let vertexArray: Vertex[] = [];
for (let i = 0; i < sphereCount; i++) {
let x = sphere.geometry.attributes.position!.getX(i);
let y = sphere.geometry.attributes.position!.getY(i);
let z = sphere.geometry.attributes.position!.getZ(i);
vertexArray.push({x, y, z});
}
let targetVertices = vertexArray
.filter(v => v.y >= -5 && v.y <= 5)
.sort((a, b) => a.z - b.z);
return targetVertices;
}
//inside the init, it is logggingggg
function init() {
container = document.createElement('div');
document.body.appendChild(container);
// set up camera, scene, renderer
camera = new THREE.PerspectiveCamera(70, window.innerWidth / window.innerHeight, 1, 1000);
camera.position.z = .001;
scene = new THREE.Scene();
renderer = new THREE.WebGLRenderer({ antialias: true });
let height = window.innerHeight;
let width = window.innerWidth;
renderer.setPixelRatio( window.devicePixelRatio );
renderer.setSize( width, height );
renderer.setAnimationLoop(animate);
container.appendChild( renderer.domElement);
// orbit controls
// effect handlers
effect = new ParallaxBarrierEffect( renderer );
effect = setRenderSize(width, height);
// Plane geometry setup
const planeGeometry = new THREE.PlaneGeometry(5, 2.5, 6, 6);
console.log("Factorial of 5:", trampolinedFactorial(5n));
}
//original func causing the overflow
// let vertexArray: Array<{x: number, y: number, z: number}> = [];
// for (let i = 0; i < sphereCount; i++) {
// let x = sphere.geometry.attributes.position!.getX(i);
// let y = sphere.geometry.attributes.position!.getY(i);
// let z = sphere.geometry.attributes.position!.getZ(i);
// vertexArray.push({x: x, y: y, z: z});
// }
// // console.log(vertexArray);
// let targetVertices: Array<{x: number, y: number, z: number}> = [];
// for (let i = 0; i < sphereCount; i++) {
// if (i < vertexArray.length && vertexArray[i].y >= -5 && vertexArray[i].y <= 5) {
// targetVertices.push(vertexArray[i]);
// }
// }
// targetVertices.sort((a, b) => {
// return a.z - b.z;
// });
//
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment