Skip to content
Snippets Groups Projects
Unverified Commit ed12702e authored by Jamie Temple's avatar Jamie Temple
Browse files

refactor: naming

parent e7ec1c65
No related branches found
No related tags found
No related merge requests found
images/simulation.png

163 KiB | W: | H:

images/simulation.png

163 KiB | W: | H:

images/simulation.png
images/simulation.png
images/simulation.png
images/simulation.png
  • 2-up
  • Swipe
  • Onion skin
......@@ -22,7 +22,7 @@ export class Simulation implements PipelineObserver {
Simulation.current = p;
let x = [p.position.x, p.position.y, p.position.z,
p.velocity.x, p.velocity.y, p.velocity.z];
x = SimulationData.INTEGRATORS[SimulationData.integratorType].step(x, h, Simulation.derivation);
x = SimulationData.INTEGRATORS[SimulationData.integrationMethod].step(x, h, Simulation.derivation);
p.setState(x[0], x[1], x[2], x[3], x[4], x[5]);
}
});
......
......@@ -6,9 +6,10 @@ import { Particle } from './physics/particle';
import { EulerIntegrator, Integrator, MidpointIntegrator, RungeKuttaIntegrator } from './physics/Integrators';
document.addEventListener('keydown', (event: KeyboardEvent) => {
if (event.key === 'e') {
SimulationData.switchParticlePhysics();
} else if (event.key === 'w') {
SimulationData.paused = !SimulationData.paused;
}
});
......@@ -16,6 +17,8 @@ class SimulationData implements PipelineGUI, PipelineRenderable {
public static container: THREE.Group = new THREE.Group();
public static paused: boolean = false;
// cloth settings
public static readonly MAX_TOTAL_MASS = 10;
public static readonly MIN_TOTAL_MASS = 0.1;
......@@ -59,12 +62,9 @@ class SimulationData implements PipelineGUI, PipelineRenderable {
new RungeKuttaIntegrator
]
public static integratorType: number = 2;
public static stepSize: number = 0;
public static setEuler = () => { SimulationData.integratorType = 0; }
public static setMidpoint = () => { SimulationData.integratorType = 1; }
public static setRungeKutta = () => { SimulationData.integratorType = 2; }
public static integrationMethod: number = 2;
public static stepSizeMethod: number = 0;
public static errorMax: number = 0;
public static resetExternalForce(): void {
SimulationData.externalForce.x = 0;
......@@ -73,6 +73,7 @@ class SimulationData implements PipelineGUI, PipelineRenderable {
}
public static generateTextile(): void {
// 1. reset pList
delete SimulationData.pList;
SimulationData.pList = new Array<Array<Particle>>();
......@@ -344,9 +345,8 @@ class SimulationData implements PipelineGUI, PipelineRenderable {
}
gui(gui: GUI): void {
const general = gui.addFolder('General');
general.add(SimulationData, 'paused').name("Pause Simulation").listen();
general.add(SimulationData, 'totalMass', SimulationData.MIN_TOTAL_MASS, SimulationData.MAX_TOTAL_MASS)
.step(0.1).name('Total Mass').onChange(SimulationData.changedParticleSize);
general.add(SimulationData, 'width', SimulationData.MIN_WIDTH, SimulationData.MAX_WIDTH)
......@@ -357,11 +357,10 @@ class SimulationData implements PipelineGUI, PipelineRenderable {
.step(1).name('Resolution').onChange(SimulationData.generateTextile);
general.open();
const integration = gui.addFolder('Integrator');
integration.add(SimulationData, 'setEuler').name('Euler').onChange(()=>{console.log(SimulationData.integratorType)});
integration.add(SimulationData, 'setMidpoint').name('Midpoint').onChange(()=>{console.log(SimulationData.integratorType)});
integration.add(SimulationData, 'setRungeKutta').name('Runge Kutta (4th order)').onChange(()=>{console.log(SimulationData.integratorType)});
integration.add(SimulationData, 'integrationMethod', { 'Euler': 0, 'Midpoint': 1, 'Runge-Kutta': 2 }).name('Method');
integration.add(SimulationData, 'stepSizeMethod', { 'Fixed': 0, 'Adaptive': 1 }).name('Step Size');
integration.add(SimulationData, 'errorMax', -30, 0, 1).name('Error Max');
integration.open();
const extForce = general.addFolder('External Force');
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment