From 06a9dda5bb58079db955675a8ef7a4ab9fed4945 Mon Sep 17 00:00:00 2001 From: Aaron Fenyes Date: Tue, 25 Jun 2024 13:40:40 -0700 Subject: [PATCH] Play with reflections Try configuration of five tangent spheres. --- engine-proto/ganja-test/ganja-test.html | 36 +++++++++++++------------ engine-proto/ganja-test/ganja-test.jl | 36 +++++++++++++------------ 2 files changed, 38 insertions(+), 34 deletions(-) diff --git a/engine-proto/ganja-test/ganja-test.html b/engine-proto/ganja-test/ganja-test.html index e1da682..e0d59bb 100644 --- a/engine-proto/ganja-test/ganja-test.html +++ b/engine-proto/ganja-test/ganja-test.html @@ -17,31 +17,25 @@ -

+

diff --git a/engine-proto/ganja-test/ganja-test.jl b/engine-proto/ganja-test/ganja-test.jl index 0808089..a5d7f6b 100644 --- a/engine-proto/ganja-test/ganja-test.jl +++ b/engine-proto/ganja-test/ganja-test.jl @@ -26,33 +26,27 @@ canvas { """ controls = """ -

+

""" graph_script = """ // in the default view, e4 + e5 is the point at infinity let CGA3 = Algebra(4, 1); let v = [ - CGA3.inline(() => 1e1 + 1e5)(), - CGA3.inline(() => 1e2 + 1e5)(), - CGA3.inline(() => 1e3 + 1e5)() + CGA3.inline(() => Math.sqrt(0.5)*( 1e1 + 1e2 + 1e3 + 1e5))(), + CGA3.inline(() => Math.sqrt(0.5)*( 1e1 - 1e2 - 1e3 + 1e5))(), + CGA3.inline(() => Math.sqrt(0.5)*(-1e1 + 1e2 - 1e3 + 1e5))(), + CGA3.inline(() => Math.sqrt(0.5)*(-1e1 - 1e2 + 1e3 + 1e5))(), + CGA3.inline(() => -Math.sqrt(3)*1e4 + Math.sqrt(2)*1e5)() ]; -let w = [ - CGA3.inline(() => 1e1 - Math.sqrt(0.2)*1e4 + Math.sqrt(1.2)*1e5)(), - CGA3.inline(() => 1e2 - Math.sqrt(0.2)*1e4 + Math.sqrt(1.2)*1e5)(), - CGA3.inline(() => 1e3 - Math.sqrt(0.2)*1e4 + Math.sqrt(1.2)*1e5)() -]; -let s = CGA3.inline(() => -Math.sqrt(1.2)*1e4 + Math.sqrt(0.2)*1e5); // create scene function let scene = () => [ 0xff00b0, v[0], 0x00ffb0, v[1], 0x00b0ff, v[2], - 0x800040, w[0], - 0x008040, w[1], - 0x004080, w[2], - 0xd0e0f0, s + 0x8040ff, v[3], + 0xc0c0c0, v[4] ]; // initialize graph @@ -65,11 +59,19 @@ let gr = CGA3.graph( document.body.appendChild(gr); // connect flip button -function flipPoint() { - v[0] = CGA3.Dual(CGA3.Mul(s, v[0])); +function flip() { + for (let n = 0; n < 4; ++n) { + // reflect + v[n] = CGA3.Mul(CGA3.Mul(v[4], v[n]), v[4]); + + // de-noise + for (let k = 6; k < v[n].length; ++k) { + v[n][k] = 0; + } + } requestAnimationFrame(gr.update.bind(gr, scene)); } -document.querySelector('#flip-button').addEventListener('click', flipPoint); +document.querySelector('#flip-button').addEventListener('click', flip); """ # === page construction ===