diff --git a/.gitignore b/.gitignore
index 3c3629e..474763e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,3 @@
node_modules
+
+*storybook.log
\ No newline at end of file
diff --git a/.storybook/main.ts b/.storybook/main.ts
new file mode 100644
index 0000000..f5dba2c
--- /dev/null
+++ b/.storybook/main.ts
@@ -0,0 +1,27 @@
+import type { StorybookConfig } from "@storybook/react-vite";
+
+const config: StorybookConfig = {
+ stories: ["./stories/**/*.mdx", "./stories/**/*.stories.@(js|jsx|mjs|ts|tsx)"],
+ addons: [
+ // "@storybook/addon-onboarding",
+ // "@storybook/addon-links",
+ // "@storybook/addon-essentials",
+ // "@chromatic-com/storybook",
+ // "@storybook/addon-interactions",
+ {
+ name: "@storybook/addon-essentials",
+ options: {
+ actions: false,
+ },
+ }
+ ],
+ framework: {
+ name: "@storybook/react-vite",
+ options: {},
+ },
+ docs: {
+ autodocs: "tag",
+ },
+
+};
+export default config;
diff --git a/.storybook/preview.ts b/.storybook/preview.ts
new file mode 100644
index 0000000..9db75e4
--- /dev/null
+++ b/.storybook/preview.ts
@@ -0,0 +1,18 @@
+import type { Preview } from "@storybook/react";
+
+const preview: Preview = {
+ parameters: {
+ controls: {
+ matchers: {
+ color: /(background|color)$/i,
+ date: /Date$/i,
+ },
+ }, options: {
+ storySort: {
+ order: ['Getting started', ['nbody', 'Installation', 'Integration'], 'Usage', 'Examples'],
+ },
+ }
+ },
+};
+
+export default preview;
diff --git a/.storybook/stories/Examples/Simulation.mdx b/.storybook/stories/Examples/Simulation.mdx
new file mode 100644
index 0000000..e9c77a7
--- /dev/null
+++ b/.storybook/stories/Examples/Simulation.mdx
@@ -0,0 +1,18 @@
+import { Meta, Story } from '@storybook/blocks';
+
+import * as SimulationStories from './Simulation.stories';
+
+
+
+# Button
+
+Button is a clickable interactive element that triggers a response.
+
+You can place text and icons inside of a button.
+
+Buttons are often used for form submissions and to toggle elements into view.
+
+## Usage
+
+
+
\ No newline at end of file
diff --git a/.storybook/stories/Examples/Simulation.stories.tsx b/.storybook/stories/Examples/Simulation.stories.tsx
new file mode 100644
index 0000000..44a9b5a
--- /dev/null
+++ b/.storybook/stories/Examples/Simulation.stories.tsx
@@ -0,0 +1,66 @@
+import type { Meta, StoryObj } from '@storybook/react';
+import { Simulation } from './Simulation';
+
+// More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export
+const meta = {
+ title: 'Examples/Simulation',
+ component: Simulation,
+ parameters: {
+ // Optional parameter to center the component in the Canvas. More info: https://storybook.js.org/docs/configure/story-layout
+ layout: 'centered',
+ controls: {
+ disable: true,
+ }
+ },
+ // This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/writing-docs/autodocs
+ tags: [],
+ // More on argTypes: https://storybook.js.org/docs/api/argtypes
+ argTypes: {
+ // storyName: {
+
+ // }
+ // visType: {
+
+ // }
+ // record: {
+
+ // }
+ // looped: {
+
+ // }
+ // controller: {
+
+ // }
+ // showTrails: {
+
+ // }
+ // showDebugInfo: {
+
+ // }
+ // maxFrameRate: {
+
+ // }
+ // maxTrailLength: {
+
+ // }
+ },
+ // Use `fn` to spy on the onClick arg, which will appear in the actions panel once invoked: https://storybook.js.org/docs/essentials/actions#action-args
+ args: { },
+} satisfies Meta;
+
+export default meta;
+type Story = StoryObj;
+
+// More on writing stories with args: https://storybook.js.org/docs/writing-stories/args
+export const TwoDim: Story = {
+ args: {
+ storyName: '2D',
+ },
+};
+
+export const ThreeDim: Story = {
+ args: {
+ storyName: '3D',
+ visType: '3D',
+ },
+};
\ No newline at end of file
diff --git a/.storybook/stories/Examples/Simulation.tsx b/.storybook/stories/Examples/Simulation.tsx
new file mode 100644
index 0000000..0df1757
--- /dev/null
+++ b/.storybook/stories/Examples/Simulation.tsx
@@ -0,0 +1,80 @@
+import React from 'react';
+import { CelestialBody, ControllerType, Gravity, Simulation as NbodySimulation, RungeKutta4Sim, State, Universe, Vector3, VisType } from "../../../src/index";
+
+interface SimulationProps {
+ storyName: string;
+ visType?: VisType;
+ record?: boolean;
+ looped?: boolean;
+ controller?: ControllerType;
+ showTrails?: boolean;
+ showDebugInfo?: boolean;
+ maxFrameRate?: number;
+ maxTrailLength?: number;
+}
+
+/**
+ * Primary UI component for user interaction
+ */
+export const Simulation = ({
+ storyName = 'default',
+ visType = '2D',
+ record = false,
+ looped = true,
+ controller = 'ui',
+ showTrails = false,
+ showDebugInfo = true,
+ maxFrameRate = -1,
+ maxTrailLength = 100,
+ ...props
+}: SimulationProps) => {
+ const divId = 'demo-' + storyName;
+ const force = new Gravity(1);
+ const a = new CelestialBody(
+ "a",
+ 1,
+ new Vector3(-0.97000436, 0.24308753, 0),
+ new Vector3(0.466203685, 0.43236573, 0),
+ new Vector3(0, 0, 0)
+ );
+ const b = new CelestialBody(
+ "b",
+ 1,
+ new Vector3(0.97000436, -0.24308753, 0),
+ new Vector3(0.466203685, 0.43236573, 0),
+ new Vector3(0, 0, 0)
+ );
+ const c = new CelestialBody(
+ "c",
+ 1,
+ new Vector3(0, 0, 0),
+ new Vector3(-2 * 0.466203685, -2 * 0.43236573, 0),
+ new Vector3(0, 0, 0)
+ );
+ const universe: Universe = new Universe({
+ label: "a",
+ currState: new State([a, b, c]),
+ color: "rgba(254, 209, 106, 1)",
+ simFunc: new RungeKutta4Sim(force, [1, 2, 2, 1]),
+ }
+ );
+
+ const simulation = new NbodySimulation([universe], {
+ visType,
+ record,
+ looped,
+ controller,
+ showTrails,
+ showDebugInfo,
+ maxFrameRate,
+ maxTrailLength,
+ });
+
+ return (
+
simulation.start(divId, 600, 600)}>
+
+ );
+};
diff --git a/.storybook/stories/Install.mdx b/.storybook/stories/Install.mdx
new file mode 100644
index 0000000..5d42744
--- /dev/null
+++ b/.storybook/stories/Install.mdx
@@ -0,0 +1,20 @@
+import { Meta, Story } from '@storybook/blocks';
+
+
+
+# Installation guide
+nbody is available on the npm registry as [nbody](https://www.npmjs.com/package/nbody). Simply follow the following install commands based on your package manager. Since nbody relies on [three](https://threejs.org/) and [Plotly.js](https://plotly.com/javascript/) for visualization of the simulations, they have to be installed alongside nbody.
+
+If you are using Typescript, you may also have to install type definitions as well.
+
+
+```bash
+npm install nbody three plotly.js-dist
+npm install --save-dev @types/three @types/plotly.js
+```
+or
+
+```bash
+yarn add nbody three plotly.js-dist
+yarn add -D @types/three @types/plotly.js
+```
diff --git a/.storybook/stories/Integration.mdx b/.storybook/stories/Integration.mdx
new file mode 100644
index 0000000..49882e8
--- /dev/null
+++ b/.storybook/stories/Integration.mdx
@@ -0,0 +1,123 @@
+import { Meta, Story } from '@storybook/blocks';
+
+
+
+# Integration
+
+Once installed into your `node_modules`, you can use **nbody** in your choice of your frontend framework just like you would any other client side library.
+
+## Table of Contents
+- [Compatible Frameworks](#compatible-frameworks)
+- [React](#react)
+- [Typescript](#typescript)
+
+## Compatible Frameworks
+
+Following combinations of Frontend frameworks + build tools + dev tools have been tested to be compatible with nbody. Consider raising a [request](https://github.com/source-academy/nbody/issues) if any frameworks are missing. Additionally do consider contributing to the project directly.
+
+- React + Vite
+- React + Vite + TS
+- React + Webpack
+- React + Webpack + TS
+
+## React
+
+```javascript
+import {
+ CelestialBody, Gravity, VelocityVerletSim, State, Universe, Simulation, RungeKutta4Sim, ExplicitEulerSim, SemiImplicitEulerSim, CoMTransformation, Vector3
+} from "nbody";
+
+function run(divId, width, height) {
+ let g = 1;
+
+ let force = new Gravity(g);
+ let sim = new VelocityVerletSim(force);
+
+ let a = new CelestialBody(
+ "a",
+ 1,
+ new Vector3(-0.97000436, 0.24308753, 0),
+ new Vector3(0.466203685, 0.43236573, 0),
+ new Vector3(0, 0, 0)
+ );
+
+ let b = new CelestialBody(
+ "b",
+ 1,
+ new Vector3(0.97000436, -0.24308753, 0),
+ new Vector3(0.466203685, 0.43236573, 0),
+ new Vector3(0, 0, 0)
+ );
+
+ let c = new CelestialBody(
+ "c",
+ 1,
+ new Vector3(0, 0, 0),
+ new Vector3(-2 * 0.466203685, -2 * 0.43236573, 0),
+ new Vector3(0, 0, 0)
+ );
+
+ let state = new State([a, b, c]);
+
+ let universe = new Universe({
+ label: "1",
+ currState: state.clone(),
+ color: "rgba(112, 185, 177, 1)",
+ simFunc: sim,
+ });
+
+ let simulation = new Simulation(universe, {
+ visType: "3D",
+ showTrails: true,
+ controller: "ui",
+ });
+
+ simulation.start(divId, 800, 800, width, height);
+}
+
+function App() {
+ return (
+
run("demo-canvas", 800, 800)}
+ >
+ );
+}
+
+export default App;
+```
+
+## Typescript
+
+```typescript
+class TranslateZTransformation implements Transformation {
+ transform(state: State, deltaT: number): State {
+ const newState = state.clone();
+ newState.bodies.forEach((body) => {
+ body.position.z += 1;
+ });
+ return newState;
+ }
+}
+
+function run(divId: string) {
+ ...
+
+ let universe: Universe = new Universe({
+ label: "Translated Universe",
+ currState: new State([a, b, c]),
+ color: "rgba(254, 209, 106, 1)",
+ simFunc: new VelocityVerletSim(new Gravity(1)),
+ transformations: [new TranslateZTransformation()]
+ }
+ );
+
+ ...
+}
+```
\ No newline at end of file
diff --git a/.storybook/stories/Nbody.mdx b/.storybook/stories/Nbody.mdx
new file mode 100644
index 0000000..6d9e04f
--- /dev/null
+++ b/.storybook/stories/Nbody.mdx
@@ -0,0 +1,27 @@
+import { Meta, Story } from "@storybook/blocks";
+
+
+
+[API](https://source-academy.github.io/nbody/api)
+
+# nbody
+
+A JS/TS library to configure, simulate and visualize nbody simulations in the browser.
+
+# Background
+
+The [**n-body problem**](https://en.wikipedia.org/wiki/N-body_problem), a cornerstone of celestial mechanics, involves predicting the motions of multiple objects interacting **gravitationally**. While solvable analytically for [two-bodies](https://en.wikipedia.org/wiki/Two-body_problem), we rely on computer simulations using numerical integration methods for three or more.
+
+This project aims to bridge the _space_ between accuracy, accessibility, performance and education. With this JS/TS library, you can
+
+- **Effortlessly configure** your system of bodies.
+- **Simulate with flexibility** utilizing various accurate and/or performant numerical integration methods or even write you own.
+- **Visually explore** and immerse yourself with customizable 2D and 3D visualizations and intuitive UI controls
+
+# Development
+
+**nbody** is maintained by the open-source [Source Academy](https://github.com/source-academy/) development community based in National University of Singapore. Anyone from anywhere is free to contribute to the project and the community.
+
+# Contributors
+
+- [Yeluri Ketan](https://yeluriketan.vercel.app/) - Creator and Maintainer
diff --git a/.storybook/stories/Usage/CelestialBody.mdx b/.storybook/stories/Usage/CelestialBody.mdx
new file mode 100644
index 0000000..e0a997d
--- /dev/null
+++ b/.storybook/stories/Usage/CelestialBody.mdx
@@ -0,0 +1,13 @@
+import { Meta, Story } from '@storybook/blocks';
+
+
+
+```ts
+ const a = new CelestialBody(
+ "a",
+ 1,
+ new Vector3(-0.97000436, 0.24308753, 0),
+ new Vector3(0.466203685, 0.43236573, 0),
+ new Vector3(0, 0, 0)
+ );
+```
\ No newline at end of file
diff --git a/.storybook/stories/assets/accessibility.png b/.storybook/stories/assets/accessibility.png
new file mode 100644
index 0000000..6ffe6fe
Binary files /dev/null and b/.storybook/stories/assets/accessibility.png differ
diff --git a/.storybook/stories/assets/accessibility.svg b/.storybook/stories/assets/accessibility.svg
new file mode 100644
index 0000000..a328883
--- /dev/null
+++ b/.storybook/stories/assets/accessibility.svg
@@ -0,0 +1,5 @@
+
\ No newline at end of file
diff --git a/.storybook/stories/assets/addon-library.png b/.storybook/stories/assets/addon-library.png
new file mode 100644
index 0000000..95deb38
Binary files /dev/null and b/.storybook/stories/assets/addon-library.png differ
diff --git a/.storybook/stories/assets/assets.png b/.storybook/stories/assets/assets.png
new file mode 100644
index 0000000..cfba681
Binary files /dev/null and b/.storybook/stories/assets/assets.png differ
diff --git a/.storybook/stories/assets/avif-test-image.avif b/.storybook/stories/assets/avif-test-image.avif
new file mode 100644
index 0000000..530709b
Binary files /dev/null and b/.storybook/stories/assets/avif-test-image.avif differ
diff --git a/.storybook/stories/assets/context.png b/.storybook/stories/assets/context.png
new file mode 100644
index 0000000..e5cd249
Binary files /dev/null and b/.storybook/stories/assets/context.png differ
diff --git a/.storybook/stories/assets/discord.svg b/.storybook/stories/assets/discord.svg
new file mode 100644
index 0000000..1204df9
--- /dev/null
+++ b/.storybook/stories/assets/discord.svg
@@ -0,0 +1,15 @@
+
diff --git a/.storybook/stories/assets/docs.png b/.storybook/stories/assets/docs.png
new file mode 100644
index 0000000..a749629
Binary files /dev/null and b/.storybook/stories/assets/docs.png differ
diff --git a/.storybook/stories/assets/figma-plugin.png b/.storybook/stories/assets/figma-plugin.png
new file mode 100644
index 0000000..8f79b08
Binary files /dev/null and b/.storybook/stories/assets/figma-plugin.png differ
diff --git a/.storybook/stories/assets/github.svg b/.storybook/stories/assets/github.svg
new file mode 100644
index 0000000..158e026
--- /dev/null
+++ b/.storybook/stories/assets/github.svg
@@ -0,0 +1,3 @@
+
diff --git a/.storybook/stories/assets/share.png b/.storybook/stories/assets/share.png
new file mode 100644
index 0000000..8097a37
Binary files /dev/null and b/.storybook/stories/assets/share.png differ
diff --git a/.storybook/stories/assets/styling.png b/.storybook/stories/assets/styling.png
new file mode 100644
index 0000000..d341e82
Binary files /dev/null and b/.storybook/stories/assets/styling.png differ
diff --git a/.storybook/stories/assets/testing.png b/.storybook/stories/assets/testing.png
new file mode 100644
index 0000000..d4ac39a
Binary files /dev/null and b/.storybook/stories/assets/testing.png differ
diff --git a/.storybook/stories/assets/theming.png b/.storybook/stories/assets/theming.png
new file mode 100644
index 0000000..1535eb9
Binary files /dev/null and b/.storybook/stories/assets/theming.png differ
diff --git a/.storybook/stories/assets/tutorials.svg b/.storybook/stories/assets/tutorials.svg
new file mode 100644
index 0000000..4b2fc7c
--- /dev/null
+++ b/.storybook/stories/assets/tutorials.svg
@@ -0,0 +1,12 @@
+
diff --git a/.storybook/stories/assets/youtube.svg b/.storybook/stories/assets/youtube.svg
new file mode 100644
index 0000000..33a3a61
--- /dev/null
+++ b/.storybook/stories/assets/youtube.svg
@@ -0,0 +1,4 @@
+
diff --git a/.vscode/settings.json b/.vscode/settings.json
index d3164c2..6fde596 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,8 +1,11 @@
{
- "eslint.workingDirectories": ["src"],
+ "eslint.workingDirectories": ["src", ".storybook"],
"[typescript]": {
"editor.defaultFormatter": "dbaeumer.vscode-eslint"
},
+ "[typescriptreact]": {
+ "editor.defaultFormatter": "dbaeumer.vscode-eslint"
+ },
"eslint.format.enable": true,
"editor.codeActionsOnSave": {
"source.organizeImports": "always",
diff --git a/dist/src/CelestialBody.js b/dist/src/CelestialBody.js
index c322895..bda3bb5 100644
--- a/dist/src/CelestialBody.js
+++ b/dist/src/CelestialBody.js
@@ -29,4 +29,3 @@ export class CelestialBody {
return new CelestialBody(this.label, this.mass, position === undefined ? this.position.clone() : position, velocity === undefined ? this.velocity.clone() : velocity, acceleration === undefined ? this.acceleration.clone() : acceleration);
}
}
-//# sourceMappingURL=CelestialBody.js.map
\ No newline at end of file
diff --git a/dist/src/CelestialBody.js.map b/dist/src/CelestialBody.js.map
deleted file mode 100644
index e57d037..0000000
--- a/dist/src/CelestialBody.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"CelestialBody.js","sourceRoot":"","sources":["../../src/CelestialBody.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,OAAO,aAAa;IAsBxB;;;;;;;OAOG;IACH,YACE,KAAa,EACb,IAAY,EACZ,QAAiB,EACjB,QAAiB,EACjB,YAAqB;QAErB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,QAAkB,EACtB,QAAkB,EAClB,YAAsB;QACtB,OAAO,IAAI,aAAa,CACtB,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,IAAI,EACT,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,EACzD,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,EACzD,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,YAAY,CACtE,CAAC;IACJ,CAAC;CACF"}
\ No newline at end of file
diff --git a/dist/src/Force.js b/dist/src/Force.js
index 69d14e3..4fc2b00 100644
--- a/dist/src/Force.js
+++ b/dist/src/Force.js
@@ -22,4 +22,3 @@ export class LambdaForce {
return this.fn(bodies);
}
}
-//# sourceMappingURL=Force.js.map
\ No newline at end of file
diff --git a/dist/src/Force.js.map b/dist/src/Force.js.map
deleted file mode 100644
index c245114..0000000
--- a/dist/src/Force.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"Force.js","sourceRoot":"","sources":["../../src/Force.ts"],"names":[],"mappings":"AAYA;;;GAGG;AACH,MAAM,OAAO,WAAW;IAMtB;;;;;;OAMG;IACH,YAAY,EAA0C;QACpD,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IAGD;;;;OAIG;IACH,SAAS,CAAC,MAAuB;QAC/B,OAAO,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;IACzB,CAAC;CACF"}
\ No newline at end of file
diff --git a/dist/src/SimulateFunction.js b/dist/src/SimulateFunction.js
index fc94acf..3770add 100644
--- a/dist/src/SimulateFunction.js
+++ b/dist/src/SimulateFunction.js
@@ -23,4 +23,3 @@ export class LambdaSim {
return this.fn(deltaT, currState, prevState);
}
}
-//# sourceMappingURL=SimulateFunction.js.map
\ No newline at end of file
diff --git a/dist/src/SimulateFunction.js.map b/dist/src/SimulateFunction.js.map
deleted file mode 100644
index 3deeede..0000000
--- a/dist/src/SimulateFunction.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"SimulateFunction.js","sourceRoot":"","sources":["../../src/SimulateFunction.ts"],"names":[],"mappings":"AAmBA;;;GAGG;AACH,MAAM,OAAO,SAAS;IAGpB;;;;;OAKG;IACH,YAAY,EAAiE;QAC3E,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IAED;;;;;;OAMG;IACH,QAAQ,CAAC,MAAc,EAAE,SAAgB,EAAE,SAAgB;QACzD,OAAO,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IAC/C,CAAC;CACF"}
\ No newline at end of file
diff --git a/dist/src/Simulation.js b/dist/src/Simulation.js
index 0444a70..c569915 100644
--- a/dist/src/Simulation.js
+++ b/dist/src/Simulation.js
@@ -185,4 +185,3 @@ export class Simulation {
this.visualizer.stop();
}
}
-//# sourceMappingURL=Simulation.js.map
\ No newline at end of file
diff --git a/dist/src/Simulation.js.map b/dist/src/Simulation.js.map
deleted file mode 100644
index 5302558..0000000
--- a/dist/src/Simulation.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"Simulation.js","sourceRoot":"","sources":["../../src/Simulation.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/src/State.js b/dist/src/State.js
index 20aa829..72a056c 100644
--- a/dist/src/State.js
+++ b/dist/src/State.js
@@ -18,4 +18,3 @@ export class State {
return new State(this.bodies.map((body) => body.clone()));
}
}
-//# sourceMappingURL=State.js.map
\ No newline at end of file
diff --git a/dist/src/State.js.map b/dist/src/State.js.map
deleted file mode 100644
index 7bd3eba..0000000
--- a/dist/src/State.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"State.js","sourceRoot":"","sources":["../../src/State.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,OAAO,KAAK;IAMhB;;;OAGG;IACH,YAAY,MAAuB;QACjC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;;OAGG;IACH,KAAK;QACH,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC5D,CAAC;CACF"}
\ No newline at end of file
diff --git a/dist/src/Transformation.js b/dist/src/Transformation.js
index 30a7143..a99b53c 100644
--- a/dist/src/Transformation.js
+++ b/dist/src/Transformation.js
@@ -23,4 +23,3 @@ export class LambdaTransformation {
return this.fn(state, deltaT);
}
}
-//# sourceMappingURL=Transformation.js.map
\ No newline at end of file
diff --git a/dist/src/Transformation.js.map b/dist/src/Transformation.js.map
deleted file mode 100644
index 7577995..0000000
--- a/dist/src/Transformation.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"Transformation.js","sourceRoot":"","sources":["../../src/Transformation.ts"],"names":[],"mappings":"AAiBA;;;GAGG;AACH,MAAM,OAAO,oBAAoB;IAG/B;;;;;;OAMG;IACH,YAAY,EAA2C;QACrD,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IAED;;;;;OAKG;IACH,SAAS,CAAC,KAAY,EAAE,MAAc;QACpC,OAAO,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAChC,CAAC;CACF"}
\ No newline at end of file
diff --git a/dist/src/Universe.js b/dist/src/Universe.js
index f371dad..5c39a02 100644
--- a/dist/src/Universe.js
+++ b/dist/src/Universe.js
@@ -54,4 +54,3 @@ export class Universe {
});
}
}
-//# sourceMappingURL=Universe.js.map
\ No newline at end of file
diff --git a/dist/src/Universe.js.map b/dist/src/Universe.js.map
deleted file mode 100644
index 6801ab0..0000000
--- a/dist/src/Universe.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"Universe.js","sourceRoot":"","sources":["../../src/Universe.ts"],"names":[],"mappings":"AAmCA;;;GAGG;AACH,MAAM,OAAO,QAAQ;IAoBnB;;;OAGG;IACH,YAAY,MAA+B;QACzC,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACzF,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC7F,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QACpE,IAAI,CAAC,SAAS;cACV,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;QACzE,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QAClC,IAAI,CAAC,KAAK;cACN,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QACzE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,eAAe;cAChB,MAAM,CAAC,eAAe,KAAK,SAAS;gBACpC,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC;oBACrC,CAAC,CAAC,MAAM,CAAC,eAAe;oBACxB,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IACnC,CAAC;IAED;;;;OAIG;IACH,YAAY,CAAC,MAAc;QACzB,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAClC,MAAM,EACN,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,CACf,CAAC;QACF,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACjC,QAAQ,GAAG,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACH,KAAK;QACH,OAAO,IAAI,QAAQ,CAAC;YAClB,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;YACjC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;YACjC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,eAAe,EAAE,IAAI,CAAC,eAAe;SACtC,CAAC,CAAC;IACL,CAAC;CACF"}
\ No newline at end of file
diff --git a/dist/src/Visualizer.js b/dist/src/Visualizer.js
index 25785bb..cb0ff5c 100644
--- a/dist/src/Visualizer.js
+++ b/dist/src/Visualizer.js
@@ -1,2 +1 @@
export {};
-//# sourceMappingURL=Visualizer.js.map
\ No newline at end of file
diff --git a/dist/src/Visualizer.js.map b/dist/src/Visualizer.js.map
deleted file mode 100644
index 71c014d..0000000
--- a/dist/src/Visualizer.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"Visualizer.js","sourceRoot":"","sources":["../../src/Visualizer.ts"],"names":[],"mappings":""}
\ No newline at end of file
diff --git a/dist/src/index.js b/dist/src/index.js
index 1ed6e96..6c00158 100644
--- a/dist/src/index.js
+++ b/dist/src/index.js
@@ -15,4 +15,3 @@ import { Universe } from './Universe';
import { RealTimeVisualizer, RealTimeVisualizer3D, RecordingVisualizer, RecordingVisualizer3D, } from './library/Visualizer';
import { Vector3 } from 'three';
export { BodyCenterTransformation, CelestialBody, CentripetalForce, CombinedForce, CoMTransformation, ExplicitEulerSim, Gravity, LambdaForce, LambdaSim, LambdaTransformation, RealTimeVisualizer, RealTimeVisualizer3D, RecordingVisualizer, RecordingVisualizer3D, RotateTransformation, RungeKutta4Sim, SemiImplicitEulerSim, Simulation, State, Universe, Vector3, VelocityVerletSim, };
-//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/dist/src/index.js.map b/dist/src/index.js.map
deleted file mode 100644
index 7e15b5c..0000000
--- a/dist/src/index.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,aAAa,GACd,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,WAAW,EAAc,MAAM,SAAS,CAAC;AAClD,OAAO,EACL,gBAAgB,EAAE,aAAa,EAAE,OAAO,GACzC,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,gBAAgB,EAAE,cAAc,EAChC,oBAAoB,EAAE,iBAAiB,GACxC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,SAAS,EAAyB,MAAM,oBAAoB,CAAC;AAEtE,OAAO,EAAE,UAAU,EAAqC,MAAM,cAAc,CAAC;AAE7E,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EAAE,oBAAoB,GACxC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAuB,MAAM,kBAAkB,CAAC;AAE7E,OAAO,EAAE,QAAQ,EAAuB,MAAM,YAAY,CAAC;AAE3D,OAAO,EACL,kBAAkB,EAAE,oBAAoB,EACxC,mBAAmB,EAAE,qBAAqB,GAC3C,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,EACL,wBAAwB,EAAE,aAAa,EAAE,gBAAgB,EACzD,aAAa,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,oBAAoB,EAAE,kBAAkB,EAC7H,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EAAE,cAAc,EACpC,oBAAoB,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,GAC9E,CAAC"}
\ No newline at end of file
diff --git a/dist/src/library/Force.js b/dist/src/library/Force.js
index aa9d3ad..edd0194 100644
--- a/dist/src/library/Force.js
+++ b/dist/src/library/Force.js
@@ -102,4 +102,3 @@ export class CombinedForce {
return forceVal;
}
}
-//# sourceMappingURL=Force.js.map
\ No newline at end of file
diff --git a/dist/src/library/Force.js.map b/dist/src/library/Force.js.map
deleted file mode 100644
index f7ad36c..0000000
--- a/dist/src/library/Force.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"Force.js","sourceRoot":"","sources":["../../../src/library/Force.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/src/library/SimulateFunction.js b/dist/src/library/SimulateFunction.js
index 9b2dce7..4c5b59d 100644
--- a/dist/src/library/SimulateFunction.js
+++ b/dist/src/library/SimulateFunction.js
@@ -336,4 +336,3 @@ export class RungeKutta4Sim {
.multiplyScalar(deltaT)));
}
}
-//# sourceMappingURL=SimulateFunction.js.map
\ No newline at end of file
diff --git a/dist/src/library/SimulateFunction.js.map b/dist/src/library/SimulateFunction.js.map
deleted file mode 100644
index a491a01..0000000
--- a/dist/src/library/SimulateFunction.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"SimulateFunction.js","sourceRoot":"","sources":["../../../src/library/SimulateFunction.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/src/library/Transformation.js b/dist/src/library/Transformation.js
index ea1384a..d418405 100644
--- a/dist/src/library/Transformation.js
+++ b/dist/src/library/Transformation.js
@@ -88,4 +88,3 @@ export class RotateTransformation {
// return state;
// }
// }
-//# sourceMappingURL=Transformation.js.map
\ No newline at end of file
diff --git a/dist/src/library/Transformation.js.map b/dist/src/library/Transformation.js.map
deleted file mode 100644
index 61b9676..0000000
--- a/dist/src/library/Transformation.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"Transformation.js","sourceRoot":"","sources":["../../../src/library/Transformation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAIhC;;;GAGG;AACH,MAAM,OAAO,wBAAwB;IACnC;;;;OAIG;IACH,SAAS,CAAC,KAAY;QACpB,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACnD,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACzB,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,iBAAiB;IAC5B;;;;OAIG;IACH,SAAS,CAAC,KAAY;QACpB,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,GAAG,GAAG,IAAI,OAAO,EAAE,CAAC;QACxB,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACzB,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC;YACpB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE;iBACvB,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC5B,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACzB,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,oBAAoB;IAI/B;;;;OAIG;IACH,YAAY,IAAa,EAAE,KAAa;QACtC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED;;;;OAIG;IACH,SAAS,CAAC,KAAY;QACpB,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACzB,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACjD,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACjD,CAAC,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAED,uDAAuD;AACvD,4BAA4B;AAC5B,4BAA4B;AAE5B,gDAAgD;AAChD,wBAAwB;AACxB,yBAAyB;AACzB,MAAM;AAEN,qCAAqC;AACrC,kFAAkF;AAClF,oGAAoG;AACpG,oCAAoC;AACpC,yDAAyD;AACzD,yDAAyD;AACzD,6DAA6D;AAC7D,UAAU;AACV,oBAAoB;AACpB,MAAM;AACN,IAAI"}
\ No newline at end of file
diff --git a/dist/src/library/Visualizer.js b/dist/src/library/Visualizer.js
index 01cfd2e..42764e9 100644
--- a/dist/src/library/Visualizer.js
+++ b/dist/src/library/Visualizer.js
@@ -1,9 +1,9 @@
+/* eslint-disable import/extensions */
import GUI from 'lil-gui';
import Plotly from 'plotly.js-dist';
import * as THREE from 'three';
-import { OrbitControls, ViewHelper } from 'three/examples/jsm/Addons';
-import Stats from 'three/examples/jsm/libs/stats.module';
-let animationId = null;
+import { OrbitControls, ViewHelper } from 'three/examples/jsm/Addons.js';
+import Stats from 'three/examples/jsm/libs/stats.module.js';
/**
* Clips a number to a minimum and maximum value.
* @param x number to clip.
@@ -79,6 +79,7 @@ export class RealTimeVisualizer {
* @param simulation simulation object
*/
constructor(simulation) {
+ this.animationId = null;
this.divId = '';
this.universeTrails = [];
this.simulation = simulation;
@@ -125,10 +126,7 @@ export class RealTimeVisualizer {
*/
start(divId, width, height) {
if (this.divId !== '') {
- // throw new Error(
- // 'Simulation already playing. Stop the current playtime before initiating a new one.',
- // );
- console.error('Simulation already playing. Stop the current playtime before initiating a new one.');
+ console.error(divId, 'Simulation already playing. Stop the current playtime before initiating a new one.');
return;
}
this.divId = divId;
@@ -213,8 +211,6 @@ export class RealTimeVisualizer {
],
});
const timePerFrame = 1000 / this.simulation.maxFrameRate;
- if (animationId !== null)
- return;
let lastPaintTimestampMs = 0;
let lastSimTimestampMs = 0;
/**
@@ -234,13 +230,13 @@ export class RealTimeVisualizer {
const paint = (timestampMs) => {
if (this.simulation.controls.speed === 0
|| this.simulation.controls.paused) {
- animationId = requestAnimationFrame(paint);
+ this.animationId = requestAnimationFrame(paint);
return;
}
step(timestampMs);
if (timePerFrame > 0
&& timestampMs - lastPaintTimestampMs < timePerFrame) {
- animationId = requestAnimationFrame(paint);
+ this.animationId = requestAnimationFrame(paint);
return;
}
lastPaintTimestampMs = timestampMs;
@@ -279,14 +275,19 @@ export class RealTimeVisualizer {
if (this.simulation.showDebugInfo && stats) {
stats.update();
}
- animationId = requestAnimationFrame(paint);
+ this.animationId = requestAnimationFrame(paint);
};
- animationId = requestAnimationFrame(paint);
+ this.animationId = requestAnimationFrame(paint);
}
/**
* Stop the simulation and visualization.
*/
stop() {
+ console.log('stopping in viz');
+ if (this.animationId === null) {
+ return;
+ }
+ cancelAnimationFrame(this.animationId);
Plotly.purge(this.divId);
this.divId = '';
this.universeTrails.forEach((ut) => {
@@ -358,6 +359,8 @@ export class RealTimeVisualizer3D {
* @param simulation simulation object.
*/
constructor(simulation) {
+ this.animationId = null;
+ this.renderer = null;
this.universeTrails = [];
this.simulation = simulation;
}
@@ -405,10 +408,7 @@ export class RealTimeVisualizer3D {
*/
start(divId, width, height) {
if (this.scene !== undefined) {
- // throw new Error(
- // 'Simulation already playing. Stop the current playtime before initiating a new one.',
- // );
- console.error('Simulation already playing. Stop the current playtime before initiating a new one.');
+ console.error(divId, 'Simulation already playing. Stop the current playtime before initiating a new one.');
return;
}
let element = document.getElementById(divId);
@@ -428,10 +428,10 @@ export class RealTimeVisualizer3D {
this.scene = new THREE.Scene();
const camera = new THREE.OrthographicCamera(width / -2, width / 2, height / 2, height / -2, 0, 10000000000);
camera.position.set(0, 0, Math.max(width, height));
- const renderer = new THREE.WebGLRenderer();
- renderer.setSize(width, height);
- renderer.autoClear = false;
- element.appendChild(renderer.domElement);
+ this.renderer = new THREE.WebGLRenderer();
+ this.renderer.setSize(width, height);
+ this.renderer.autoClear = false;
+ element.appendChild(this.renderer.domElement);
let stats;
if (this.simulation.showDebugInfo) {
stats = new Stats();
@@ -460,12 +460,12 @@ export class RealTimeVisualizer3D {
// labelRenderer.domElement.style.position = 'absolute';
// labelRenderer.domElement.style.top = '0px';
// element.appendChild(labelRenderer.domElement);
- const orbitControls = new OrbitControls(camera, renderer.domElement);
+ const orbitControls = new OrbitControls(camera, this.renderer.domElement);
orbitControls.listenToKeyEvents(window);
orbitControls.update();
const axesHelper = new THREE.AxesHelper(width);
this.scene.add(axesHelper);
- const viewHelper = new ViewHelper(camera, renderer.domElement);
+ const viewHelper = new ViewHelper(camera, this.renderer.domElement);
// var m: Map = new Map();
let arr = [];
this.simulation.universes.forEach((u) => {
@@ -505,20 +505,20 @@ export class RealTimeVisualizer3D {
const paint = (timestampMs) => {
if (this.simulation.controls.speed === 0
|| this.simulation.controls.paused) {
- requestAnimationFrame(paint);
- renderer.clear();
- renderer.render(this.scene, camera);
- viewHelper.render(renderer);
+ this.animationId = requestAnimationFrame(paint);
+ this.renderer.clear();
+ this.renderer.render(this.scene, camera);
+ viewHelper.render(this.renderer);
// labelRenderer.render(scene, camera);
orbitControls.update();
return;
}
step(timestampMs);
if (timePerFrame > 0 && timestampMs - lastPaint < timePerFrame) {
- requestAnimationFrame(paint);
- renderer.clear();
- renderer.render(this.scene, camera);
- viewHelper.render(renderer);
+ this.animationId = requestAnimationFrame(paint);
+ this.renderer.clear();
+ this.renderer.render(this.scene, camera);
+ viewHelper.render(this.renderer);
// labelRenderer.render(scene, camera);
orbitControls.update();
return;
@@ -547,22 +547,29 @@ export class RealTimeVisualizer3D {
});
}
});
- requestAnimationFrame(paint);
- renderer.clear();
- renderer.render(this.scene, camera);
- viewHelper.render(renderer);
+ this.animationId = requestAnimationFrame(paint);
+ this.renderer.clear();
+ this.renderer.render(this.scene, camera);
+ viewHelper.render(this.renderer);
// labelRenderer.render(scene, camera);
orbitControls.update();
};
- requestAnimationFrame(paint);
+ this.animationId = requestAnimationFrame(paint);
}
/**
* Stop the simulation and visualization.
*/
stop() {
- var _a;
- (_a = this.scene) === null || _a === void 0 ? void 0 : _a.clear();
+ var _a, _b, _c;
+ if (this.animationId === null) {
+ return;
+ }
+ cancelAnimationFrame(this.animationId);
+ (_a = this.renderer) === null || _a === void 0 ? void 0 : _a.clear();
+ (_b = this.renderer) === null || _b === void 0 ? void 0 : _b.dispose();
+ (_c = this.scene) === null || _c === void 0 ? void 0 : _c.clear();
this.scene = undefined;
+ this.renderer = null;
this.universeTrails.forEach((ut) => {
ut.popAllTrails();
});
@@ -579,6 +586,7 @@ export class RecordingVisualizer {
* @param simulation simulation object
*/
constructor(simulation) {
+ this.animationId = null;
this.divId = '';
this.universeTrails = [];
this.simulation = simulation;
@@ -626,9 +634,6 @@ export class RecordingVisualizer {
*/
start(divId, width, height, recordFor) {
if (this.divId !== '') {
- // throw new Error(
- // 'Simulation already playing. Stop the current playtime before initiating a new one.',
- // );
console.error('Simulation already playing. Stop the current playtime before initiating a new one.');
return;
}
@@ -726,8 +731,6 @@ export class RecordingVisualizer {
'resetScale2d',
],
});
- if (animationId !== null)
- return;
/**
* Paint the visualization
* @param timestampMs current timestamp in milliseconds, provided by requestAnimationFrame
@@ -735,7 +738,7 @@ export class RecordingVisualizer {
const paint = (timestampMs) => {
if (this.simulation.controls.speed === 0
|| this.simulation.controls.paused) {
- animationId = requestAnimationFrame(paint);
+ this.animationId = requestAnimationFrame(paint);
return;
}
const currPlayInd = Math.round(playInd);
@@ -792,14 +795,18 @@ export class RecordingVisualizer {
playInd = totalFrames - 1;
}
}
- animationId = requestAnimationFrame(paint);
+ this.animationId = requestAnimationFrame(paint);
};
- animationId = requestAnimationFrame(paint);
+ this.animationId = requestAnimationFrame(paint);
}
/**
* Stop the simulation and visualization.
*/
stop() {
+ if (this.animationId === null) {
+ return;
+ }
+ cancelAnimationFrame(this.animationId);
Plotly.purge(this.divId);
this.divId = '';
this.universeTrails = [];
@@ -815,6 +822,7 @@ export class RecordingVisualizer3D {
* @param simulation simulation object.
*/
constructor(simulation) {
+ this.animationId = null;
this.universeTrails = [];
this.simulation = simulation;
}
@@ -863,9 +871,6 @@ export class RecordingVisualizer3D {
*/
start(divId, width, height, recordFor) {
if (this.scene !== undefined) {
- // throw new Error(
- // 'Simulation already playing. Stop the current playtime before initiating a new one.',
- // );
console.error('Simulation already playing. Stop the current playtime before initiating a new one.');
return;
}
@@ -961,7 +966,7 @@ export class RecordingVisualizer3D {
const paint = (timestampMs) => {
if (this.simulation.controls.speed === 0
|| this.simulation.controls.paused) {
- requestAnimationFrame(paint);
+ this.animationId = requestAnimationFrame(paint);
renderer.clear();
renderer.render(this.scene, camera);
viewHelper.render(renderer);
@@ -1010,20 +1015,24 @@ export class RecordingVisualizer3D {
playInd = totalFrames - 1;
}
}
- requestAnimationFrame(paint);
+ this.animationId = requestAnimationFrame(paint);
renderer.clear();
renderer.render(this.scene, camera);
viewHelper.render(renderer);
// labelRenderer.render(scene, camera);
orbitControls.update();
};
- requestAnimationFrame(paint);
+ this.animationId = requestAnimationFrame(paint);
}
/**
* Stop the simulation and visualization.
*/
stop() {
var _a;
+ if (this.animationId === null) {
+ return;
+ }
+ cancelAnimationFrame(this.animationId);
(_a = this.scene) === null || _a === void 0 ? void 0 : _a.clear();
this.scene = undefined;
this.universeTrails.forEach((ut) => {
@@ -1032,4 +1041,3 @@ export class RecordingVisualizer3D {
this.universeTrails = [];
}
}
-//# sourceMappingURL=Visualizer.js.map
\ No newline at end of file
diff --git a/dist/src/library/Visualizer.js.map b/dist/src/library/Visualizer.js.map
deleted file mode 100644
index 4d59043..0000000
--- a/dist/src/library/Visualizer.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"Visualizer.js","sourceRoot":"","sources":["../../../src/library/Visualizer.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/src/plotly.js b/dist/src/plotly.js
index 49893ec..e8a0cbb 100644
--- a/dist/src/plotly.js
+++ b/dist/src/plotly.js
@@ -28,4 +28,3 @@ export class SimulationPlot {
this.layout = layout;
}
}
-//# sourceMappingURL=plotly.js.map
\ No newline at end of file
diff --git a/dist/src/plotly.js.map b/dist/src/plotly.js.map
deleted file mode 100644
index 72e1dcc..0000000
--- a/dist/src/plotly.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"plotly.js","sourceRoot":"","sources":["../../src/plotly.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,MAAM,OAAO,cAAc;IAKzB;;;;;;OAMG;IACH,YACE,YAAiB,EACjB,IAAU,EACV,GAAe,EACf,MAAuB;QAOzB;;;WAGG;QACI,iBAAY,GAAG,GAAG,EAAE,CAAC,kBAAkB,CAAC;QAE/C;;;WAGG;QACI,SAAI,GAAG,CAAC,KAAa,EAAE,EAAE;YAC9B,IAAI,CAAC,YAAY,CACf,KAAK,EACL,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,GAAG,EACR,IAAI,CAAC,MAAM,CACZ,CAAC;QACJ,CAAC,CAAC;QAtBA,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CAmBF"}
\ No newline at end of file
diff --git a/dist/types/src/library/Visualizer.d.ts b/dist/types/src/library/Visualizer.d.ts
index 17db7d4..11da1c7 100644
--- a/dist/types/src/library/Visualizer.d.ts
+++ b/dist/types/src/library/Visualizer.d.ts
@@ -39,6 +39,7 @@ declare class PlotlyUniverseTrail {
* @category Visualizers
*/
export declare class RealTimeVisualizer implements Visualizer {
+ animationId: number | null;
simulation: Simulation;
divId: string;
universeTrails: PlotlyUniverseTrail[];
@@ -98,6 +99,8 @@ declare class ThreeUniverseTrail {
* @category Visualizers
*/
export declare class RealTimeVisualizer3D implements Visualizer {
+ animationId: number | null;
+ renderer: THREE.WebGLRenderer | null;
simulation: Simulation;
scene?: THREE.Scene;
universeTrails: ThreeUniverseTrail[];
@@ -128,6 +131,7 @@ export declare class RealTimeVisualizer3D implements Visualizer {
* @category Visualizers
*/
export declare class RecordingVisualizer implements Visualizer {
+ animationId: number | null;
simulation: Simulation;
divId: string;
universeTrails: PlotlyUniverseTrail[];
@@ -159,6 +163,7 @@ export declare class RecordingVisualizer implements Visualizer {
* @category Visualizers
*/
export declare class RecordingVisualizer3D implements Visualizer {
+ animationId: number | null;
simulation: Simulation;
scene?: THREE.Scene;
universeTrails: ThreeUniverseTrail[];
diff --git a/docs/.nojekyll b/docs/api/.nojekyll
similarity index 100%
rename from docs/.nojekyll
rename to docs/api/.nojekyll
diff --git a/docs/assets/highlight.css b/docs/api/assets/highlight.css
similarity index 100%
rename from docs/assets/highlight.css
rename to docs/api/assets/highlight.css
diff --git a/docs/assets/icons.js b/docs/api/assets/icons.js
similarity index 100%
rename from docs/assets/icons.js
rename to docs/api/assets/icons.js
diff --git a/docs/assets/icons.svg b/docs/api/assets/icons.svg
similarity index 100%
rename from docs/assets/icons.svg
rename to docs/api/assets/icons.svg
diff --git a/docs/assets/main.js b/docs/api/assets/main.js
similarity index 100%
rename from docs/assets/main.js
rename to docs/api/assets/main.js
diff --git a/docs/assets/navigation.js b/docs/api/assets/navigation.js
similarity index 100%
rename from docs/assets/navigation.js
rename to docs/api/assets/navigation.js
diff --git a/docs/api/assets/search.js b/docs/api/assets/search.js
new file mode 100644
index 0000000..0023137
--- /dev/null
+++ b/docs/api/assets/search.js
@@ -0,0 +1 @@
+window.searchData = "data:application/octet-stream;base64,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";
\ No newline at end of file
diff --git a/docs/assets/style.css b/docs/api/assets/style.css
similarity index 100%
rename from docs/assets/style.css
rename to docs/api/assets/style.css
diff --git a/docs/classes/BodyCenterTransformation.html b/docs/api/classes/BodyCenterTransformation.html
similarity index 98%
rename from docs/classes/BodyCenterTransformation.html
rename to docs/api/classes/BodyCenterTransformation.html
index 25ba4ce..4de5ad9 100644
--- a/docs/classes/BodyCenterTransformation.html
+++ b/docs/api/classes/BodyCenterTransformation.html
@@ -1,7 +1,7 @@
BodyCenterTransformation | nbody
Frame of reference transformation to the center of the first body in the system.
-