Created
July 11, 2024 21:02
-
-
Save colorincode/6455808fddb150f3e918dae8468748c9 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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