diff --git a/src/hyper.ts b/src/hyper.ts index 504a2e1..d68a4b1 100644 --- a/src/hyper.ts +++ b/src/hyper.ts @@ -11,7 +11,7 @@ class VectorN { return this.values.length; } - map(fn: (n: number, i?: number) => number) { + map(fn: (n: number, i?: number) => number): VectorN { return new VectorN(...this.values.map(fn)); } @@ -19,11 +19,11 @@ class VectorN { return this.map((value, index) => value + vector.values[index]); } - magnitude() { + magnitude(): number { return Math.sqrt(this.values.reduce((sum, v) => (sum += v * v), 0)); } - asVector3() { + asVector3(): Vec3 { return new Vec3(this.values[0], this.values[1], this.values[2]); } } @@ -45,18 +45,4 @@ function symmetry(rank: number, space: GeneralSpace): GeneralSpace { } } -function test_ball(radius: number) { - const result = []; - for (let x = 0; x <= radius; ++x) { - for (let y = 0; y <= radius; ++y) { - for (let z = 0; z <= radius; ++z) { - if (x * x + y * y + z * z <= radius * radius) { - result.push(new VectorN(x, y, z)); - } - } - } - } - return symmetry(3, result).map((p) => p.asVector3); -} - export { VectorN, symmetry }; diff --git a/src/ifs.ts b/src/ifs.ts index 585e004..7d41227 100644 --- a/src/ifs.ts +++ b/src/ifs.ts @@ -1,4 +1,4 @@ -import { Vec3, Space, vec3 } from './vector.js'; +import { Space, vec3 } from './vector.js'; class IFS { fractal: number[][] = []; diff --git a/webviewer/public/index.html b/webviewer/public/index.html index 9a640c4..59735cb 100644 --- a/webviewer/public/index.html +++ b/webviewer/public/index.html @@ -1,19 +1,58 @@ -
- -${message}
`; + messageHistory.scrollTop = messageHistory.scrollHeight; + }; + + let size = 1; + const sizeSlider = document.getElementById('size-slider'); + sizeSlider.addEventListener('input', function () { + const newSize = parseFloat(sizeSlider.value); + size = newSize; + scene.traverse(function (object) { + if (object instanceof THREE.Mesh) { + object.scale.set(newSize, newSize, newSize); + } + }); + }); + + connectWebSocket(); + +