From bc9e86d91854de6a39a25a539df0aa34bd146207 Mon Sep 17 00:00:00 2001 From: Mike Lynch Date: Sun, 7 Apr 2024 11:30:52 +1000 Subject: [PATCH] Revert "Simplified rotation ui" This reverts commit 6b0c5cf97e4b8e9920f05335a83cf199940b2e0c. --- gui.js | 17 ++++++++++------- main.js | 8 +++++--- rotation.js | 19 ------------------- 3 files changed, 15 insertions(+), 29 deletions(-) diff --git a/gui.js b/gui.js index d9f384f..7dc7c67 100644 --- a/gui.js +++ b/gui.js @@ -14,8 +14,8 @@ const DEFAULTS = { color: 0x3293a9, background: 0xd4d4d4, hyperplane: 1.5, - zoom: 1, - rotation: 'rigid', + xRotate: 'YW', + yRotate: 'XZ', dtheta: 0, dpsi: 0, } @@ -44,7 +44,8 @@ class FourDGUI { background: this.link['background'], hyperplane: this.link['hyperplane'], zoom: this.link['zoom'], - rotation: this.link['rotation'], + xRotate: this.link['xRotate'], + yRotate: this.link['yRotate'], damping: false, dtheta: this.link['dtheta'], dpsi: this.link['dpsi'], @@ -75,7 +76,8 @@ class FourDGUI { this.gui.add(this.params, 'nodesize', 0.1, 4); this.gui.addColor(this.params, 'color').onChange(setColor); this.gui.addColor(this.params, 'background').onChange(setBackground); - this.gui.add(this.params, 'rotation', [ 'rigid', 'tumbling', 'inside-out', 'axisymmetrical' ]); + this.gui.add(this.params, 'xRotate', [ 'YW', 'YZ', 'ZW' ]); + this.gui.add(this.params, 'yRotate', [ 'XZ', 'XY', 'XW' ]); this.gui.add(this.params, 'damping'); this.gui.add(this.params, 'copy link'); @@ -118,7 +120,7 @@ class FourDGUI { const guiObj = this; this.urlParams = this.linkUrl.searchParams; - for( const param of [ "shape", "rotation", "option" ]) { + for( const param of [ "shape", "xRotate", "yRotate", "option" ]) { const value = this.urlParams.get(param); if( value ) { this.link[param] = value; @@ -156,7 +158,8 @@ class FourDGUI { url.searchParams.append("background", this.hexToString(this.params.background)); url.searchParams.append("hyperplane", this.params.hyperplane.toString()); url.searchParams.append("zoom", this.params.zoom.toString()); - url.searchParams.append("rotation", this.params.rotation); + url.searchParams.append("xRotate", this.params.xRotate); + url.searchParams.append("yRotate", this.params.yRotate); url.searchParams.append("dtheta", this.params.dtheta.toString()); url.searchParams.append("dpsi", this.params.dpsi.toString()); this.copyTextToClipboard(url); @@ -204,4 +207,4 @@ class FourDGUI { } -export { FourDGUI, DEFAULTS }; \ No newline at end of file +export { FourDGUI, DEFAULTS }; diff --git a/main.js b/main.js index a6ada43..174d8f5 100644 --- a/main.js +++ b/main.js @@ -3,7 +3,7 @@ import * as THREE from 'three'; import * as POLYTOPES from './polytopes.js'; -import { get_rotation } from './rotation.js'; +import { rotfn } from './rotation.js'; import { FourDGUI, DEFAULTS } from './gui.js'; import { FourDShape } from './fourDShape.js'; import { get_colours } from './colours.js'; @@ -197,8 +197,10 @@ function animate() { } } - const rotations = get_rotation(gui.params.rotation, theta, psi); - + const rotations = [ + rotfn[gui.params.xRotate](theta), + rotfn[gui.params.yRotate](psi) + ]; shape.hyperplane = gui.params.hyperplane; camera.position.set(0, 0, gui.params.zoom * CAMERA_K / gui.params.hyperplane); diff --git a/rotation.js b/rotation.js index a1cf475..27b3fc7 100644 --- a/rotation.js +++ b/rotation.js @@ -81,24 +81,5 @@ export const rotfn = { ZW: rotZW, }; -const rotMode = { - 'rigid': [ rotYW, rotXW ], - 'tumbling': [ rotYW, rotXZ ], - 'inside-out': [ rotYW, rotXY ], - 'axisymmetrical': [ rotZW, rotXY ] -}; - - -export const get_rotation = (mode, theta, psi) => { - const fns = rotMode[mode]; - return [ fns[0](theta), fns[1](psi) ]; -} - - - - // [ - // rotfn[gui.params.xRotate](theta), - // rotfn[gui.params.yRotate](psi) - // ];