@neutrinoparticles/js-v1.0 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.1.0] - 2026-07-13
4
+
5
+ - Added quaternion helpers to the expression layer (`Context.mulq_`, `inverseq_`, `quat_`) so exported effects can multiply, invert and construct quaternions in expressions — used by the new axis/self-rotation export path
6
+
3
7
  ## [1.0.0] - 2026-03-03
4
8
 
5
9
  - Initial release as `@neutrinoparticles/js-v1.0` (corresponds to `neutrinoparticles` v2.0.3)
package/README.md CHANGED
@@ -1,275 +1,174 @@
1
- # neutrinoparticles.js
1
+ # @neutrinoparticles/js-v1.0
2
2
 
3
- The library allows you to load and simulate particle effects exported from [NeutrinoParticles Editor](https://neutrinoparticles.com/).
4
-
5
- This is basically a core library which can update particle effect and give you instructions on how to render this effect.
6
-
7
- ## Available integrations
8
-
9
- Below is a list of addons for most popular engines/frameworks. These addons provide integrated renderers for `neutrinoparticles.js`.
10
-
11
- |||
12
- |-------------|-------------|
13
- | [![neutrinoparticles.pixi](img/integration_pixijs.png)](https://gitlab.com/neutrinoparticles/neutrinoparticles.pixi.js) | Full integration. Supports PIXI.js v4 and v5. |
14
- | [![neutrinoparticles.phaser](img/integration_phaser.png)](https://gitlab.com/neutrinoparticles/neutrinoparticles.phaser) | Full integration. Supports Phaser3 only. |
15
- |||
3
+ Core JavaScript runtime library for simulating [NeutrinoParticles](https://neutrinoparticles.com/) effects (format v1.0).
16
4
 
17
5
  ## Installation
18
6
 
19
- You can install the package with `npm`:
7
+ ```bash
8
+ npm install @neutrinoparticles/js-v1.0
20
9
  ```
21
- > npm install neutrinoparticles.js
22
- ```
23
- Or download pre-built package at [Releases](https://gitlab.com/neutrinoparticles/neutrinoparticles.js/-/releases) page. There are [UMD](https://www.davidbcalhoun.com/2014/what-is-amd-commonjs-and-umd/) packages which you can use in any environment.
24
10
 
25
- ## Introduction
11
+ **Note:** For most projects, install an integration package instead — it includes this core library as a dependency:
12
+ - `@neutrinoparticles/js-v1.0-pixi8` (PIXI.js v8)
13
+ - `@neutrinoparticles/js-v1.0-pixi7` (PIXI.js v7)
14
+ - `@neutrinoparticles/js-v1.0-pixi6` (PIXI.js v4/v5/v6)
15
+ - `@neutrinoparticles/js-v1.0-phaser` (Phaser 3)
26
16
 
27
- [NeutrinoParticles Editor](https://neutrinoparticles.com/) exports effect to `.js` file. This file contains a class of the effect with all algorithms and data necessary to simulate it. This class is a **model** of effect. The model is constant object, and you need only one model to have many instances of this effect in your application.
17
+ ## Export Target in Editor
28
18
 
29
- This library contains shared code which exported effects use. In particular, mathematics, turbulence computations etc.
19
+ In the NeutrinoParticles Editor, set the export target to **JavaScript v1.0**.
30
20
 
31
- To use the library in your application, first of all, you need to get access to it. Depending on your environment:
32
- * HTML
33
- ```html
34
- <script src="path/to/neutrinoparticles.js/dist/neutrinoparticles.umd.js"></script>
35
- ```
36
- * node.js
37
- ```javascript
38
- var Neutrino = require('neutrinoparticles.js')
39
- ```
40
- * ES6
41
- ```javascript
42
- import * as Neutrino from 'neutrinoparticles.js'
43
- ```
21
+ After export you get a `.js` file (e.g. `my_effect.js`) containing the effect model.
44
22
 
45
- ## Main Context
46
- Main context is a main interface of the library and a shared object for all effects in the application.
23
+ ## What Is This Package?
47
24
 
48
- To create it:
49
- ```javascript
50
- let neutrino = new Neutrino.Context();
51
- ```
25
+ This is the simulation engine. It contains the shared code that exported effects use: math, turbulence computations, particle algorithms. The exported `.js` file references types from this package.
52
26
 
53
- ## Loading effect model
54
- Files of effects exported by the Editor has to be evaluated to obtain JS objects that can be used in the application.
27
+ For rendering, use an integration package (PIXI.js, Phaser). Or build a custom renderer — the core library provides Canvas2D and WebGL render buffers for low-level access.
55
28
 
56
- You can load effect model using main context. It will use HTTP request to load effect by path. And in this case it will make all evaluating by itself and return you ready to use object:
57
- ```javascript
58
- neutrino.loadEffect('path/to/effect.js', function(effectModel) {
59
- // on success
60
- },
61
- function() {
62
- // on fail
63
- });
64
- ```
29
+ ## Core API
30
+
31
+ ### Context
65
32
 
66
- Or you can somehow load effect file by yourself (or unpack from zip, for example), and when you have a text of the file you can use this simple evaluating function:
67
33
  ```javascript
68
- function evalEffectModel(effectSource) {
69
- let wrappedScript =
70
- "(function(context) {\n" +
71
- effectSource +"\n" +
72
- "return new NeutrinoEffect(ctx);\n" +
73
- "})(neutrino);";
74
- return eval(wrappedScript);
75
- }
76
- ```
34
+ import * as Neutrino from '@neutrinoparticles/js-v1.0'
77
35
 
78
- ## Creating effect instances
79
- When the effect model is loaded, you can create instances of this effect. Each instance is actual entity of effect. It is a state of effect. It has position, rotation and it can be updated (simulated) by time.
36
+ const neutrino = new Neutrino.Context();
37
+ ```
80
38
 
81
- Depending on what kind of rendering you want to perform, you can create an instance for:
39
+ ### Loading an Effect Model
82
40
 
83
- Canvas rendering:
84
- ```javascript
85
- let effect = effectModel.createCanvas2DInstance(
86
- position, // Array [x, y, z] for starting position of the effect
87
- rotation, // Array [x, y, z, w] for quaternion representing starting rotation
88
- { // options
89
- paused: false, // Effect paused on start?
90
- generatorsPaused: false // Generators of the effect paused on start?
91
- });
92
- ```
93
- or WebGL rendering:
94
41
  ```javascript
95
- let effect = effectModel.createWGLInstance(
96
- position,
97
- rotation,
98
- renderBuffer, // Buffer to accept constructed geometry for particles
99
- options
42
+ // Via XHR (loads and evaluates the effect file)
43
+ neutrino.loadEffect('path/to/effect.js',
44
+ (effectModel) => { /* success */ },
45
+ () => { /* fail */ }
100
46
  );
101
47
  ```
102
48
 
103
- ## Updating effect
104
- You would probably want to update the effect on each frame of your application. And on each update you can set up new position and rotation of the effect:
49
+ ### Creating an Effect Instance
50
+
105
51
  ```javascript
106
- effect.update(
107
- timeInSeconds, // time to simulate
108
- position, // (optional) new position, if changed
109
- rotation // (optional) new rotation, if changed
52
+ // For Canvas2D rendering
53
+ const effect = effectModel.createCanvas2DInstance(
54
+ [x, y, z], // position
55
+ [x, y, z, w], // rotation quaternion
56
+ { paused: false, generatorsPaused: false }
110
57
  );
111
- ```
112
-
113
- ## Rendering effect
114
- Rendering of effect is out of scope of this library. This is because any graphical framework or engine requires custom deep integration and there is no any unified solution.
115
-
116
- However, you can find reference renderers in `/samples` folder of the repository. There are Canvas and WebGL renderers. They are designed for clean HTML5 environment and can be used as standalone renderers on a web site. Or you can refer to them for creating a custom renderer for your graphical framework.
117
-
118
- > For PIXI.js you can use [neutrinoparticles.pixi.js](https://gitlab.com/neutrinoparticles/neutrinoparticles.pixi.js) renderer.
119
-
120
- ## Position and Rotation
121
58
 
122
- Effects accept position and rotation on creating and update.
123
-
124
- Position vector is represented by 3D array [x, y, z].
125
-
126
- Rotation is a quaternion represented by 4D array [x, y, z, w].
127
-
128
- You can make a rotation quaternion by function:
129
- ```javascript
130
- neutrino.axisangle2quat_(
131
- [x, y, z], // rotation axis
132
- angle // rotation angle in degrees
59
+ // For WebGL rendering
60
+ const effect = effectModel.createWGLInstance(
61
+ [x, y, z], // position
62
+ [x, y, z, w], // rotation quaternion
63
+ renderBuffer, // WebGL render buffer
64
+ { paused: false, generatorsPaused: false }
133
65
  );
134
66
  ```
135
- it will make a quaternion by rotating arout an axis.
136
-
137
- > To react on rotation, effect has to be correcly prepared in the Editor. See "Apply emitter's rotation" switch in Emitter Guide in the Editor.
138
-
139
- ## Using turbulence (or noise)
140
67
 
141
- You need to initialize noise texture before simulating effects which use it. Otherwise, your effects will be without any noise (or turbulence).
68
+ ### Updating
142
69
 
143
- You have two options to make that: to generate or to download it.
144
-
145
- ### Generating noise
146
-
147
- Generating noise is iterative process and you can spread it for many application frames (to render some progress bar, for example).
148
-
149
- Below is an example function that generates the noise in one loop:
150
70
  ```javascript
151
- function generateNoise() {
152
- let noiseGenerator = new neutrino.NoiseGenerator();
153
- while (!noiseGenerator.step()) { // approx. 5,000 steps
154
- // you can use 'noiseGenerator.progress' to get generating progress from 0.0 to 1.0
155
- }
156
- }
71
+ effect.update(timeInSeconds, position, rotation);
157
72
  ```
158
- Of course, this function will block execution of the script until finished. So, it's up to you how to make it executed over many frames if necessary.
159
73
 
160
- On modern devices (and mobile as well) above function will be finished in up to 2 seconds.
74
+ ### Turbulence
161
75
 
162
- > Please, pay attention to `NoiseGenerator` object. It has to be out of scope after noise is generated to allow GC to free allocated memory.
76
+ Effects using noise/turbulence require initialization:
163
77
 
164
- ### Download noise
165
-
166
- In case you don't want to generate noise texture for a some reason, you can distribute it pre-computed in a binary file with your application. This file is `/bin/neutrinoparticles.noise.bin` in the repository.
167
-
168
- Then download and initialize with:
169
78
  ```javascript
170
- neutrino.initializeNoise(
171
- "/path/to/noise/directory/", // path to a directory where "neutrinoparticles.noise.bin" is located
172
- function() {}, // success callback
173
- function() {}, // fail callback
79
+ // Generate (blocks for ~2 seconds)
80
+ const noiseGenerator = new neutrino.NoiseGenerator();
81
+ while (!noiseGenerator.step()) { }
82
+
83
+ // Or download pre-computed
84
+ neutrino.initializeNoise('/path/to/noise/directory/',
85
+ () => { /* success */ },
86
+ () => { /* fail */ }
174
87
  );
175
88
  ```
176
- HTTP request will be used to download the file. It's size is 768Kb.
177
89
 
178
- ## Restart effect
179
-
180
- To completely restart the effect:
90
+ ### Restart Effect
181
91
 
182
92
  ```javascript
183
93
  effect.restart(
184
- [x, y, z], // (optional) new position, if changed
185
- [x, y, z, w] // (optional) new rotation, if changed
94
+ [x, y, z], // (optional) new position
95
+ [x, y, z, w] // (optional) new rotation quaternion
186
96
  );
187
97
  ```
188
98
 
189
- ## Instant effect position change (teleporting)
99
+ ### Instant Position Change (Teleporting)
190
100
 
191
- When you move your effect by changing it's position or rotation on each update, the effect is moved linearly. And even if it tightly generates particles, there will be a trail of particles from previous frame position to the new one.
101
+ When you move your effect by changing its position on each update, there will be a trail of particles from previous frame position to the new one. To instantly teleport without a trail:
192
102
 
193
- In case, you want to change position instantly (teleport it), you need to reset position:
194
103
  ```javascript
195
104
  effect.resetPosition(
196
- [x, y, z], // new effect's position (pass null if you don't want to reset position)
197
- [x, y, z, w] // new effect's rotation quaternion (pass null if you don't want to reset rotation)
105
+ [x, y, z], // new position (pass null to keep current)
106
+ [x, y, z, w] // new rotation quaternion (pass null to keep current)
198
107
  );
199
108
  ```
200
109
 
201
- ## Number of particles
110
+ ### Pause
202
111
 
203
- You can request total number of alive particles in topmost emitters (not attached to other emitters):
112
+ Two kinds of pause:
204
113
 
114
+ **Full pause** — all particles freeze, nothing is generated:
205
115
  ```javascript
206
- let numParticles = effect.getNumParticles();
116
+ effect.pauseAllEmitters();
117
+ let isPaused = effect.areAllEmittersPaused();
118
+ effect.unpauseAllEmitters();
207
119
  ```
208
120
 
209
- Or request number of particles in a single emitter by name (note underscore before name):
210
-
121
+ **Generators pause** existing particles continue to live, but no new particles are created:
211
122
  ```javascript
212
- let numEmitterParticles = effect._YourEmitterName.getNumParticles();
123
+ effect.pauseGeneratorsInAllEmitters();
124
+ let isGenPaused = effect.areGeneratorsInAllEmittersPaused();
125
+ effect.unpauseGeneratorsInAllEmitters();
213
126
  ```
214
127
 
215
- ## Using pause
216
- There are two different kinds of pause for effect:
128
+ ### Number of Particles
217
129
 
218
- 1. Pause for whole effect. When all particles freeze and nothing else is generated:
130
+ ```javascript
131
+ let numParticles = effect.getNumParticles();
132
+ ```
219
133
 
220
- ```javascript
221
- effect.pauseAllEmitters();
222
- ...
223
- let isPaused = effect.areAllEmittersPaused();
224
- ...
225
- effect.unpauseAllEmitters();
226
- ```
134
+ ### Emitter Properties
227
135
 
228
- 2. Generators pause. When already generated particles continue to live but new particles are not generated:
136
+ Control exposed emitter properties from code:
229
137
 
230
- ```javascript
231
- effect.pauseGeneratorsInAllEmitters();
232
- ...
233
- let isGeneratorsPaused = effect.areGeneratorsInAllEmittersPaused();
234
- ...
235
- effect.unpauseGeneratorsInAllEmitters();
236
- ```
138
+ ```javascript
139
+ // Access individual emitter (note underscores before names)
140
+ effect._EmitterName._MyFloatProperty = 10;
141
+ effect._EmitterName._MyVector2Property = [10, 20];
142
+ effect._EmitterName._MyVector3Property = [10, 20, 30];
237
143
 
238
- ## Changing emitter's properties
144
+ // Set property in all emitters at once
145
+ effect.setPropertyInAllEmitters("MyFloatProperty", 10);
146
+ effect.setPropertyInAllEmitters("MyVector2Property", [10, 20]);
147
+ ```
239
148
 
240
- You can control exposed emitter properties from your application. Any emitter property added on Emitter Scheme or Emitter Guide in the Editor is exposed in exported effect.
149
+ ### Rotation Quaternion
241
150
 
242
- To change properties in a single emitter, you can access them directly from effect instance (note underscores before names):
243
- ```javascript
244
- effect._EmitterName._YourFloatPropertyName = 10;
245
- effect._EmitterName._YourVector2PropertyName = [10, 20];
246
- effect._EmitterName._YourVector3PropertyName = [10, 20, 30];
247
- effect._EmitterName._YourRotationPropertyName = neutrino.axisangle2quat_([0, 1, 0], 45);
248
- ```
151
+ Position is a 3D array `[x, y, z]`. Rotation is a quaternion `[x, y, z, w]`.
249
152
 
250
- To change properties with a given names for all topmost emitters:
153
+ Create a rotation quaternion from axis and angle:
251
154
  ```javascript
252
- effect.setPropertyInAllEmitters("YourFloatPropertyName", 10);
253
- effect.setPropertyInAllEmitters("YourVector2PropertyName", [10, 20]);
254
- effect.setPropertyInAllEmitters("YourVector3PropertyName", [10, 20, 30]);
255
- effect.setPropertyInAllEmitters("YourRotationPropertyName", neutrino.axisangle2quat_([0, 1, 0], 45));
155
+ const rotation = neutrino.axisangle2quat_(
156
+ [0, 0, 1], // rotation axis
157
+ 45 // angle in degrees
158
+ );
256
159
  ```
257
160
 
258
- For example, to control particles generating rate from your application:
259
- 1. In the Editor, in `Emitter Guide` window, in `Generation` section change type of `Periodic rate` to `Emitter property`
260
-
261
- ![EmitterProps1](img/emitter_props_eg01.png)
161
+ > For the effect to react to rotation, enable "Apply emitter's rotation" in the Editor's Emitter Guide.
262
162
 
263
- 2. Set up property name to `MyParticlesPerSecond`
163
+ ## Common Issues
264
164
 
265
- ![EmitterProps2](img/emitter_props_eg02.png)
165
+ - **No particles visible:** Make sure the export target in the editor is JavaScript v1.0. If using a custom renderer, check that render buffers are set up correctly.
166
+ - **Turbulence not working:** Initialize noise before creating effects that use it (see Turbulence section above).
266
167
 
267
- 3. From `Emitters` window remember emitter name to access your property
168
+ ## Documentation
268
169
 
269
- ![EmitterProps3](img/emitter_props_eg03.png)
170
+ Full documentation at [neutrinoparticles.com](https://neutrinoparticles.com/en/docs/199).
270
171
 
271
- 4. Export effect, and after loading in your application you can change the property:
172
+ ## License
272
173
 
273
- ```javascript
274
- effect._DefaultEmitter._MyParticlesPerSecond = 100;
275
- ```
174
+ Copyright (c) Yurii Miroshnyk. All rights reserved.
@@ -365,7 +365,7 @@
365
365
 
366
366
  this.slerpq_ = function (x, y, a) {
367
367
  var r = [];
368
- slerpq(r, x, y, a);
368
+ ctx.slerpq(r, x, y, a);
369
369
  return r;
370
370
  };
371
371
 
@@ -599,6 +599,23 @@
599
599
  return [a[0] * s, a[1] * s, a[2] * s, a[3] * s];
600
600
  };
601
601
 
602
+ // Expression-layer quat helpers (return-value style; see ExpressionConverter).
603
+ this.mulq_ = function (a, b) {
604
+ var r = [];
605
+ ctx.sb(r, a, b);
606
+ return r;
607
+ };
608
+
609
+ this.inverseq_ = function (q) {
610
+ var d = q[0] * q[0] + q[1] * q[1] + q[2] * q[2] + q[3] * q[3];
611
+ return [-q[0] / d, -q[1] / d, -q[2] / d, q[3] / d];
612
+ };
613
+
614
+ // quat(w, x, y, z) -> [x, y, z, w] (mirrors CS _math.quat_ signature).
615
+ this.quat_ = function (w, x, y, z) {
616
+ return [x, y, z, w];
617
+ };
618
+
602
619
  this.tb = function (r, Hf, degree, scale, v) {
603
620
  var rad = ctx.ib(degree);
604
621
  var cos = Math.cos(rad) * scale;
@@ -1 +1 @@
1
- {"version":3,"file":"neutrinoparticles.js-v1.0.umd.js","sources":["../src/main.js"],"sourcesContent":["\"use strict\"\n\nexport function Context() {\n\tvar ctx = this;\n\n\tthis.equalv3_ = function(a, b) {\n\t\treturn a[0] == b[0] && a[1] == b[1] && a[2] == b[2];\n\t}\n\n\tthis.equalq_ = function(a, b) {\n\t\treturn a[0] == b[0] && a[1] == b[1] && a[2] == b[2] && a[3] == b[3];\n\t}\n\n\tthis.a = function (r, a, b) {\n\t\tr[0] = a[0] + b[0];\n\t\tr[1] = a[1] + b[1];\n\t}\n\n\tthis.b = function (a, b) {\n\t\treturn [a[0] + b[0], a[1] + b[1]];\n\t}\n\n\tthis.y = function (r, a, s) {\n\t r[0] = a[0] + s;\n\t r[1] = a[1] + s;\n\t}\n\n\tthis.z = function (a, s) {\n\t return [a[0] + s, a[1] + s];\n\t}\n\n\tthis.c = function (r, a, b) {\n\t\tr[0] = a[0] + b[0];\n\t\tr[1] = a[1] + b[1];\n\t\tr[2] = a[2] + b[2];\n\t}\n\n\tthis.d = function (a, b) {\n\t\treturn [a[0] + b[0], a[1] + b[1], a[2] + b[2]];\n\t}\n\n\tthis.C = function (r, a, s) {\n\t r[0] = a[0] + s;\n\t r[1] = a[1] + s;\n\t r[2] = a[2] + s;\n\t}\n\n\tthis.D = function (a, s) {\n\t return [a[0] + s, a[1] + s, a[2] + s];\n\t}\n\n\tthis.addq = function (r, a, b) {\n\t\tr[0] = a[0] + b[0];\n\t\tr[1] = a[1] + b[1];\n\t\tr[2] = a[2] + b[2];\n\t\tr[3] = a[3] + b[3];\n\t}\n\n\tthis.addq_ = function (a, b) {\n\t\treturn [a[0] + b[0], a[1] + b[1], a[2] + b[2], a[3] + b[3]];\n\t}\n\n\tthis.e = function (r, a, b) {\n\t\tr[0] = a[0] - b[0];\n\t\tr[1] = a[1] - b[1];\n\t}\n\n\tthis.f = function (a, b) {\n\t\treturn [a[0] - b[0], a[1] - b[1]];\n\t}\n\n\tthis.A = function (r, a, s) {\n\t r[0] = a[0] - s;\n\t r[1] = a[1] - s;\n\t}\n\n\tthis.B = function (a, s) {\n\t return [a[0] - s, a[1] - s];\n\t}\n\n\tthis.nf = function (r, s, a) {\n\t r[0] = s - a[0];\n\t r[1] = s - a[1];\n\t}\n\n\tthis.of = function (s, a) {\n\t return [s - a[0], s - a[1]];\n\t}\n\n\tthis.g = function (r, a, b) {\n\t\tr[0] = a[0] - b[0];\n\t\tr[1] = a[1] - b[1];\n\t\tr[2] = a[2] - b[2];\n\t}\n\n\tthis.h = function (a, b) {\n\t\treturn [a[0] - b[0], a[1] - b[1], a[2] - b[2]];\n\t}\n\n\tthis.E = function (r, a, s) {\n\t r[0] = a[0] - s;\n\t r[1] = a[1] - s;\n\t r[2] = a[2] - s;\n\t}\n\n\tthis.F = function (a, s) {\n\t return [a[0] - s, a[1] - s, a[2] - s];\n\t}\n\n\tthis.rf = function (r, s, a) {\n\t r[0] = s - a[0];\n\t r[1] = s - a[1];\n\t r[2] = s - a[2];\n\t}\n\n\tthis.sf = function (s, a) {\n\t return [s - a[0], s - a[1], s - a[2]];\n\t}\n\n\tthis.i = function (r, a, b) {\n\t\tr[0] = a[0] * b[0];\n\t\tr[1] = a[1] * b[1];\n\t}\n\n\tthis.j = function (a, b) {\n\t\treturn [a[0] * b[0], a[1] * b[1]];\n\t}\n\n\tthis.k = function (r, a, b) {\n\t\tr[0] = a[0] * b[0];\n\t\tr[1] = a[1] * b[1];\n\t\tr[2] = a[2] * b[2];\n\t}\n\n\tthis.l = function (a, b) {\n\t\treturn [a[0] * b[0], a[1] * b[1], a[2] * b[2]];\n\t}\n\n\tthis.m = function (r, a, b) {\n\t\tr[0] = a[0] / b[0];\n\t\tr[1] = a[1] / b[1];\n\t}\n\n\tthis.n = function (a, b) {\n\t\treturn [a[0] / b[0], a[1] / b[1]];\n\t}\n\n\tthis.o = function (r, a, b) {\n\t\tr[0] = a[0] / b[0];\n\t\tr[1] = a[1] / b[1];\n\t\tr[2] = a[2] / b[2];\n\t}\n\n\tthis.p = function (a, b) {\n\t\treturn [a[0] / b[0], a[1] / b[1], a[2] / b[2]];\n\t}\n\n\tthis.H = function(a, b) {\n\t\treturn a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n\t}\n\n\tthis.dotq_ = function(a, b) {\n\t\treturn a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n\t}\n\n\tthis.q = function (r, a, s) {\n\t\tr[0] = a[0] * s;\n\t\tr[1] = a[1] * s;\n\t}\n\n\tthis.r = function (a, s) {\n\t\treturn [a[0] * s, a[1] * s];\n\t}\n\n\tthis.s = function (r, a, s) {\n\t\tr[0] = a[0] / s;\n\t\tr[1] = a[1] / s;\n\t}\n\n\tthis.t = function (a, s) {\n\t\treturn [a[0] / s, a[1] / s];\n\t}\n\n\tthis.u = function (r, a, s) {\n\t\tr[0] = a[0] * s;\n\t\tr[1] = a[1] * s;\n\t\tr[2] = a[2] * s;\n\t}\n\n\tthis.v = function (a, s) {\n\t\treturn [a[0] * s, a[1] * s, a[2] * s];\n\t}\n\n\tthis.w = function (r, a, s) {\n\t\tr[0] = a[0] / s;\n\t\tr[1] = a[1] / s;\n\t\tr[2] = a[2] / s;\n\t}\n\n\tthis.x = function (a, s) {\n\t\treturn [a[0] / s, a[1] / s, a[2] / s];\n\t}\n\n\tthis.y = function (r, a, s) {\n\t\tr[0] = a[0] + s;\n\t\tr[1] = a[1] + s;\n\t}\n\n\tthis.z = function (a, s) {\n\t\treturn [a[0] + s, a[1] + s];\n\t}\n\n\tthis.A = function (r, a, s) {\n\t\tr[0] = a[0] - s;\n\t\tr[1] = a[1] - s;\n\t}\n\n\tthis.B = function (a, s) {\n\t\treturn [a[0] - s, a[1] - s];\n\t}\n\n\tthis.G = function (a, b) {\n\t\treturn a[0] * b[0] + a[1] * b[1];\n\t}\n\n\tthis.H = function (a, b) {\n\t\treturn a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n\t}\n\n\tthis.I = function (r, a, b) {\n\t\tvar ax = a[0], ay = a[1], az = a[2];\n\t\tvar bx = b[0], by = b[1], bz = b[2];\n\n\t\tr[0] = ay * bz - az * by;\n\t\tr[1] = az * bx - ax * bz;\n\t\tr[2] = ax * by - ay * bx;\n\t}\n\n\tthis.J = function (a, b) {\n\t\tvar ax = a[0], ay = a[1], az = a[2];\n\t\tvar bx = b[0], by = b[1], bz = b[2];\n\n\t\treturn [ay * bz - az * by,\n\t\t\taz * bx - ax * bz,\n\t\t\tax * by - ay * bx];\n\t}\n\n\tthis.K = function (a) {\n\t\treturn Math.sqrt(a[0] * a[0] + a[1] * a[1]);\n\t}\n\n\tthis.L = function (a) {\n\t\treturn a[0] * a[0] + a[1] * a[1];\n\t}\n\n\tthis.M = function (r, a) {\n\t\tctx.q(r, a, 1.0 / ctx.K(a));\n\t}\n\n\tthis.N = function (a) {\n\t\treturn ctx.r(a, 1.0 / ctx.K(a));\n\t}\n\n\tthis.O = function (a) {\n\t\treturn Math.sqrt(a[0] * a[0] + a[1] * a[1] + a[2] * a[2]);\n\t}\n\n\tthis.P = function (a) {\n\t\treturn a[0] * a[0] + a[1] * a[1] + a[2] * a[2];\n\t}\n\n\tthis.Q = function (r, a) {\n\t\tctx.u(r, a, 1.0 / ctx.O(a));\n\t}\n\n\tthis.R = function (a) {\n\t\treturn ctx.v(a, 1.0 / ctx.O(a));\n\t}\n\n\tthis.S = function (r, a) {\n\t\tr[0] = a[0];\n\t\tr[1] = a[1];\n\t}\n\n\tthis.T = function (r, a) {\n\t\tr[0] = a[0];\n\t\tr[1] = a[1];\n\t\tr[2] = a[2];\n\t}\n\n\tthis.U = function (r, a) {\n\t\tr[0] = a[0];\n\t\tr[1] = a[1];\n\t\tr[2] = a[2];\n\t\tr[3] = a[3];\n\t}\n\n\tthis.V = function (r, x, y) {\n\t\tr[0] = x;\n\t\tr[1] = y;\n\t}\n\n\tthis.W = function (r, x, y, z) {\n\t\tr[0] = x;\n\t\tr[1] = y;\n\t\tr[2] = z;\n\t}\n\n\tthis.X = function (a, b, i) {\n\t\treturn a + (b - a) * i;\n\t}\n\n\tthis.Y = function (r, a, b, i) {\n\t\tr[0] = a[0] + (b[0] - a[0]) * i;\n\t\tr[1] = a[1] + (b[1] - a[1]) * i;\n\t}\n\n\tthis.Z = function (a, b, i) {\n\t\treturn [a[0] + (b[0] - a[0]) * i,\n\t\t\ta[1] + (b[1] - a[1]) * i];\n\t}\n\n\tthis.ab = function (r, a, b, i) {\n\t\tr[0] = a[0] + (b[0] - a[0]) * i;\n\t\tr[1] = a[1] + (b[1] - a[1]) * i;\n\t\tr[2] = a[2] + (b[2] - a[2]) * i;\n\t}\n\n\tthis.bb = function (a, b, i) {\n\t\treturn [a[0] + (b[0] - a[0]) * i,\n\t\t\ta[1] + (b[1] - a[1]) * i,\n\t\t\ta[2] + (b[2] - a[2]) * i];\n\t}\n\n\tthis.slerpq = function(r, x, y, a) {\n\t\tvar cosTheta = ctx.dotq_(x, y);\n\n\t\tvar z = [];\n\n\t\tif (cosTheta < 0) {\n\t\t\tctx.negq(z, y);\n\t\t\tcosTheta = -cosTheta;\n\t\t}\n\t\telse {\n\t\t\tctx.U(z, y);\n\t\t}\n\n\t\tif ((1.0 - cosTheta) < Number.EPSILON) {\n\t\t\tr[0] = ctx.X(x[0], y[0], a);\n\t\t\tr[1] = ctx.X(x[1], y[1], a);\n\t\t\tr[2] = ctx.X(x[2], y[2], a);\n\t\t\tr[3] = ctx.X(x[3], y[3], a);\n\t\t}\n\t\telse {\n\t\t\tvar Md = ctx.acos_(cosTheta);\n\n\t\t\tctx.mulqscalar(r, ctx.addq_(ctx.mulqscalar_(x, ctx.sin_((1.0 - a) * Md)), ctx.mulqscalar_(z, ctx.sin_(a * Md))),\n\t\t\t\t1.0 / ctx.sin_(Md));\n\t\t}\n\t}\n\n\tthis.slerpq_ = function(x, y, a) {\n\t\tvar r = [];\n\t\tslerpq(r, x, y, a);\n\t\treturn r;\n\t}\n\n\t//trigonometry\n\n\tthis.acos_ = function(a) {\n\t\treturn Math.acos(a);\n\t}\n\n\tthis.sin_ = function(a) {\n\t\treturn Math.sin(a);\n\t}\n\n\tthis.cos_ = function(a) {\n\t\treturn Math.cos(a);\n\t}\n\n\t// random\n\n\tthis.taus88 = function(seed)\n\t{\n\t\tif (!seed)\n\t\t\tseed = 0;\n\n\t\tvar value0, value1, value2;\n\n\t\tthis.seed = function(s0) {\n\t\t\ts0 &= 0xFFFFFFFF;\n\n\t\t\tvalue0 = s0 < 2 ? s0 + 2 : s0;\n\t\t\tvalue1 = s0 < 8 ? s0 + 8 : s0;\n\t\t\tvalue2 = s0 < 16 ? s0 + 16 : s0;\n\t\t}\n\n\t\tthis.rand = function() {\n\t\t\tvar b = (((value0 << 13) ^ value0) & 0xFFFFFFFF) >>> 19;\n\t\t\tvalue0 = (((value0 & 0xFFFFFFFE) << 12) ^ b) >>> 0;\n\n\t\t\tb = (((value1 << 2) ^ value1) & 0xFFFFFFFF) >>> 25;\n\t\t\tvalue1 = (((value1 & 0xFFFFFFF8) << 4) ^ b) >>> 0;\n\n\t\t\tb = (((value2 << 3) ^ value2) & 0xFFFFFFFF) >>> 11;\n\t\t\tvalue2 = (((value2 & 0xFFFFFFF0) << 17) ^ b) >>> 0;\n\n\t\t\tvar engine = ((value0 ^ value1) ^ value2) >>> 0;\n\t\t\treturn engine / 4294967296.0;\n\t\t}\n\n\t\tthis.seed(seed);\n\t}\n\n\tthis.cb = function (r, radius) {\n\t\tthis.randv2gen(r, radius, function () { return Math.random(); });\n\t}\n\n\tthis.randv2gen = function (r, radius, gen) {\n\t\tvar Md = gen() * Math.PI * 2.0;\n\t\tr[0] = radius * ctx.cos_(Md);\n\t\tr[1] = radius * ctx.sin_(Md);\n\t}\n\n\tthis.db = function (r, radius) {\n\t\tthis.randv3gen(r, radius, function () { return Math.random(); });\n\t}\n\n\tthis.randv3gen = function (r, radius, gen) {\n\t\tvar theta = gen() * Math.PI * 2.0;\n\t\tvar z = -1.0 + gen() * 2.0;\n\t\tvar sqrtInvZ2 = radius * Math.sqrt(1.0 - z * z);\n\t\tr[0] = sqrtInvZ2 * ctx.cos_(theta);\n\t\tr[1] = sqrtInvZ2 * ctx.sin_(theta);\n\t\tr[2] = radius * z;\n\t}\n\n\tthis.yb = function(r, x, y, Nd, gen) {\n\t\tvar dispx = x + gen() * Nd[0];\n\t\tvar dispy = y + gen() * Nd[1];\n\t\tctx.V(r, dispx, dispy);\n\t}\n\n\tthis.eb = function (r, a) {\n\t\tctx.V(-a[0], -a[1]);\n\t}\n\n\tthis.fb = function (a) {\n\t\treturn [-a[0], -a[1]];\n\t}\n\n\tthis.gb = function (r, a) {\n\t\tctx.W(-a[0], -a[1], -a[2]);\n\t}\n\n\tthis.hb = function (a) {\n\t\treturn [-a[0], -a[1], -a[2]];\n\t}\n\n\tthis.negq = function (r, a) {\n\t\tr[0] = -a[0];\n\t\tr[1] = -a[1];\n\t\tr[2] = -a[2];\n\t\tr[3] = -a[3];\n\t}\n\n\tthis.negq_ = function(a) {\n\t\treturn [-a[0], -a[1], -a[2], -a[3]];\n\t}\n\n\tthis.ib = function (degrees) {\n\t\treturn degrees / 180.0 * Math.PI;\n\t}\n\n\tthis.jb = function (radians) {\n\t\treturn radians / Math.PI * 180.0;\n\t}\n\n\tthis.Ae = function(value) {\n\t\treturn value < 0 ? -1 : 1;\n\t}\n\n\tthis.ob = function (x, y, z, q) {\n\t\tvar x2 = 2.0 * q[0] * q[0];\n\t\tvar y2 = 2.0 * q[1] * q[1];\n\t\tvar z2 = 2.0 * q[2] * q[2];\n\t\tvar xy = 2.0 * q[0] * q[1];\n\t\tvar xz = 2.0 * q[0] * q[2];\n\t\tvar yz = 2.0 * q[1] * q[2];\n\t\tvar wz = 2.0 * q[3] * q[2];\n\t\tvar wy = 2.0 * q[3] * q[1];\n\t\tvar wx = 2.0 * q[3] * q[0];\n\n\t\tx[0] = 1.0 - y2 - z2;\n\t\tx[1] = xy + wz;\n\t\tx[2] = xz - wy;\n\n\t\ty[0] = xy - wz;\n\t\ty[1] = 1.0 - x2 - z2;\n\t\ty[2] = yz + wx;\n\n\t\tz[0] = xz + wy;\n\t\tz[1] = yz - wx;\n\t\tz[2] = 1.0 - x2 - y2;\n\t}\n\n\tthis.pb = function (q, x, y, z) {\n\t\tvar tr = x[0] + y[1] + z[2]\n\n\t\tif (tr > 0) {\n\t\t\tvar S = Math.sqrt(tr+1.0) * 2;\n\t\t\tq[3] = 0.25 * S;\n\t\t\tq[0] = (y[2] - z[1]) / S;\n\t\t\tq[1] = (z[0] - x[2]) / S;\n\t\t\tq[2] = (x[1] - y[0]) / S;\n\t\t} else if ((x[0] > y[1])&(x[0] > z[2])) {\n\t\t\tvar S = Math.sqrt(1.0 + x[0] - y[1] - z[2]) * 2;\n\t\t\tq[3] = (y[2] - z[1]) / S;\n\t\t\tq[0] = 0.25 * S;\n\t\t\tq[1] = (x[1] + y[0]) / S;\n\t\t\tq[2] = (z[0] + x[2]) / S;\n\t\t} else if (y[1] > z[2]) {\n\t\t\tvar S = Math.sqrt(1.0 + y[1] - x[0] - z[2]) * 2;\n\t\t\tq[3] = (z[0] - x[2]) / S;\n\t\t\tq[0] = (x[1] + y[0]) / S;\n\t\t\tq[1] = 0.25 * S;\n\t\t\tq[2] = (y[2] + z[1]) / S;\n\t\t} else {\n\t\t\tvar S = Math.sqrt(1.0 + z[2] - x[0] - y[1]) * 2;\n\t\t\tq[3] = (x[1] - y[0]) / S;\n\t\t\tq[0] = (z[0] + x[2]) / S;\n\t\t\tq[1] = (y[2] + z[1]) / S;\n\t\t\tq[2] = 0.25 * S;\n\t\t}\n\t}\n\n\tthis./**/axes2quat = this.pb;\n\n\tthis.qb = function (q, x, a) {\n\t\tvar ha = ctx.ib(a) * 0.5, s = Math.sin(ha);\n\t\tq[0] = x[0] * s;\n\t\tq[1] = x[1] * s;\n\t\tq[2] = x[2] * s;\n\t\tq[3] = Math.cos(ha);\n\t}\n\n\tthis./**/axisangle2quat = this.qb;\n\n\tthis.axisangle2quat_ = function (x, a) {\n\t\tvar ha = ctx.ib(a) * 0.5, s = Math.sin(ha);\n\t\treturn [x[0] * s, x[1] * s, x[2] * s, ctx.cos_(ha)];\n\t}\n\n\tthis./**/axisangle2quat_ = this.axisangle2quat_;\n\n\tthis.rb = function (r, v, q) {\n\t\tvar x = v[0];\n\t\tvar y = v[1];\n\t\tvar z = v[2];\n\n\t\tvar qx = q[0];\n\t\tvar qy = q[1];\n\t\tvar qz = q[2];\n\t\tvar qw = q[3];\n\n\t\tvar ix = qw * x + qy * z - qz * y;\n\t\tvar iy = qw * y + qz * x - qx * z;\n\t\tvar iz = qw * z + qx * y - qy * x;\n\t\tvar iw = -qx * x - qy * y - qz * z;\n\n\t\tr[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n\t\tr[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n\t\tr[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n\t}\n\n\tthis.sb = function (r, a, b) {\n\t\tvar qax = a[0], qay = a[1], qaz = a[2], qaw = a[3];\n\t\tvar qbx = b[0], qby = b[1], qbz = b[2], qbw = b[3];\n\n\t\tr[0] = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n\t\tr[1] = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n\t\tr[2] = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n\t\tr[3] = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n\t}\n\n\tthis.mulqscalar = function (r, a, s) {\n\t\tr[0] = a[0] * s;\n\t\tr[1] = a[1] * s;\n\t\tr[2] = a[2] * s;\n\t\tr[3] = a[3] * s;\n\t}\n\n\tthis.mulqscalar_ = function (a, s) {\n\t\treturn [a[0] * s, a[1] * s, a[2] * s, a[3] * s];\n\t}\n\n\tthis.tb = function (r, Hf, degree, scale, v) {\n\t\tvar rad = ctx.ib(degree);\n\t\tvar cos = Math.cos(rad) * scale;\n\t\tvar sin = Math.sin(rad) * scale;\n\t\tr[0] = Hf[0] + cos * v[0] - sin * v[1];\n\t\tr[1] = Hf[1] + sin * v[0] + cos * v[1];\n\t}\n\n\tthis.ub = function (r, Hf, degree, scale, v) {\n\t\tvar rad = ctx.ib(degree);\n\t\tvar cos = Math.cos(rad) / scale;\n\t\tvar sin = Math.sin(rad) / scale;\n\n\t\tr[0] = cos * v[0] + sin * v[1] - Hf[0] * cos - Hf[1] * sin;\n\t\tr[1] = cos * v[1] - sin * v[0] + Hf[0] * sin - Hf[1] * cos;\n\t}\n\n\tthis.vb = function (val) {\n\t\tif (val < 0)\n\t\t\treturn Math.floor(ctx.yd - 1 + val % ctx.yd);\n\t\telse\n\t\t\treturn Math.floor(val % ctx.yd);\n\t}\n\n\tfunction colorCompToHex_(c) {\n\t\treturn c < 16 ? \"0\" + c.toString(16) : c.toString(16);\n\t}\n\n\tthis.ff = function(rgb) {\n\t\treturn \"#\"\n\t\t\t+ colorCompToHex_(Math.floor(rgb[0] * 255))\n\t\t\t+ colorCompToHex_(Math.floor(rgb[1] * 255))\n\t\t\t+ colorCompToHex_(Math.floor(rgb[2] * 255));\n\t}\n\n\tthis.tf = function(vf, xf, yf, a, b, zf) {\n\t\tlet ca = ctx.f(a, vf);\n\t\tlet cb = ctx.f(b, vf);\n\n\t\tlet wf = ctx.r(xf, yf);\n\n\t\tif ((ca[0] < -wf[0] && cb[0] < -wf[0])\n\t\t\t|| (ca[0] > wf[0] && cb[0] > wf[0])\n\t\t\t|| (ca[1] < -wf[1] && cb[1] < -wf[1])\n\t\t\t|| (ca[1] > wf[1] && cb[1] > wf[1]))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tif (ca[0] <= wf[0] && ca[0] >= -wf[0] && ca[1] <= wf[1] && ca[1] >= -wf[1])\n\t\t\treturn true;\n\n\t\tif (zf < 0.000001)\n\t\t\treturn false;\n\n\t\tif (cb[0] <= wf[0] && cb[0] >= -wf[0] && cb[1] <= wf[1] && cb[1] >= -wf[1])\n\t\t\treturn true;\n\n\t\tlet Af = ctx.f(b, a); ctx.s(Af, Af, zf);\n\t\tlet Bf = [-Af[1], Af[0]];\n\t\tlet Cf = Math.abs(ctx.G(Bf, cb));\n\n\t\tif (Math.abs(ctx.G(Bf, wf)) >= Cf) {\n\t\t\tlet Df = [-xf[1], xf[0]];\n\t\t\tif (ctx.G(Df, ca) * ctx.G(Df, cb) <= 0.0) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t} else if (Math.abs(ctx.G(Bf, [wf[0], -wf[1]])) >= Cf) {\n\t\t\tlet Df = [xf[1], xf[0]];\n\t\t\tif (ctx.G(Df, ca) * ctx.G(Df, cb) <= 0.0) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tthis.uf = function(vf, xf, yf, a, b, zf, Ef) {\n\t\tlet ca = ctx.f(a, vf);\n\t\tlet cb = ctx.f(b, vf);\n\n\t\tlet wf = ctx.r(xf, yf);\n\n\t\tif (zf < 0.000001)\n\t\t\treturn false;\n\n\t\tif ((ca[0] < -wf[0] && cb[0] < -wf[0])\n\t\t\t|| (ca[0] > wf[0] && cb[0] > wf[0])\n\t\t\t|| (ca[1] < -wf[1] && cb[1] < -wf[1])\n\t\t\t|| (ca[1] > wf[1] && cb[1] > wf[1]))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tlet Af = ctx.f(b, a); ctx.s(Af, Af, zf);\n\t\tlet Bf = [-Af[1], Af[0]];\n\t\tlet Cf = Math.abs(ctx.G(Bf, cb));\n\n\t\tif (Ef) {\n\t\t\tif (Math.abs(ctx.G(Bf, wf)) >= Cf) {\n\t\t\t\tlet Df = [-xf[1], xf[0]];\n\t\t\t\tif (ctx.G(Df, ca) * ctx.G(Df, cb) <= 0.0) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (Math.abs(ctx.G(Bf, [wf[0], -wf[1]])) >= Cf) {\n\t\t\t\tlet Df = [xf[1], xf[0]];\n\t\t\t\tif (ctx.G(Df, ca) * ctx.G(Df, cb) <= 0.0) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tthis.wb = function (r, x, y, z) {\n\t\tvar rgbDisp = 3 * (y * ctx.yd + x);\n\t\tvar view = ctx.zd[z];\n\n\t\tr[0] = view.getUint8(rgbDisp);\n\t\tr[1] = view.getUint8(rgbDisp + 1);\n\t\tr[2] = view.getUint8(rgbDisp + 2);\n\t}\n\n\tthis.xb = function (r, Hf) {\n\t\tif (ctx.zd == null) {\n\t\t\tctx.W(r, 128, 128, 128);\n\t\t\treturn;\n\t\t}\n\n\t\tvar scaledPosX = Hf[0] * ctx.yd;\n\t\tvar scaledPosY = Hf[1] * ctx.yd;\n\t\tvar scaledPosZ = Hf[2] * ctx.yd;\n\n\t\tvar floorX = Math.floor(scaledPosX);\n\t\tvar floorY = Math.floor(scaledPosY);\n\t\tvar floorZ = Math.floor(scaledPosZ);\n\n\t\tvar fracX = scaledPosX - floorX;\n\t\tvar fracY = scaledPosY - floorY;\n\t\tvar fracZ = scaledPosZ - floorZ;\n\n\t\tvar noiseX = ctx.vb(floorX);\n\t\tvar noiseX1 = ctx.vb(floorX + 1);\n\t\tvar noiseY = ctx.vb(floorY);\n\t\tvar noiseY1 = ctx.vb(floorY + 1);\n\t\tvar noiseZ = ctx.vb(floorZ);\n\t\tvar noiseZ1 = ctx.vb(floorZ + 1);\n\n\t\tvar value000 = [], value001 = [], value010 = [], value011 = [],\n\t\t\tvalue100 = [], value101 = [], value110 = [], value111 = [];\n\n\t\tctx.wb(value000, noiseX, noiseY, noiseZ);\n\t\tctx.wb(value001, noiseX, noiseY, noiseZ1);\n\t\tctx.wb(value010, noiseX, noiseY1, noiseZ);\n\t\tctx.wb(value011, noiseX, noiseY1, noiseZ1);\n\t\tctx.wb(value100, noiseX1, noiseY, noiseZ);\n\t\tctx.wb(value101, noiseX1, noiseY, noiseZ1);\n\t\tctx.wb(value110, noiseX1, noiseY1, noiseZ);\n\t\tctx.wb(value111, noiseX1, noiseY1, noiseZ1);\n\n\t\tvar value00 = [], value01 = [], value10 = [], value11 = [];\n\t\tctx.ab(value00, value000, value001, fracZ);\n\t\tctx.ab(value01, value010, value011, fracZ);\n\t\tctx.ab(value10, value100, value101, fracZ);\n\t\tctx.ab(value11, value110, value111, fracZ);\n\n\t\tvar value0 = [], value1 = [];\n\t\tctx.ab(value0, value00, value01, fracY);\n\t\tctx.ab(value1, value10, value11, fracY);\n\n\t\tctx.ab(r, value0, value1, fracX);\n\t}\n\n\tthis.ImageDesc = function(image, x, y, width, height) {\n\t\tthis.image = image;\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t}\n\n\tthis.RenderCall = function (startIndex, numIndices, renderStyleIndex) {\n\t this.startIndex = startIndex;\n\t this.numIndices = numIndices;\n\t this.renderStyleIndex = renderStyleIndex;\n\t}\n\n\tthis.SubRect = function (x, y, width, height) {\n\t this.x = x;\n\t this.y = y;\n\t this.width = width;\n\t this.height = height;\n\t}\n\n\tthis.Camera2D = function () {\n\t}\n\n\tthis.Camera2D.prototype.tb = function (Hf, Nd) {\n\t return true;\n\t}\n\n\tthis.Camera3D = function (/**/screenSize, /**/horizAngle) {\n\t this.Qd = ctx.r(/**/screenSize, 0.5);\n\t this.z = -(/**/screenSize[0] * 0.5) / Math.tan(ctx.ib(/**/horizAngle * 0.5));\n\t}\n\n\tthis.Camera3D.prototype./**/transform = function (/**/pos, /**/size) {\n\t if (/**/pos[2] < this.z)\n\t return false;\n\n\t var scale = -this.z / (/**/pos[2] - this.z);\n\t ctx.a(/**/pos, ctx.r(ctx.f(/**/pos, this.Qd), scale), this.Qd);\n\t ctx.q(/**/size, /**/size, scale);\n\n\t return true;\n\t}\n\n\tthis.zd = null;\n\tthis.yd = 0;\n\n\tthis.initializeNoise = function(path, onloadcallback, onfailcallback) {\n\n\t\t// Backward compatibility: if noise already initialized just callback success.\n\t\tif (this.zd != null) {\n\t\t\tif (onloadcallback) onloadcallback();\n\t\t\treturn;\n\t\t}\n\n\t\tif (path == null || path === undefined) path = this.defaultPath || \"\";\n\t\tif (!path) {\n\t\t\tif (onfailcallback) onfailcallback(new Error(\"Noise path not specified\"));\n\t\t\treturn;\n\t\t}\n\n\t\tvar url = path + \"neutrinoparticles.noise.bin\";\n\t\tvar request = new XMLHttpRequest();\n\t\trequest.open(\"GET\", url, true);\n\t\trequest.responseType = \"arraybuffer\";\n\t\trequest.ctx = this;\n\n\t\tconst fail = (err) => { if (onfailcallback) try { onfailcallback(err instanceof Error ? err : new Error(String(err))); } catch(_){} };\n\t\tconst succeed = () => { if (onloadcallback) try { onloadcallback(); } catch(_){} };\n\n\t\trequest.onerror = function(){ fail(new Error(\"Network error while loading noise file\")); };\n\t\trequest.onabort = function(){ fail(new Error(\"Request aborted while loading noise file\")); };\n\n\t\trequest.onload = function () {\n\t\t\ttry {\n\t\t\t\tif (!((request.status >= 200 && request.status < 300) || request.status === 304)) {\n\t\t\t\t\tfail(new Error(\"HTTP status \" + request.status));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar buffer = request.response;\n\t\t\t\tif (!(buffer instanceof ArrayBuffer) || buffer.byteLength < 4) {\n\t\t\t\t\tfail(new Error(\"Noise file header too small\"));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar headerView = new DataView(buffer, 0, 4);\n\t\t\t\tvar planeSize = headerView.getUint32(0, true); // Original format meaning retained\n\t\t\t\tif (!Number.isFinite(planeSize) || planeSize <= 0) {\n\t\t\t\t\tfail(new Error(\"Invalid planeSize value\"));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Historical format assumption: planeSize doubles as: sideSizePx & planeCount\n\t\t\t\t// Each plane: sideSizePx * sideSizePx pixels, RGB (3 bytes per pixel)\n\t\t\t\tvar sideSizePx = planeSize;\n\t\t\t\tvar planeCount = planeSize;\n\t\t\t\tvar bytesPerPlane = 3 * sideSizePx * sideSizePx;\n\t\t\t\tvar expectedBytes = 4 + planeCount * bytesPerPlane;\n\t\t\t\tif (buffer.byteLength < expectedBytes) {\n\t\t\t\t\tfail(new Error(\"Truncated noise file: have \" + buffer.byteLength + \" bytes, expected >= \" + expectedBytes));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar ctx = request.ctx;\n\t\t\t\tctx.zd = new Array(planeCount);\n\t\t\t\tctx.yd = sideSizePx; // side length in pixels\n\n\t\t\t\tfor (var i = 0; i < planeCount; ++i) {\n\t\t\t\t\tvar offset = 4 + i * bytesPerPlane;\n\t\t\t\t\tctx.zd[i] = new DataView(buffer, offset, bytesPerPlane); // Explicit length for safety\n\t\t\t\t}\n\n\t\t\t\tsucceed();\n\t\t\t} catch (e) {\n\t\t\t\tfail(e);\n\t\t\t}\n\t\t};\n\n\t\ttry { request.send(); } catch (e) { fail(e); }\n\t}\n\n\tthis.NoiseGenerator = function () {\n\n\t\tvar catmullRom_ = function (p0, p1, p2, p3, t) {\n\t\t\treturn 0.5 * ((2.0 * p1) + (-p0 + p2) * t + (2.0 * p0 - 5.0 * p1 + 4.0 * p2 - p3) * t * t +\n\t\t\t(-p0 + 3.0 * p1 - 3.0 * p2 + p3) * (t * t * t));\n\t\t}\n\n\t\tvar catmullRomv3_ = function (p0, p1, p2, p3, t) {\n\t\t\treturn [\n\t\t\t\tcatmullRom_(p0[0], p1[0], p2[0], p3[0], t),\n\t\t\t\tcatmullRom_(p0[1], p1[1], p2[1], p3[1], t),\n\t\t\t\tcatmullRom_(p0[2], p1[2], p2[2], p3[2], t)\n\t\t\t\t];\n\t\t}\n\n\t\tvar clamp_ = function (a, from, to) {\n\t\t\treturn (a < from) ? from : ((a > to) ? to : a);\n\t\t}\n\n\t\tvar imageSize = 64;\n\t\tvar image = [];\n\t\tvar tempBuffer = [];\n\t\tvar tausGenerator = new ctx.taus88(120); // 120 - hardcoded starting seed\n\t\tvar rand = function () { return tausGenerator.rand(); };\n\t\tvar amp = 0.7; // hardcoded amplitude of perlin zd\n\t\tvar fadeDegree = 1.2; // hardcoded fade degree of each octave\n\t\tvar prevStep = imageSize;\n\n\t\tvar step, Nd, octSize, octSize2, octMaskSize, octPixels, octZ, octY; // mix step variables\n\n\t\tvar numMixStepIterations = 0;\n\t\tvar mixStepIteration = 0;\n\n\t\tfor (var i = prevStep >>> 1; i > 0; i >>>= 1) {\n\t\t\tvar _octSize = Math.floor(imageSize / i);\n\t\t\tnumMixStepIterations += _octSize * _octSize;\n\t\t}\n\n\t\tvar States = {\n\t\t\tINITIAL_FILL: 0,\n\t\t\tMIX_STEP_INIT: 1,\n\t\t\tMIX_STEP_PROCESS: 2,\n\t\t\tSCALING: 3,\n\t\t\tDATA_VIEWS: 4,\n\t\t\tFINISHED: 5\n\t\t};\n\n\t\tvar Progress = {\n\t\t\tINIT: 0.01,\n\t\t\tMIX: 0.9,\n\t\t\tSCALING: 0.95,\n\t\t\tDATA_VIEWS: 1.0\n\t\t}\n\n\t\tvar state = States.INITIAL_FILL;\n\n\t\tthis.progress = 0.0;\n\n\t\tvar initialFill = function () {\n\t\t\tfor (var z = 0; z < imageSize; ++z) {\n\t\t\t\tvar imageZ = image[z] = [];\n\n\t\t\t\tfor (var y = 0; y < imageSize; ++y) {\n\t\t\t\t\tvar imageZY = imageZ[y] = [];\n\n\t\t\t\t\tfor (var x = 0; x < imageSize; ++x) {\n\t\t\t\t\t\tvar imageZYX = imageZY[x] = [0.0, 0.0, 0.0];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tstate = States.MIX_STEP_INIT;\n\t\t\tthis.progress = Progress.INIT;\n\t\t}\n\n\t\tvar mixStepInit = function () {\n\n\t\t\tstep = prevStep >>> 1;\n\t\t\tNd = imageSize;\n\t\t\toctSize = Math.floor(Nd / step);\n\t\t\toctSize2 = octSize * octSize;\n\t\t\toctMaskSize = Math.max(octSize - 1, 1);\n\t\t\toctPixels = octSize * octSize * octSize;\n\t\t\toctZ = 0;\n\t\t\toctY = 0;\n\n\t\t\tfor (var i = 0; i < octPixels; ++i) {\n\t\t\t\ttempBuffer[i] = [];\n\t\t\t\t// order is inverted to satisfy c++ obsolete order\n\t\t\t\ttempBuffer[i][2] = rand() * 2.0 - 1.0;\n\t\t\t\ttempBuffer[i][1] = rand() * 2.0 - 1.0;\n\t\t\t\ttempBuffer[i][0] = rand() * 2.0 - 1.0;\n\t\t\t}\n\n\t\t\tstate = States.MIX_STEP_PROCESS;\n\t\t}\n\n\t\tvar mixStepProcess = function() {\n\t\t\tfor (var octX = 0; octX < octSize; ++octX) {\n\t\t\t\tvar octZ0 = ((octZ - 1) >>> 0) & octMaskSize;\n\t\t\t\tvar octZ1 = ((octZ) >>> 0) & octMaskSize;\n\t\t\t\tvar octZ2 = ((octZ + 1) >>> 0) & octMaskSize;\n\t\t\t\tvar octZ3 = ((octZ + 2) >>> 0) & octMaskSize;\n\n\t\t\t\tvar octY0 = ((octY - 1) >>> 0) & octMaskSize;\n\t\t\t\tvar octY1 = ((octY) >>> 0) & octMaskSize;\n\t\t\t\tvar octY2 = ((octY + 1) >>> 0) & octMaskSize;\n\t\t\t\tvar octY3 = ((octY + 2) >>> 0) & octMaskSize;\n\n\t\t\t\tvar octX0 = ((octX - 1) >>> 0) & octMaskSize;\n\t\t\t\tvar octX1 = ((octX) >>> 0) & octMaskSize;\n\t\t\t\tvar octX2 = ((octX + 1) >>> 0) & octMaskSize;\n\t\t\t\tvar octX3 = ((octX + 2) >>> 0) & octMaskSize;\n\n\t\t\t\tvar values = //zyx\n\t\t\t\t[\n\t\t\t\t\t[\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\ttempBuffer[octZ0 * octSize2 + octY0 * octSize + octX0],\n\t\t\t\t\t\t\ttempBuffer[octZ0 * octSize2 + octY0 * octSize + octX1],\n\t\t\t\t\t\t\ttempBuffer[octZ0 * octSize2 + octY0 * octSize + octX2],\n\t\t\t\t\t\t\ttempBuffer[octZ0 * octSize2 + octY0 * octSize + octX3]\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\ttempBuffer[octZ0 * octSize2 + octY1 * octSize + octX0],\n\t\t\t\t\t\t\ttempBuffer[octZ0 * octSize2 + octY1 * octSize + octX1],\n\t\t\t\t\t\t\ttempBuffer[octZ0 * octSize2 + octY1 * octSize + octX2],\n\t\t\t\t\t\t\ttempBuffer[octZ0 * octSize2 + octY1 * octSize + octX3]\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\ttempBuffer[octZ0 * octSize2 + octY2 * octSize + octX0],\n\t\t\t\t\t\t\ttempBuffer[octZ0 * octSize2 + octY2 * octSize + octX1],\n\t\t\t\t\t\t\ttempBuffer[octZ0 * octSize2 + octY2 * octSize + octX2],\n\t\t\t\t\t\t\ttempBuffer[octZ0 * octSize2 + octY2 * octSize + octX3]\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\ttempBuffer[octZ0 * octSize2 + octY3 * octSize + octX0],\n\t\t\t\t\t\t\ttempBuffer[octZ0 * octSize2 + octY3 * octSize + octX1],\n\t\t\t\t\t\t\ttempBuffer[octZ0 * octSize2 + octY3 * octSize + octX2],\n\t\t\t\t\t\t\ttempBuffer[octZ0 * octSize2 + octY3 * octSize + octX3]\n\t\t\t\t\t\t]\n\t\t\t\t\t],\n\n\t\t\t\t\t[\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\ttempBuffer[octZ1 * octSize2 + octY0 * octSize + octX0],\n\t\t\t\t\t\t\ttempBuffer[octZ1 * octSize2 + octY0 * octSize + octX1],\n\t\t\t\t\t\t\ttempBuffer[octZ1 * octSize2 + octY0 * octSize + octX2],\n\t\t\t\t\t\t\ttempBuffer[octZ1 * octSize2 + octY0 * octSize + octX3]\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\ttempBuffer[octZ1 * octSize2 + octY1 * octSize + octX0],\n\t\t\t\t\t\t\ttempBuffer[octZ1 * octSize2 + octY1 * octSize + octX1],\n\t\t\t\t\t\t\ttempBuffer[octZ1 * octSize2 + octY1 * octSize + octX2],\n\t\t\t\t\t\t\ttempBuffer[octZ1 * octSize2 + octY1 * octSize + octX3]\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\ttempBuffer[octZ1 * octSize2 + octY2 * octSize + octX0],\n\t\t\t\t\t\t\ttempBuffer[octZ1 * octSize2 + octY2 * octSize + octX1],\n\t\t\t\t\t\t\ttempBuffer[octZ1 * octSize2 + octY2 * octSize + octX2],\n\t\t\t\t\t\t\ttempBuffer[octZ1 * octSize2 + octY2 * octSize + octX3]\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\ttempBuffer[octZ1 * octSize2 + octY3 * octSize + octX0],\n\t\t\t\t\t\t\ttempBuffer[octZ1 * octSize2 + octY3 * octSize + octX1],\n\t\t\t\t\t\t\ttempBuffer[octZ1 * octSize2 + octY3 * octSize + octX2],\n\t\t\t\t\t\t\ttempBuffer[octZ1 * octSize2 + octY3 * octSize + octX3]\n\t\t\t\t\t\t]\n\t\t\t\t\t],\n\n\t\t\t\t\t[\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\ttempBuffer[octZ2 * octSize2 + octY0 * octSize + octX0],\n\t\t\t\t\t\t\ttempBuffer[octZ2 * octSize2 + octY0 * octSize + octX1],\n\t\t\t\t\t\t\ttempBuffer[octZ2 * octSize2 + octY0 * octSize + octX2],\n\t\t\t\t\t\t\ttempBuffer[octZ2 * octSize2 + octY0 * octSize + octX3]\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\ttempBuffer[octZ2 * octSize2 + octY1 * octSize + octX0],\n\t\t\t\t\t\t\ttempBuffer[octZ2 * octSize2 + octY1 * octSize + octX1],\n\t\t\t\t\t\t\ttempBuffer[octZ2 * octSize2 + octY1 * octSize + octX2],\n\t\t\t\t\t\t\ttempBuffer[octZ2 * octSize2 + octY1 * octSize + octX3]\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\ttempBuffer[octZ2 * octSize2 + octY2 * octSize + octX0],\n\t\t\t\t\t\t\ttempBuffer[octZ2 * octSize2 + octY2 * octSize + octX1],\n\t\t\t\t\t\t\ttempBuffer[octZ2 * octSize2 + octY2 * octSize + octX2],\n\t\t\t\t\t\t\ttempBuffer[octZ2 * octSize2 + octY2 * octSize + octX3]\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\ttempBuffer[octZ2 * octSize2 + octY3 * octSize + octX0],\n\t\t\t\t\t\t\ttempBuffer[octZ2 * octSize2 + octY3 * octSize + octX1],\n\t\t\t\t\t\t\ttempBuffer[octZ2 * octSize2 + octY3 * octSize + octX2],\n\t\t\t\t\t\t\ttempBuffer[octZ2 * octSize2 + octY3 * octSize + octX3]\n\t\t\t\t\t\t]\n\t\t\t\t\t],\n\n\t\t\t\t\t[\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\ttempBuffer[octZ3 * octSize2 + octY0 * octSize + octX0],\n\t\t\t\t\t\t\ttempBuffer[octZ3 * octSize2 + octY0 * octSize + octX1],\n\t\t\t\t\t\t\ttempBuffer[octZ3 * octSize2 + octY0 * octSize + octX2],\n\t\t\t\t\t\t\ttempBuffer[octZ3 * octSize2 + octY0 * octSize + octX3]\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\ttempBuffer[octZ3 * octSize2 + octY1 * octSize + octX0],\n\t\t\t\t\t\t\ttempBuffer[octZ3 * octSize2 + octY1 * octSize + octX1],\n\t\t\t\t\t\t\ttempBuffer[octZ3 * octSize2 + octY1 * octSize + octX2],\n\t\t\t\t\t\t\ttempBuffer[octZ3 * octSize2 + octY1 * octSize + octX3]\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\ttempBuffer[octZ3 * octSize2 + octY2 * octSize + octX0],\n\t\t\t\t\t\t\ttempBuffer[octZ3 * octSize2 + octY2 * octSize + octX1],\n\t\t\t\t\t\t\ttempBuffer[octZ3 * octSize2 + octY2 * octSize + octX2],\n\t\t\t\t\t\t\ttempBuffer[octZ3 * octSize2 + octY2 * octSize + octX3]\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\ttempBuffer[octZ3 * octSize2 + octY3 * octSize + octX0],\n\t\t\t\t\t\t\ttempBuffer[octZ3 * octSize2 + octY3 * octSize + octX1],\n\t\t\t\t\t\t\ttempBuffer[octZ3 * octSize2 + octY3 * octSize + octX2],\n\t\t\t\t\t\t\ttempBuffer[octZ3 * octSize2 + octY3 * octSize + octX3]\n\t\t\t\t\t\t]\n\t\t\t\t\t]\n\t\t\t\t];\n\n\t\t\t\tfor (var inZ = 0; inZ < step; ++inZ) {\n\t\t\t\t\tvar interpZ = inZ / step;\n\t\t\t\t\tvar imageZ = octZ * step + inZ;\n\n\t\t\t\t\tvar valuesP = //yx\n\t\t\t\t\t[\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tcatmullRomv3_(values[0][0][0], values[1][0][0], values[2][0][0], values[3][0][0], interpZ),\n\t\t\t\t\t\t\tcatmullRomv3_(values[0][0][1], values[1][0][1], values[2][0][1], values[3][0][1], interpZ),\n\t\t\t\t\t\t\tcatmullRomv3_(values[0][0][2], values[1][0][2], values[2][0][2], values[3][0][2], interpZ),\n\t\t\t\t\t\t\tcatmullRomv3_(values[0][0][3], values[1][0][3], values[2][0][3], values[3][0][3], interpZ)\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tcatmullRomv3_(values[0][1][0], values[1][1][0], values[2][1][0], values[3][1][0], interpZ),\n\t\t\t\t\t\t\tcatmullRomv3_(values[0][1][1], values[1][1][1], values[2][1][1], values[3][1][1], interpZ),\n\t\t\t\t\t\t\tcatmullRomv3_(values[0][1][2], values[1][1][2], values[2][1][2], values[3][1][2], interpZ),\n\t\t\t\t\t\t\tcatmullRomv3_(values[0][1][3], values[1][1][3], values[2][1][3], values[3][1][3], interpZ)\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tcatmullRomv3_(values[0][2][0], values[1][2][0], values[2][2][0], values[3][2][0], interpZ),\n\t\t\t\t\t\t\tcatmullRomv3_(values[0][2][1], values[1][2][1], values[2][2][1], values[3][2][1], interpZ),\n\t\t\t\t\t\t\tcatmullRomv3_(values[0][2][2], values[1][2][2], values[2][2][2], values[3][2][2], interpZ),\n\t\t\t\t\t\t\tcatmullRomv3_(values[0][2][3], values[1][2][3], values[2][2][3], values[3][2][3], interpZ)\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tcatmullRomv3_(values[0][2][0], values[1][3][0], values[2][3][0], values[3][3][0], interpZ),\n\t\t\t\t\t\t\tcatmullRomv3_(values[0][2][1], values[1][3][1], values[2][3][1], values[3][3][1], interpZ),\n\t\t\t\t\t\t\tcatmullRomv3_(values[0][2][2], values[1][3][2], values[2][3][2], values[3][3][2], interpZ),\n\t\t\t\t\t\t\tcatmullRomv3_(values[0][2][3], values[1][3][3], values[2][3][3], values[3][3][3], interpZ)\n\t\t\t\t\t\t]\n\t\t\t\t\t];\n\n\t\t\t\t\tfor (var inY = 0; inY < step; ++inY) {\n\t\t\t\t\t\tvar interpY = inY / step;\n\t\t\t\t\t\tvar imageY = octY * step + inY;\n\n\t\t\t\t\t\tvar value0 = catmullRomv3_(valuesP[0][0], valuesP[1][0], valuesP[2][0],\n\t\t\t\t\t\t\tvaluesP[3][0], interpY);\n\t\t\t\t\t\tvar value1 = catmullRomv3_(valuesP[0][1], valuesP[1][1], valuesP[2][1],\n\t\t\t\t\t\t\tvaluesP[3][1], interpY);\n\t\t\t\t\t\tvar value2 = catmullRomv3_(valuesP[0][2], valuesP[1][2], valuesP[2][2],\n\t\t\t\t\t\t\tvaluesP[3][2], interpY);\n\t\t\t\t\t\tvar value3 = catmullRomv3_(valuesP[0][3], valuesP[1][3], valuesP[2][3],\n\t\t\t\t\t\t\tvaluesP[3][3], interpY);\n\n\t\t\t\t\t\tfor (var inX = 0; inX < step; ++inX) {\n\t\t\t\t\t\t\tvar interpX = inX / step;\n\t\t\t\t\t\t\tvar imageX = octX * step + inX;\n\n\t\t\t\t\t\t\tvar octResult = catmullRomv3_(value0, value1, value2, value3, interpX);\n\t\t\t\t\t\t\tvar result = ctx.d(ctx.v(octResult, amp), image[imageZ][imageY][imageX]);\n\t\t\t\t\t\t\tvar clampedResult = [\n\t\t\t\t\t\t\t\tclamp_(result[0], -1.0, 1.0),\n\t\t\t\t\t\t\t\tclamp_(result[1], -1.0, 1.0),\n\t\t\t\t\t\t\t\tclamp_(result[2], -1.0, 1.0)\n\t\t\t\t\t\t\t];\n\n\t\t\t\t\t\t\timage[imageZ][imageY][imageX] = clampedResult;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tmixStepIteration++;\n\t\t\tthis.progress = Progress.INIT + (Progress.MIX - Progress.INIT) * (mixStepIteration / numMixStepIterations);\n\n\t\t\toctY++;\n\t\t\tif (octY >= octSize) {\n\t\t\t\toctY = 0;\n\t\t\t\toctZ++;\n\t\t\t\tif (octZ >= octSize) {\n\t\t\t\t\toctZ = 0;\n\n\t\t\t\t\tprevStep = step;\n\t\t\t\t\tamp = Math.pow(amp, fadeDegree);\n\n\t\t\t\t\tif (prevStep <= 1) {\n\t\t\t\t\t\tstate = States.SCALING;\n\t\t\t\t\t\tthis.progress = Progress.MIX;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstate = States.MIX_STEP_INIT;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// hardcoded scaling of the image to make it more symethric\n\t\tvar scaling = function() {\n\t\t\tvar low = [-1.0, -1.0, -1.0];\n\t\t\tvar high = [0.5, 0.7, 1.0];\n\n\t\t\tfor (var z = 0; z < imageSize; ++z) {\n\t\t\t\tvar imageZ = image[z];\n\n\t\t\t\tfor (var y = 0; y < imageSize; ++y) {\n\t\t\t\t\tvar imageZY = imageZ[y];\n\n\t\t\t\t\tfor (var x = 0; x < imageSize; ++x) {\n\t\t\t\t\t\tvar imageZYX = imageZY[x];\n\t\t\t\t\t\timageZYX[0] = ctx.X(low[0], high[0], imageZYX[0] * 0.5 + 0.5);\n\t\t\t\t\t\timageZYX[1] = ctx.X(low[1], high[1], imageZYX[1] * 0.5 + 0.5);\n\t\t\t\t\t\timageZYX[2] = ctx.X(low[2], high[2], imageZYX[2] * 0.5 + 0.5);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tstate = States.DATA_VIEWS;\n\t\t\tthis.progress = Progress.SCALING;\n\t\t}\n\n\t\t// filling zd DataViews\n\t\tvar dataViews = function() {\n\t\t\tctx.yd = imageSize;\n\t\t\tctx.zd = [];\n\n\t\t\tfor (var z = 0; z < imageSize; ++z) {\n\t\t\t\tvar imageZ = image[z];\n\n\t\t\t\tvar plane = new ArrayBuffer(imageSize * imageSize * 3);\n\t\t\t\tvar view = new DataView(plane);\n\n\t\t\t\tfor (var y = 0; y < imageSize; ++y) {\n\t\t\t\t\tvar imageZY = imageZ[y];\n\n\t\t\t\t\tfor (var x = 0; x < imageSize; ++x) {\n\t\t\t\t\t\tvar imageZYX = imageZY[x];\n\n\t\t\t\t\t\tvar rgbOffset = (y * imageSize + x) * 3;\n\t\t\t\t\t\tview.setUint8(rgbOffset + 0,\n\t\t\t\t\t\t\tMath.floor(clamp_(256.0 * (imageZYX[0] * 0.5 + 0.5) - 0.5, 0.0, 255.0)));\n\t\t\t\t\t\tview.setUint8(rgbOffset + 1,\n\t\t\t\t\t\t\tMath.floor(clamp_(256.0 * (imageZYX[1] * 0.5 + 0.5) - 0.5, 0.0, 255.0)));\n\t\t\t\t\t\tview.setUint8(rgbOffset + 2,\n\t\t\t\t\t\t\tMath.floor(clamp_(256.0 * (imageZYX[2] * 0.5 + 0.5) - 0.5, 0.0, 255.0)));\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tctx.zd[z] = view;\n\t\t\t}\n\n\t\t\tstate = States.FINISHED;\n\t\t\tthis.progress = Progress.DATA_VIEWS;\n\t\t}\n\n\t\tthis.step = function() {\n\t\t\tswitch (state) {\n\t\t\t\tcase States.INITIAL_FILL: initialFill.call(this); break;\n\t\t\t\tcase States.MIX_STEP_INIT: mixStepInit.call(this); break;\n\t\t\t\tcase States.MIX_STEP_PROCESS: mixStepProcess.call(this); break;\n\t\t\t\tcase States.SCALING: scaling.call(this); break;\n\t\t\t\tcase States.DATA_VIEWS: dataViews.call(this); break;\n\t\t\t}\n\n\t\t\treturn state == States.FINISHED;\n\t\t}\n\t}\n\n\t// Lazy-create offscreen canvas only if DOM available (allows Node.js tests)\n\tif (typeof document !== 'undefined' && document.createElement) {\n\t\tthis.cf = document.createElement('canvas');\n\t\tthis.cf.width = 0;\n\t\tthis.cf.height = 0;\n\t\tthis.bf = this.cf.getContext('2d');\n\t} else {\n\t\tthis.cf = { width:0, height:0 };\n\t\tthis.bf = null;\n\t}\n\n\tthis.af = function(minWidth, minHeight) {\n\t\tif (this.cf.width < minWidth || this.cf.height < minHeight) {\n\t\t\tthis.cf.width = minWidth;\n\t\t\tthis.cf.height = minHeight;\n\t\t\tthis.bf = this.cf.getContext('2d');\n\t\t}\n\t}\n\n\tthis.effects = [];\n\n\tthis.loadEffect = function(effectFilePath, onSuccessFunc, onFailFunc) {\n\n\t\tif (this.effects[effectFilePath] != undefined) {\n\n\t\t\tvar effectModel = this.effects[effectFilePath];\n\n\t\t\tif (effectModel instanceof Array) {\n\t\t\t\teffectModel[effectModel.length] = [onSuccessFunc, onFailFunc];\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tonSuccessFunc(effectModel);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.effects[effectFilePath] = [[onSuccessFunc, onFailFunc]];\n\n\t\tvar request = new XMLHttpRequest();\n\t\trequest.open(\"GET\", effectFilePath, true);\n\t\trequest.responseType = \"text\";\n\t\trequest.ctx = this;\n\t\trequest.onreadystatechange = function () {\n\t\t\tif (request.readyState == 4) {\n\t\t\t\tvar callbacks = this.ctx.effects[effectFilePath];\n\n\t\t\t\tif ((request.status >= 200 && request.status < 300) || request.status == 304) {\n\n\t\t\t\t\tvar evalText = \"(function(ctx) {\\n\" +\n\t\t\t\t\t\trequest.responseText +\n\t\t\t\t\t\t\"\\nreturn new NeutrinoEffect(ctx);\\n})(this.ctx);\";\n\t\t\t\t\tvar effectModel = eval(evalText);\n\t\t\t\t\tthis.ctx.effects[effectFilePath] = effectModel;\n\n\t\t\t\t\tcallbacks.forEach(function(callback) {\n\t\t\t\t\t\tcallback[0](effectModel);\n\t\t\t\t\t});\n\n\t\t\t\t} else {\n\t\t\t\t\tcallbacks.forEach(function(callback) {\n\t\t\t\t\t\tcallback[1]();\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\trequest.send();\n\t}\n\n\tthis.removeEffect = function(effectFilePath) {\n\t\tdelete this.effects[effectFilePath];\n\t}\n}\n"],"names":["Context","ctx","equalv3_","a","b","equalq_","r","y","s","z","c","d","C","D","addq","addq_","e","f","A","B","nf","of","g","h","E","F","rf","sf","i","j","k","l","m","n","o","p","H","dotq_","q","t","u","v","w","x","G","I","ax","ay","az","bx","by","bz","J","K","Math","sqrt","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","ab","bb","slerpq","cosTheta","negq","Number","EPSILON","Md","acos_","mulqscalar","mulqscalar_","sin_","slerpq_","acos","sin","cos_","cos","taus88","seed","value0","value1","value2","s0","rand","engine","cb","radius","randv2gen","random","gen","PI","db","randv3gen","theta","sqrtInvZ2","yb","Nd","dispx","dispy","eb","fb","gb","hb","negq_","ib","degrees","jb","radians","Ae","value","ob","x2","y2","z2","xy","xz","yz","wz","wy","wx","pb","tr","axes2quat","qb","ha","axisangle2quat","axisangle2quat_","rb","qx","qy","qz","qw","ix","iy","iz","iw","sb","qax","qay","qaz","qaw","qbx","qby","qbz","qbw","tb","Hf","degree","scale","rad","ub","vb","val","floor","yd","colorCompToHex_","toString","ff","rgb","tf","vf","xf","yf","zf","ca","wf","Af","Bf","Cf","abs","Df","uf","Ef","wb","rgbDisp","view","zd","getUint8","xb","scaledPosX","scaledPosY","scaledPosZ","floorX","floorY","floorZ","fracX","fracY","fracZ","noiseX","noiseX1","noiseY","noiseY1","noiseZ","noiseZ1","value000","value001","value010","value011","value100","value101","value110","value111","value00","value01","value10","value11","ImageDesc","image","width","height","RenderCall","startIndex","numIndices","renderStyleIndex","SubRect","Camera2D","prototype","Camera3D","screenSize","horizAngle","Qd","tan","transform","pos","size","initializeNoise","path","onloadcallback","onfailcallback","undefined","defaultPath","Error","url","request","XMLHttpRequest","open","responseType","fail","err","String","_","succeed","onerror","onabort","onload","status","buffer","response","ArrayBuffer","byteLength","headerView","DataView","planeSize","getUint32","isFinite","sideSizePx","planeCount","bytesPerPlane","expectedBytes","Array","offset","send","NoiseGenerator","catmullRom_","p0","p1","p2","p3","catmullRomv3_","clamp_","from","to","imageSize","tempBuffer","tausGenerator","amp","fadeDegree","prevStep","step","octSize","octSize2","octMaskSize","octPixels","octZ","octY","numMixStepIterations","mixStepIteration","_octSize","States","INITIAL_FILL","MIX_STEP_INIT","MIX_STEP_PROCESS","SCALING","DATA_VIEWS","FINISHED","Progress","INIT","MIX","state","progress","initialFill","imageZ","imageZY","imageZYX","mixStepInit","max","mixStepProcess","octX","octZ0","octZ1","octZ2","octZ3","octY0","octY1","octY2","octY3","octX0","octX1","octX2","octX3","values","inZ","interpZ","valuesP","inY","interpY","imageY","value3","inX","interpX","imageX","octResult","result","clampedResult","pow","scaling","low","high","dataViews","plane","rgbOffset","setUint8","call","document","createElement","cf","bf","getContext","af","minWidth","minHeight","effects","loadEffect","effectFilePath","onSuccessFunc","onFailFunc","effectModel","length","onreadystatechange","readyState","callbacks","evalText","responseText","eval","forEach","callback","removeEffect"],"mappings":"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"}
1
+ {"version":3,"file":"neutrinoparticles.js-v1.0.umd.js","sources":["../src/main.js"],"sourcesContent":["\"use strict\"\n\nexport function Context() {\n\tvar ctx = this;\n\n\tthis.equalv3_ = function(a, b) {\n\t\treturn a[0] == b[0] && a[1] == b[1] && a[2] == b[2];\n\t}\n\n\tthis.equalq_ = function(a, b) {\n\t\treturn a[0] == b[0] && a[1] == b[1] && a[2] == b[2] && a[3] == b[3];\n\t}\n\n\tthis.a = function (r, a, b) {\n\t\tr[0] = a[0] + b[0];\n\t\tr[1] = a[1] + b[1];\n\t}\n\n\tthis.b = function (a, b) {\n\t\treturn [a[0] + b[0], a[1] + b[1]];\n\t}\n\n\tthis.y = function (r, a, s) {\n\t r[0] = a[0] + s;\n\t r[1] = a[1] + s;\n\t}\n\n\tthis.z = function (a, s) {\n\t return [a[0] + s, a[1] + s];\n\t}\n\n\tthis.c = function (r, a, b) {\n\t\tr[0] = a[0] + b[0];\n\t\tr[1] = a[1] + b[1];\n\t\tr[2] = a[2] + b[2];\n\t}\n\n\tthis.d = function (a, b) {\n\t\treturn [a[0] + b[0], a[1] + b[1], a[2] + b[2]];\n\t}\n\n\tthis.C = function (r, a, s) {\n\t r[0] = a[0] + s;\n\t r[1] = a[1] + s;\n\t r[2] = a[2] + s;\n\t}\n\n\tthis.D = function (a, s) {\n\t return [a[0] + s, a[1] + s, a[2] + s];\n\t}\n\n\tthis.addq = function (r, a, b) {\n\t\tr[0] = a[0] + b[0];\n\t\tr[1] = a[1] + b[1];\n\t\tr[2] = a[2] + b[2];\n\t\tr[3] = a[3] + b[3];\n\t}\n\n\tthis.addq_ = function (a, b) {\n\t\treturn [a[0] + b[0], a[1] + b[1], a[2] + b[2], a[3] + b[3]];\n\t}\n\n\tthis.e = function (r, a, b) {\n\t\tr[0] = a[0] - b[0];\n\t\tr[1] = a[1] - b[1];\n\t}\n\n\tthis.f = function (a, b) {\n\t\treturn [a[0] - b[0], a[1] - b[1]];\n\t}\n\n\tthis.A = function (r, a, s) {\n\t r[0] = a[0] - s;\n\t r[1] = a[1] - s;\n\t}\n\n\tthis.B = function (a, s) {\n\t return [a[0] - s, a[1] - s];\n\t}\n\n\tthis.nf = function (r, s, a) {\n\t r[0] = s - a[0];\n\t r[1] = s - a[1];\n\t}\n\n\tthis.of = function (s, a) {\n\t return [s - a[0], s - a[1]];\n\t}\n\n\tthis.g = function (r, a, b) {\n\t\tr[0] = a[0] - b[0];\n\t\tr[1] = a[1] - b[1];\n\t\tr[2] = a[2] - b[2];\n\t}\n\n\tthis.h = function (a, b) {\n\t\treturn [a[0] - b[0], a[1] - b[1], a[2] - b[2]];\n\t}\n\n\tthis.E = function (r, a, s) {\n\t r[0] = a[0] - s;\n\t r[1] = a[1] - s;\n\t r[2] = a[2] - s;\n\t}\n\n\tthis.F = function (a, s) {\n\t return [a[0] - s, a[1] - s, a[2] - s];\n\t}\n\n\tthis.rf = function (r, s, a) {\n\t r[0] = s - a[0];\n\t r[1] = s - a[1];\n\t r[2] = s - a[2];\n\t}\n\n\tthis.sf = function (s, a) {\n\t return [s - a[0], s - a[1], s - a[2]];\n\t}\n\n\tthis.i = function (r, a, b) {\n\t\tr[0] = a[0] * b[0];\n\t\tr[1] = a[1] * b[1];\n\t}\n\n\tthis.j = function (a, b) {\n\t\treturn [a[0] * b[0], a[1] * b[1]];\n\t}\n\n\tthis.k = function (r, a, b) {\n\t\tr[0] = a[0] * b[0];\n\t\tr[1] = a[1] * b[1];\n\t\tr[2] = a[2] * b[2];\n\t}\n\n\tthis.l = function (a, b) {\n\t\treturn [a[0] * b[0], a[1] * b[1], a[2] * b[2]];\n\t}\n\n\tthis.m = function (r, a, b) {\n\t\tr[0] = a[0] / b[0];\n\t\tr[1] = a[1] / b[1];\n\t}\n\n\tthis.n = function (a, b) {\n\t\treturn [a[0] / b[0], a[1] / b[1]];\n\t}\n\n\tthis.o = function (r, a, b) {\n\t\tr[0] = a[0] / b[0];\n\t\tr[1] = a[1] / b[1];\n\t\tr[2] = a[2] / b[2];\n\t}\n\n\tthis.p = function (a, b) {\n\t\treturn [a[0] / b[0], a[1] / b[1], a[2] / b[2]];\n\t}\n\n\tthis.H = function(a, b) {\n\t\treturn a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n\t}\n\n\tthis.dotq_ = function(a, b) {\n\t\treturn a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n\t}\n\n\tthis.q = function (r, a, s) {\n\t\tr[0] = a[0] * s;\n\t\tr[1] = a[1] * s;\n\t}\n\n\tthis.r = function (a, s) {\n\t\treturn [a[0] * s, a[1] * s];\n\t}\n\n\tthis.s = function (r, a, s) {\n\t\tr[0] = a[0] / s;\n\t\tr[1] = a[1] / s;\n\t}\n\n\tthis.t = function (a, s) {\n\t\treturn [a[0] / s, a[1] / s];\n\t}\n\n\tthis.u = function (r, a, s) {\n\t\tr[0] = a[0] * s;\n\t\tr[1] = a[1] * s;\n\t\tr[2] = a[2] * s;\n\t}\n\n\tthis.v = function (a, s) {\n\t\treturn [a[0] * s, a[1] * s, a[2] * s];\n\t}\n\n\tthis.w = function (r, a, s) {\n\t\tr[0] = a[0] / s;\n\t\tr[1] = a[1] / s;\n\t\tr[2] = a[2] / s;\n\t}\n\n\tthis.x = function (a, s) {\n\t\treturn [a[0] / s, a[1] / s, a[2] / s];\n\t}\n\n\tthis.y = function (r, a, s) {\n\t\tr[0] = a[0] + s;\n\t\tr[1] = a[1] + s;\n\t}\n\n\tthis.z = function (a, s) {\n\t\treturn [a[0] + s, a[1] + s];\n\t}\n\n\tthis.A = function (r, a, s) {\n\t\tr[0] = a[0] - s;\n\t\tr[1] = a[1] - s;\n\t}\n\n\tthis.B = function (a, s) {\n\t\treturn [a[0] - s, a[1] - s];\n\t}\n\n\tthis.G = function (a, b) {\n\t\treturn a[0] * b[0] + a[1] * b[1];\n\t}\n\n\tthis.H = function (a, b) {\n\t\treturn a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n\t}\n\n\tthis.I = function (r, a, b) {\n\t\tvar ax = a[0], ay = a[1], az = a[2];\n\t\tvar bx = b[0], by = b[1], bz = b[2];\n\n\t\tr[0] = ay * bz - az * by;\n\t\tr[1] = az * bx - ax * bz;\n\t\tr[2] = ax * by - ay * bx;\n\t}\n\n\tthis.J = function (a, b) {\n\t\tvar ax = a[0], ay = a[1], az = a[2];\n\t\tvar bx = b[0], by = b[1], bz = b[2];\n\n\t\treturn [ay * bz - az * by,\n\t\t\taz * bx - ax * bz,\n\t\t\tax * by - ay * bx];\n\t}\n\n\tthis.K = function (a) {\n\t\treturn Math.sqrt(a[0] * a[0] + a[1] * a[1]);\n\t}\n\n\tthis.L = function (a) {\n\t\treturn a[0] * a[0] + a[1] * a[1];\n\t}\n\n\tthis.M = function (r, a) {\n\t\tctx.q(r, a, 1.0 / ctx.K(a));\n\t}\n\n\tthis.N = function (a) {\n\t\treturn ctx.r(a, 1.0 / ctx.K(a));\n\t}\n\n\tthis.O = function (a) {\n\t\treturn Math.sqrt(a[0] * a[0] + a[1] * a[1] + a[2] * a[2]);\n\t}\n\n\tthis.P = function (a) {\n\t\treturn a[0] * a[0] + a[1] * a[1] + a[2] * a[2];\n\t}\n\n\tthis.Q = function (r, a) {\n\t\tctx.u(r, a, 1.0 / ctx.O(a));\n\t}\n\n\tthis.R = function (a) {\n\t\treturn ctx.v(a, 1.0 / ctx.O(a));\n\t}\n\n\tthis.S = function (r, a) {\n\t\tr[0] = a[0];\n\t\tr[1] = a[1];\n\t}\n\n\tthis.T = function (r, a) {\n\t\tr[0] = a[0];\n\t\tr[1] = a[1];\n\t\tr[2] = a[2];\n\t}\n\n\tthis.U = function (r, a) {\n\t\tr[0] = a[0];\n\t\tr[1] = a[1];\n\t\tr[2] = a[2];\n\t\tr[3] = a[3];\n\t}\n\n\tthis.V = function (r, x, y) {\n\t\tr[0] = x;\n\t\tr[1] = y;\n\t}\n\n\tthis.W = function (r, x, y, z) {\n\t\tr[0] = x;\n\t\tr[1] = y;\n\t\tr[2] = z;\n\t}\n\n\tthis.X = function (a, b, i) {\n\t\treturn a + (b - a) * i;\n\t}\n\n\tthis.Y = function (r, a, b, i) {\n\t\tr[0] = a[0] + (b[0] - a[0]) * i;\n\t\tr[1] = a[1] + (b[1] - a[1]) * i;\n\t}\n\n\tthis.Z = function (a, b, i) {\n\t\treturn [a[0] + (b[0] - a[0]) * i,\n\t\t\ta[1] + (b[1] - a[1]) * i];\n\t}\n\n\tthis.ab = function (r, a, b, i) {\n\t\tr[0] = a[0] + (b[0] - a[0]) * i;\n\t\tr[1] = a[1] + (b[1] - a[1]) * i;\n\t\tr[2] = a[2] + (b[2] - a[2]) * i;\n\t}\n\n\tthis.bb = function (a, b, i) {\n\t\treturn [a[0] + (b[0] - a[0]) * i,\n\t\t\ta[1] + (b[1] - a[1]) * i,\n\t\t\ta[2] + (b[2] - a[2]) * i];\n\t}\n\n\tthis.slerpq = function(r, x, y, a) {\n\t\tvar cosTheta = ctx.dotq_(x, y);\n\n\t\tvar z = [];\n\n\t\tif (cosTheta < 0) {\n\t\t\tctx.negq(z, y);\n\t\t\tcosTheta = -cosTheta;\n\t\t}\n\t\telse {\n\t\t\tctx.U(z, y);\n\t\t}\n\n\t\tif ((1.0 - cosTheta) < Number.EPSILON) {\n\t\t\tr[0] = ctx.X(x[0], y[0], a);\n\t\t\tr[1] = ctx.X(x[1], y[1], a);\n\t\t\tr[2] = ctx.X(x[2], y[2], a);\n\t\t\tr[3] = ctx.X(x[3], y[3], a);\n\t\t}\n\t\telse {\n\t\t\tvar Md = ctx.acos_(cosTheta);\n\n\t\t\tctx.mulqscalar(r, ctx.addq_(ctx.mulqscalar_(x, ctx.sin_((1.0 - a) * Md)), ctx.mulqscalar_(z, ctx.sin_(a * Md))),\n\t\t\t\t1.0 / ctx.sin_(Md));\n\t\t}\n\t}\n\n\tthis.slerpq_ = function(x, y, a) {\n\t\tvar r = [];\n\t\tctx.slerpq(r, x, y, a);\n\t\treturn r;\n\t}\n\n\t//trigonometry\n\n\tthis.acos_ = function(a) {\n\t\treturn Math.acos(a);\n\t}\n\n\tthis.sin_ = function(a) {\n\t\treturn Math.sin(a);\n\t}\n\n\tthis.cos_ = function(a) {\n\t\treturn Math.cos(a);\n\t}\n\n\t// random\n\n\tthis.taus88 = function(seed)\n\t{\n\t\tif (!seed)\n\t\t\tseed = 0;\n\n\t\tvar value0, value1, value2;\n\n\t\tthis.seed = function(s0) {\n\t\t\ts0 &= 0xFFFFFFFF;\n\n\t\t\tvalue0 = s0 < 2 ? s0 + 2 : s0;\n\t\t\tvalue1 = s0 < 8 ? s0 + 8 : s0;\n\t\t\tvalue2 = s0 < 16 ? s0 + 16 : s0;\n\t\t}\n\n\t\tthis.rand = function() {\n\t\t\tvar b = (((value0 << 13) ^ value0) & 0xFFFFFFFF) >>> 19;\n\t\t\tvalue0 = (((value0 & 0xFFFFFFFE) << 12) ^ b) >>> 0;\n\n\t\t\tb = (((value1 << 2) ^ value1) & 0xFFFFFFFF) >>> 25;\n\t\t\tvalue1 = (((value1 & 0xFFFFFFF8) << 4) ^ b) >>> 0;\n\n\t\t\tb = (((value2 << 3) ^ value2) & 0xFFFFFFFF) >>> 11;\n\t\t\tvalue2 = (((value2 & 0xFFFFFFF0) << 17) ^ b) >>> 0;\n\n\t\t\tvar engine = ((value0 ^ value1) ^ value2) >>> 0;\n\t\t\treturn engine / 4294967296.0;\n\t\t}\n\n\t\tthis.seed(seed);\n\t}\n\n\tthis.cb = function (r, radius) {\n\t\tthis.randv2gen(r, radius, function () { return Math.random(); });\n\t}\n\n\tthis.randv2gen = function (r, radius, gen) {\n\t\tvar Md = gen() * Math.PI * 2.0;\n\t\tr[0] = radius * ctx.cos_(Md);\n\t\tr[1] = radius * ctx.sin_(Md);\n\t}\n\n\tthis.db = function (r, radius) {\n\t\tthis.randv3gen(r, radius, function () { return Math.random(); });\n\t}\n\n\tthis.randv3gen = function (r, radius, gen) {\n\t\tvar theta = gen() * Math.PI * 2.0;\n\t\tvar z = -1.0 + gen() * 2.0;\n\t\tvar sqrtInvZ2 = radius * Math.sqrt(1.0 - z * z);\n\t\tr[0] = sqrtInvZ2 * ctx.cos_(theta);\n\t\tr[1] = sqrtInvZ2 * ctx.sin_(theta);\n\t\tr[2] = radius * z;\n\t}\n\n\tthis.yb = function(r, x, y, Nd, gen) {\n\t\tvar dispx = x + gen() * Nd[0];\n\t\tvar dispy = y + gen() * Nd[1];\n\t\tctx.V(r, dispx, dispy);\n\t}\n\n\tthis.eb = function (r, a) {\n\t\tctx.V(-a[0], -a[1]);\n\t}\n\n\tthis.fb = function (a) {\n\t\treturn [-a[0], -a[1]];\n\t}\n\n\tthis.gb = function (r, a) {\n\t\tctx.W(-a[0], -a[1], -a[2]);\n\t}\n\n\tthis.hb = function (a) {\n\t\treturn [-a[0], -a[1], -a[2]];\n\t}\n\n\tthis.negq = function (r, a) {\n\t\tr[0] = -a[0];\n\t\tr[1] = -a[1];\n\t\tr[2] = -a[2];\n\t\tr[3] = -a[3];\n\t}\n\n\tthis.negq_ = function(a) {\n\t\treturn [-a[0], -a[1], -a[2], -a[3]];\n\t}\n\n\tthis.ib = function (degrees) {\n\t\treturn degrees / 180.0 * Math.PI;\n\t}\n\n\tthis.jb = function (radians) {\n\t\treturn radians / Math.PI * 180.0;\n\t}\n\n\tthis.Ae = function(value) {\n\t\treturn value < 0 ? -1 : 1;\n\t}\n\n\tthis.ob = function (x, y, z, q) {\n\t\tvar x2 = 2.0 * q[0] * q[0];\n\t\tvar y2 = 2.0 * q[1] * q[1];\n\t\tvar z2 = 2.0 * q[2] * q[2];\n\t\tvar xy = 2.0 * q[0] * q[1];\n\t\tvar xz = 2.0 * q[0] * q[2];\n\t\tvar yz = 2.0 * q[1] * q[2];\n\t\tvar wz = 2.0 * q[3] * q[2];\n\t\tvar wy = 2.0 * q[3] * q[1];\n\t\tvar wx = 2.0 * q[3] * q[0];\n\n\t\tx[0] = 1.0 - y2 - z2;\n\t\tx[1] = xy + wz;\n\t\tx[2] = xz - wy;\n\n\t\ty[0] = xy - wz;\n\t\ty[1] = 1.0 - x2 - z2;\n\t\ty[2] = yz + wx;\n\n\t\tz[0] = xz + wy;\n\t\tz[1] = yz - wx;\n\t\tz[2] = 1.0 - x2 - y2;\n\t}\n\n\tthis.pb = function (q, x, y, z) {\n\t\tvar tr = x[0] + y[1] + z[2]\n\n\t\tif (tr > 0) {\n\t\t\tvar S = Math.sqrt(tr+1.0) * 2;\n\t\t\tq[3] = 0.25 * S;\n\t\t\tq[0] = (y[2] - z[1]) / S;\n\t\t\tq[1] = (z[0] - x[2]) / S;\n\t\t\tq[2] = (x[1] - y[0]) / S;\n\t\t} else if ((x[0] > y[1])&(x[0] > z[2])) {\n\t\t\tvar S = Math.sqrt(1.0 + x[0] - y[1] - z[2]) * 2;\n\t\t\tq[3] = (y[2] - z[1]) / S;\n\t\t\tq[0] = 0.25 * S;\n\t\t\tq[1] = (x[1] + y[0]) / S;\n\t\t\tq[2] = (z[0] + x[2]) / S;\n\t\t} else if (y[1] > z[2]) {\n\t\t\tvar S = Math.sqrt(1.0 + y[1] - x[0] - z[2]) * 2;\n\t\t\tq[3] = (z[0] - x[2]) / S;\n\t\t\tq[0] = (x[1] + y[0]) / S;\n\t\t\tq[1] = 0.25 * S;\n\t\t\tq[2] = (y[2] + z[1]) / S;\n\t\t} else {\n\t\t\tvar S = Math.sqrt(1.0 + z[2] - x[0] - y[1]) * 2;\n\t\t\tq[3] = (x[1] - y[0]) / S;\n\t\t\tq[0] = (z[0] + x[2]) / S;\n\t\t\tq[1] = (y[2] + z[1]) / S;\n\t\t\tq[2] = 0.25 * S;\n\t\t}\n\t}\n\n\tthis./**/axes2quat = this.pb;\n\n\tthis.qb = function (q, x, a) {\n\t\tvar ha = ctx.ib(a) * 0.5, s = Math.sin(ha);\n\t\tq[0] = x[0] * s;\n\t\tq[1] = x[1] * s;\n\t\tq[2] = x[2] * s;\n\t\tq[3] = Math.cos(ha);\n\t}\n\n\tthis./**/axisangle2quat = this.qb;\n\n\tthis.axisangle2quat_ = function (x, a) {\n\t\tvar ha = ctx.ib(a) * 0.5, s = Math.sin(ha);\n\t\treturn [x[0] * s, x[1] * s, x[2] * s, ctx.cos_(ha)];\n\t}\n\n\tthis./**/axisangle2quat_ = this.axisangle2quat_;\n\n\tthis.rb = function (r, v, q) {\n\t\tvar x = v[0];\n\t\tvar y = v[1];\n\t\tvar z = v[2];\n\n\t\tvar qx = q[0];\n\t\tvar qy = q[1];\n\t\tvar qz = q[2];\n\t\tvar qw = q[3];\n\n\t\tvar ix = qw * x + qy * z - qz * y;\n\t\tvar iy = qw * y + qz * x - qx * z;\n\t\tvar iz = qw * z + qx * y - qy * x;\n\t\tvar iw = -qx * x - qy * y - qz * z;\n\n\t\tr[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n\t\tr[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n\t\tr[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n\t}\n\n\tthis.sb = function (r, a, b) {\n\t\tvar qax = a[0], qay = a[1], qaz = a[2], qaw = a[3];\n\t\tvar qbx = b[0], qby = b[1], qbz = b[2], qbw = b[3];\n\n\t\tr[0] = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n\t\tr[1] = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n\t\tr[2] = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n\t\tr[3] = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n\t}\n\n\tthis.mulqscalar = function (r, a, s) {\n\t\tr[0] = a[0] * s;\n\t\tr[1] = a[1] * s;\n\t\tr[2] = a[2] * s;\n\t\tr[3] = a[3] * s;\n\t}\n\n\tthis.mulqscalar_ = function (a, s) {\n\t\treturn [a[0] * s, a[1] * s, a[2] * s, a[3] * s];\n\t}\n\n\t// Expression-layer quat helpers (return-value style; see ExpressionConverter).\n\tthis.mulq_ = function (a, b) {\n\t\tvar r = [];\n\t\tctx.sb(r, a, b);\n\t\treturn r;\n\t}\n\n\tthis.inverseq_ = function (q) {\n\t\tvar d = q[0] * q[0] + q[1] * q[1] + q[2] * q[2] + q[3] * q[3];\n\t\treturn [-q[0] / d, -q[1] / d, -q[2] / d, q[3] / d];\n\t}\n\n\t// quat(w, x, y, z) -> [x, y, z, w] (mirrors CS _math.quat_ signature).\n\tthis.quat_ = function (w, x, y, z) {\n\t\treturn [x, y, z, w];\n\t}\n\n\tthis.tb = function (r, Hf, degree, scale, v) {\n\t\tvar rad = ctx.ib(degree);\n\t\tvar cos = Math.cos(rad) * scale;\n\t\tvar sin = Math.sin(rad) * scale;\n\t\tr[0] = Hf[0] + cos * v[0] - sin * v[1];\n\t\tr[1] = Hf[1] + sin * v[0] + cos * v[1];\n\t}\n\n\tthis.ub = function (r, Hf, degree, scale, v) {\n\t\tvar rad = ctx.ib(degree);\n\t\tvar cos = Math.cos(rad) / scale;\n\t\tvar sin = Math.sin(rad) / scale;\n\n\t\tr[0] = cos * v[0] + sin * v[1] - Hf[0] * cos - Hf[1] * sin;\n\t\tr[1] = cos * v[1] - sin * v[0] + Hf[0] * sin - Hf[1] * cos;\n\t}\n\n\tthis.vb = function (val) {\n\t\tif (val < 0)\n\t\t\treturn Math.floor(ctx.yd - 1 + val % ctx.yd);\n\t\telse\n\t\t\treturn Math.floor(val % ctx.yd);\n\t}\n\n\tfunction colorCompToHex_(c) {\n\t\treturn c < 16 ? \"0\" + c.toString(16) : c.toString(16);\n\t}\n\n\tthis.ff = function(rgb) {\n\t\treturn \"#\"\n\t\t\t+ colorCompToHex_(Math.floor(rgb[0] * 255))\n\t\t\t+ colorCompToHex_(Math.floor(rgb[1] * 255))\n\t\t\t+ colorCompToHex_(Math.floor(rgb[2] * 255));\n\t}\n\n\tthis.tf = function(vf, xf, yf, a, b, zf) {\n\t\tlet ca = ctx.f(a, vf);\n\t\tlet cb = ctx.f(b, vf);\n\n\t\tlet wf = ctx.r(xf, yf);\n\n\t\tif ((ca[0] < -wf[0] && cb[0] < -wf[0])\n\t\t\t|| (ca[0] > wf[0] && cb[0] > wf[0])\n\t\t\t|| (ca[1] < -wf[1] && cb[1] < -wf[1])\n\t\t\t|| (ca[1] > wf[1] && cb[1] > wf[1]))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tif (ca[0] <= wf[0] && ca[0] >= -wf[0] && ca[1] <= wf[1] && ca[1] >= -wf[1])\n\t\t\treturn true;\n\n\t\tif (zf < 0.000001)\n\t\t\treturn false;\n\n\t\tif (cb[0] <= wf[0] && cb[0] >= -wf[0] && cb[1] <= wf[1] && cb[1] >= -wf[1])\n\t\t\treturn true;\n\n\t\tlet Af = ctx.f(b, a); ctx.s(Af, Af, zf);\n\t\tlet Bf = [-Af[1], Af[0]];\n\t\tlet Cf = Math.abs(ctx.G(Bf, cb));\n\n\t\tif (Math.abs(ctx.G(Bf, wf)) >= Cf) {\n\t\t\tlet Df = [-xf[1], xf[0]];\n\t\t\tif (ctx.G(Df, ca) * ctx.G(Df, cb) <= 0.0) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t} else if (Math.abs(ctx.G(Bf, [wf[0], -wf[1]])) >= Cf) {\n\t\t\tlet Df = [xf[1], xf[0]];\n\t\t\tif (ctx.G(Df, ca) * ctx.G(Df, cb) <= 0.0) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tthis.uf = function(vf, xf, yf, a, b, zf, Ef) {\n\t\tlet ca = ctx.f(a, vf);\n\t\tlet cb = ctx.f(b, vf);\n\n\t\tlet wf = ctx.r(xf, yf);\n\n\t\tif (zf < 0.000001)\n\t\t\treturn false;\n\n\t\tif ((ca[0] < -wf[0] && cb[0] < -wf[0])\n\t\t\t|| (ca[0] > wf[0] && cb[0] > wf[0])\n\t\t\t|| (ca[1] < -wf[1] && cb[1] < -wf[1])\n\t\t\t|| (ca[1] > wf[1] && cb[1] > wf[1]))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tlet Af = ctx.f(b, a); ctx.s(Af, Af, zf);\n\t\tlet Bf = [-Af[1], Af[0]];\n\t\tlet Cf = Math.abs(ctx.G(Bf, cb));\n\n\t\tif (Ef) {\n\t\t\tif (Math.abs(ctx.G(Bf, wf)) >= Cf) {\n\t\t\t\tlet Df = [-xf[1], xf[0]];\n\t\t\t\tif (ctx.G(Df, ca) * ctx.G(Df, cb) <= 0.0) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (Math.abs(ctx.G(Bf, [wf[0], -wf[1]])) >= Cf) {\n\t\t\t\tlet Df = [xf[1], xf[0]];\n\t\t\t\tif (ctx.G(Df, ca) * ctx.G(Df, cb) <= 0.0) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tthis.wb = function (r, x, y, z) {\n\t\tvar rgbDisp = 3 * (y * ctx.yd + x);\n\t\tvar view = ctx.zd[z];\n\n\t\tr[0] = view.getUint8(rgbDisp);\n\t\tr[1] = view.getUint8(rgbDisp + 1);\n\t\tr[2] = view.getUint8(rgbDisp + 2);\n\t}\n\n\tthis.xb = function (r, Hf) {\n\t\tif (ctx.zd == null) {\n\t\t\tctx.W(r, 128, 128, 128);\n\t\t\treturn;\n\t\t}\n\n\t\tvar scaledPosX = Hf[0] * ctx.yd;\n\t\tvar scaledPosY = Hf[1] * ctx.yd;\n\t\tvar scaledPosZ = Hf[2] * ctx.yd;\n\n\t\tvar floorX = Math.floor(scaledPosX);\n\t\tvar floorY = Math.floor(scaledPosY);\n\t\tvar floorZ = Math.floor(scaledPosZ);\n\n\t\tvar fracX = scaledPosX - floorX;\n\t\tvar fracY = scaledPosY - floorY;\n\t\tvar fracZ = scaledPosZ - floorZ;\n\n\t\tvar noiseX = ctx.vb(floorX);\n\t\tvar noiseX1 = ctx.vb(floorX + 1);\n\t\tvar noiseY = ctx.vb(floorY);\n\t\tvar noiseY1 = ctx.vb(floorY + 1);\n\t\tvar noiseZ = ctx.vb(floorZ);\n\t\tvar noiseZ1 = ctx.vb(floorZ + 1);\n\n\t\tvar value000 = [], value001 = [], value010 = [], value011 = [],\n\t\t\tvalue100 = [], value101 = [], value110 = [], value111 = [];\n\n\t\tctx.wb(value000, noiseX, noiseY, noiseZ);\n\t\tctx.wb(value001, noiseX, noiseY, noiseZ1);\n\t\tctx.wb(value010, noiseX, noiseY1, noiseZ);\n\t\tctx.wb(value011, noiseX, noiseY1, noiseZ1);\n\t\tctx.wb(value100, noiseX1, noiseY, noiseZ);\n\t\tctx.wb(value101, noiseX1, noiseY, noiseZ1);\n\t\tctx.wb(value110, noiseX1, noiseY1, noiseZ);\n\t\tctx.wb(value111, noiseX1, noiseY1, noiseZ1);\n\n\t\tvar value00 = [], value01 = [], value10 = [], value11 = [];\n\t\tctx.ab(value00, value000, value001, fracZ);\n\t\tctx.ab(value01, value010, value011, fracZ);\n\t\tctx.ab(value10, value100, value101, fracZ);\n\t\tctx.ab(value11, value110, value111, fracZ);\n\n\t\tvar value0 = [], value1 = [];\n\t\tctx.ab(value0, value00, value01, fracY);\n\t\tctx.ab(value1, value10, value11, fracY);\n\n\t\tctx.ab(r, value0, value1, fracX);\n\t}\n\n\tthis.ImageDesc = function(image, x, y, width, height) {\n\t\tthis.image = image;\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t}\n\n\tthis.RenderCall = function (startIndex, numIndices, renderStyleIndex) {\n\t this.startIndex = startIndex;\n\t this.numIndices = numIndices;\n\t this.renderStyleIndex = renderStyleIndex;\n\t}\n\n\tthis.SubRect = function (x, y, width, height) {\n\t this.x = x;\n\t this.y = y;\n\t this.width = width;\n\t this.height = height;\n\t}\n\n\tthis.Camera2D = function () {\n\t}\n\n\tthis.Camera2D.prototype.tb = function (Hf, Nd) {\n\t return true;\n\t}\n\n\tthis.Camera3D = function (/**/screenSize, /**/horizAngle) {\n\t this.Qd = ctx.r(/**/screenSize, 0.5);\n\t this.z = -(/**/screenSize[0] * 0.5) / Math.tan(ctx.ib(/**/horizAngle * 0.5));\n\t}\n\n\tthis.Camera3D.prototype./**/transform = function (/**/pos, /**/size) {\n\t if (/**/pos[2] < this.z)\n\t return false;\n\n\t var scale = -this.z / (/**/pos[2] - this.z);\n\t ctx.a(/**/pos, ctx.r(ctx.f(/**/pos, this.Qd), scale), this.Qd);\n\t ctx.q(/**/size, /**/size, scale);\n\n\t return true;\n\t}\n\n\tthis.zd = null;\n\tthis.yd = 0;\n\n\tthis.initializeNoise = function(path, onloadcallback, onfailcallback) {\n\n\t\t// Backward compatibility: if noise already initialized just callback success.\n\t\tif (this.zd != null) {\n\t\t\tif (onloadcallback) onloadcallback();\n\t\t\treturn;\n\t\t}\n\n\t\tif (path == null || path === undefined) path = this.defaultPath || \"\";\n\t\tif (!path) {\n\t\t\tif (onfailcallback) onfailcallback(new Error(\"Noise path not specified\"));\n\t\t\treturn;\n\t\t}\n\n\t\tvar url = path + \"neutrinoparticles.noise.bin\";\n\t\tvar request = new XMLHttpRequest();\n\t\trequest.open(\"GET\", url, true);\n\t\trequest.responseType = \"arraybuffer\";\n\t\trequest.ctx = this;\n\n\t\tconst fail = (err) => { if (onfailcallback) try { onfailcallback(err instanceof Error ? err : new Error(String(err))); } catch(_){} };\n\t\tconst succeed = () => { if (onloadcallback) try { onloadcallback(); } catch(_){} };\n\n\t\trequest.onerror = function(){ fail(new Error(\"Network error while loading noise file\")); };\n\t\trequest.onabort = function(){ fail(new Error(\"Request aborted while loading noise file\")); };\n\n\t\trequest.onload = function () {\n\t\t\ttry {\n\t\t\t\tif (!((request.status >= 200 && request.status < 300) || request.status === 304)) {\n\t\t\t\t\tfail(new Error(\"HTTP status \" + request.status));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar buffer = request.response;\n\t\t\t\tif (!(buffer instanceof ArrayBuffer) || buffer.byteLength < 4) {\n\t\t\t\t\tfail(new Error(\"Noise file header too small\"));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar headerView = new DataView(buffer, 0, 4);\n\t\t\t\tvar planeSize = headerView.getUint32(0, true); // Original format meaning retained\n\t\t\t\tif (!Number.isFinite(planeSize) || planeSize <= 0) {\n\t\t\t\t\tfail(new Error(\"Invalid planeSize value\"));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Historical format assumption: planeSize doubles as: sideSizePx & planeCount\n\t\t\t\t// Each plane: sideSizePx * sideSizePx pixels, RGB (3 bytes per pixel)\n\t\t\t\tvar sideSizePx = planeSize;\n\t\t\t\tvar planeCount = planeSize;\n\t\t\t\tvar bytesPerPlane = 3 * sideSizePx * sideSizePx;\n\t\t\t\tvar expectedBytes = 4 + planeCount * bytesPerPlane;\n\t\t\t\tif (buffer.byteLength < expectedBytes) {\n\t\t\t\t\tfail(new Error(\"Truncated noise file: have \" + buffer.byteLength + \" bytes, expected >= \" + expectedBytes));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar ctx = request.ctx;\n\t\t\t\tctx.zd = new Array(planeCount);\n\t\t\t\tctx.yd = sideSizePx; // side length in pixels\n\n\t\t\t\tfor (var i = 0; i < planeCount; ++i) {\n\t\t\t\t\tvar offset = 4 + i * bytesPerPlane;\n\t\t\t\t\tctx.zd[i] = new DataView(buffer, offset, bytesPerPlane); // Explicit length for safety\n\t\t\t\t}\n\n\t\t\t\tsucceed();\n\t\t\t} catch (e) {\n\t\t\t\tfail(e);\n\t\t\t}\n\t\t};\n\n\t\ttry { request.send(); } catch (e) { fail(e); }\n\t}\n\n\tthis.NoiseGenerator = function () {\n\n\t\tvar catmullRom_ = function (p0, p1, p2, p3, t) {\n\t\t\treturn 0.5 * ((2.0 * p1) + (-p0 + p2) * t + (2.0 * p0 - 5.0 * p1 + 4.0 * p2 - p3) * t * t +\n\t\t\t(-p0 + 3.0 * p1 - 3.0 * p2 + p3) * (t * t * t));\n\t\t}\n\n\t\tvar catmullRomv3_ = function (p0, p1, p2, p3, t) {\n\t\t\treturn [\n\t\t\t\tcatmullRom_(p0[0], p1[0], p2[0], p3[0], t),\n\t\t\t\tcatmullRom_(p0[1], p1[1], p2[1], p3[1], t),\n\t\t\t\tcatmullRom_(p0[2], p1[2], p2[2], p3[2], t)\n\t\t\t\t];\n\t\t}\n\n\t\tvar clamp_ = function (a, from, to) {\n\t\t\treturn (a < from) ? from : ((a > to) ? to : a);\n\t\t}\n\n\t\tvar imageSize = 64;\n\t\tvar image = [];\n\t\tvar tempBuffer = [];\n\t\tvar tausGenerator = new ctx.taus88(120); // 120 - hardcoded starting seed\n\t\tvar rand = function () { return tausGenerator.rand(); };\n\t\tvar amp = 0.7; // hardcoded amplitude of perlin zd\n\t\tvar fadeDegree = 1.2; // hardcoded fade degree of each octave\n\t\tvar prevStep = imageSize;\n\n\t\tvar step, Nd, octSize, octSize2, octMaskSize, octPixels, octZ, octY; // mix step variables\n\n\t\tvar numMixStepIterations = 0;\n\t\tvar mixStepIteration = 0;\n\n\t\tfor (var i = prevStep >>> 1; i > 0; i >>>= 1) {\n\t\t\tvar _octSize = Math.floor(imageSize / i);\n\t\t\tnumMixStepIterations += _octSize * _octSize;\n\t\t}\n\n\t\tvar States = {\n\t\t\tINITIAL_FILL: 0,\n\t\t\tMIX_STEP_INIT: 1,\n\t\t\tMIX_STEP_PROCESS: 2,\n\t\t\tSCALING: 3,\n\t\t\tDATA_VIEWS: 4,\n\t\t\tFINISHED: 5\n\t\t};\n\n\t\tvar Progress = {\n\t\t\tINIT: 0.01,\n\t\t\tMIX: 0.9,\n\t\t\tSCALING: 0.95,\n\t\t\tDATA_VIEWS: 1.0\n\t\t}\n\n\t\tvar state = States.INITIAL_FILL;\n\n\t\tthis.progress = 0.0;\n\n\t\tvar initialFill = function () {\n\t\t\tfor (var z = 0; z < imageSize; ++z) {\n\t\t\t\tvar imageZ = image[z] = [];\n\n\t\t\t\tfor (var y = 0; y < imageSize; ++y) {\n\t\t\t\t\tvar imageZY = imageZ[y] = [];\n\n\t\t\t\t\tfor (var x = 0; x < imageSize; ++x) {\n\t\t\t\t\t\tvar imageZYX = imageZY[x] = [0.0, 0.0, 0.0];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tstate = States.MIX_STEP_INIT;\n\t\t\tthis.progress = Progress.INIT;\n\t\t}\n\n\t\tvar mixStepInit = function () {\n\n\t\t\tstep = prevStep >>> 1;\n\t\t\tNd = imageSize;\n\t\t\toctSize = Math.floor(Nd / step);\n\t\t\toctSize2 = octSize * octSize;\n\t\t\toctMaskSize = Math.max(octSize - 1, 1);\n\t\t\toctPixels = octSize * octSize * octSize;\n\t\t\toctZ = 0;\n\t\t\toctY = 0;\n\n\t\t\tfor (var i = 0; i < octPixels; ++i) {\n\t\t\t\ttempBuffer[i] = [];\n\t\t\t\t// order is inverted to satisfy c++ obsolete order\n\t\t\t\ttempBuffer[i][2] = rand() * 2.0 - 1.0;\n\t\t\t\ttempBuffer[i][1] = rand() * 2.0 - 1.0;\n\t\t\t\ttempBuffer[i][0] = rand() * 2.0 - 1.0;\n\t\t\t}\n\n\t\t\tstate = States.MIX_STEP_PROCESS;\n\t\t}\n\n\t\tvar mixStepProcess = function() {\n\t\t\tfor (var octX = 0; octX < octSize; ++octX) {\n\t\t\t\tvar octZ0 = ((octZ - 1) >>> 0) & octMaskSize;\n\t\t\t\tvar octZ1 = ((octZ) >>> 0) & octMaskSize;\n\t\t\t\tvar octZ2 = ((octZ + 1) >>> 0) & octMaskSize;\n\t\t\t\tvar octZ3 = ((octZ + 2) >>> 0) & octMaskSize;\n\n\t\t\t\tvar octY0 = ((octY - 1) >>> 0) & octMaskSize;\n\t\t\t\tvar octY1 = ((octY) >>> 0) & octMaskSize;\n\t\t\t\tvar octY2 = ((octY + 1) >>> 0) & octMaskSize;\n\t\t\t\tvar octY3 = ((octY + 2) >>> 0) & octMaskSize;\n\n\t\t\t\tvar octX0 = ((octX - 1) >>> 0) & octMaskSize;\n\t\t\t\tvar octX1 = ((octX) >>> 0) & octMaskSize;\n\t\t\t\tvar octX2 = ((octX + 1) >>> 0) & octMaskSize;\n\t\t\t\tvar octX3 = ((octX + 2) >>> 0) & octMaskSize;\n\n\t\t\t\tvar values = //zyx\n\t\t\t\t[\n\t\t\t\t\t[\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\ttempBuffer[octZ0 * octSize2 + octY0 * octSize + octX0],\n\t\t\t\t\t\t\ttempBuffer[octZ0 * octSize2 + octY0 * octSize + octX1],\n\t\t\t\t\t\t\ttempBuffer[octZ0 * octSize2 + octY0 * octSize + octX2],\n\t\t\t\t\t\t\ttempBuffer[octZ0 * octSize2 + octY0 * octSize + octX3]\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\ttempBuffer[octZ0 * octSize2 + octY1 * octSize + octX0],\n\t\t\t\t\t\t\ttempBuffer[octZ0 * octSize2 + octY1 * octSize + octX1],\n\t\t\t\t\t\t\ttempBuffer[octZ0 * octSize2 + octY1 * octSize + octX2],\n\t\t\t\t\t\t\ttempBuffer[octZ0 * octSize2 + octY1 * octSize + octX3]\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\ttempBuffer[octZ0 * octSize2 + octY2 * octSize + octX0],\n\t\t\t\t\t\t\ttempBuffer[octZ0 * octSize2 + octY2 * octSize + octX1],\n\t\t\t\t\t\t\ttempBuffer[octZ0 * octSize2 + octY2 * octSize + octX2],\n\t\t\t\t\t\t\ttempBuffer[octZ0 * octSize2 + octY2 * octSize + octX3]\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\ttempBuffer[octZ0 * octSize2 + octY3 * octSize + octX0],\n\t\t\t\t\t\t\ttempBuffer[octZ0 * octSize2 + octY3 * octSize + octX1],\n\t\t\t\t\t\t\ttempBuffer[octZ0 * octSize2 + octY3 * octSize + octX2],\n\t\t\t\t\t\t\ttempBuffer[octZ0 * octSize2 + octY3 * octSize + octX3]\n\t\t\t\t\t\t]\n\t\t\t\t\t],\n\n\t\t\t\t\t[\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\ttempBuffer[octZ1 * octSize2 + octY0 * octSize + octX0],\n\t\t\t\t\t\t\ttempBuffer[octZ1 * octSize2 + octY0 * octSize + octX1],\n\t\t\t\t\t\t\ttempBuffer[octZ1 * octSize2 + octY0 * octSize + octX2],\n\t\t\t\t\t\t\ttempBuffer[octZ1 * octSize2 + octY0 * octSize + octX3]\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\ttempBuffer[octZ1 * octSize2 + octY1 * octSize + octX0],\n\t\t\t\t\t\t\ttempBuffer[octZ1 * octSize2 + octY1 * octSize + octX1],\n\t\t\t\t\t\t\ttempBuffer[octZ1 * octSize2 + octY1 * octSize + octX2],\n\t\t\t\t\t\t\ttempBuffer[octZ1 * octSize2 + octY1 * octSize + octX3]\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\ttempBuffer[octZ1 * octSize2 + octY2 * octSize + octX0],\n\t\t\t\t\t\t\ttempBuffer[octZ1 * octSize2 + octY2 * octSize + octX1],\n\t\t\t\t\t\t\ttempBuffer[octZ1 * octSize2 + octY2 * octSize + octX2],\n\t\t\t\t\t\t\ttempBuffer[octZ1 * octSize2 + octY2 * octSize + octX3]\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\ttempBuffer[octZ1 * octSize2 + octY3 * octSize + octX0],\n\t\t\t\t\t\t\ttempBuffer[octZ1 * octSize2 + octY3 * octSize + octX1],\n\t\t\t\t\t\t\ttempBuffer[octZ1 * octSize2 + octY3 * octSize + octX2],\n\t\t\t\t\t\t\ttempBuffer[octZ1 * octSize2 + octY3 * octSize + octX3]\n\t\t\t\t\t\t]\n\t\t\t\t\t],\n\n\t\t\t\t\t[\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\ttempBuffer[octZ2 * octSize2 + octY0 * octSize + octX0],\n\t\t\t\t\t\t\ttempBuffer[octZ2 * octSize2 + octY0 * octSize + octX1],\n\t\t\t\t\t\t\ttempBuffer[octZ2 * octSize2 + octY0 * octSize + octX2],\n\t\t\t\t\t\t\ttempBuffer[octZ2 * octSize2 + octY0 * octSize + octX3]\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\ttempBuffer[octZ2 * octSize2 + octY1 * octSize + octX0],\n\t\t\t\t\t\t\ttempBuffer[octZ2 * octSize2 + octY1 * octSize + octX1],\n\t\t\t\t\t\t\ttempBuffer[octZ2 * octSize2 + octY1 * octSize + octX2],\n\t\t\t\t\t\t\ttempBuffer[octZ2 * octSize2 + octY1 * octSize + octX3]\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\ttempBuffer[octZ2 * octSize2 + octY2 * octSize + octX0],\n\t\t\t\t\t\t\ttempBuffer[octZ2 * octSize2 + octY2 * octSize + octX1],\n\t\t\t\t\t\t\ttempBuffer[octZ2 * octSize2 + octY2 * octSize + octX2],\n\t\t\t\t\t\t\ttempBuffer[octZ2 * octSize2 + octY2 * octSize + octX3]\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\ttempBuffer[octZ2 * octSize2 + octY3 * octSize + octX0],\n\t\t\t\t\t\t\ttempBuffer[octZ2 * octSize2 + octY3 * octSize + octX1],\n\t\t\t\t\t\t\ttempBuffer[octZ2 * octSize2 + octY3 * octSize + octX2],\n\t\t\t\t\t\t\ttempBuffer[octZ2 * octSize2 + octY3 * octSize + octX3]\n\t\t\t\t\t\t]\n\t\t\t\t\t],\n\n\t\t\t\t\t[\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\ttempBuffer[octZ3 * octSize2 + octY0 * octSize + octX0],\n\t\t\t\t\t\t\ttempBuffer[octZ3 * octSize2 + octY0 * octSize + octX1],\n\t\t\t\t\t\t\ttempBuffer[octZ3 * octSize2 + octY0 * octSize + octX2],\n\t\t\t\t\t\t\ttempBuffer[octZ3 * octSize2 + octY0 * octSize + octX3]\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\ttempBuffer[octZ3 * octSize2 + octY1 * octSize + octX0],\n\t\t\t\t\t\t\ttempBuffer[octZ3 * octSize2 + octY1 * octSize + octX1],\n\t\t\t\t\t\t\ttempBuffer[octZ3 * octSize2 + octY1 * octSize + octX2],\n\t\t\t\t\t\t\ttempBuffer[octZ3 * octSize2 + octY1 * octSize + octX3]\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\ttempBuffer[octZ3 * octSize2 + octY2 * octSize + octX0],\n\t\t\t\t\t\t\ttempBuffer[octZ3 * octSize2 + octY2 * octSize + octX1],\n\t\t\t\t\t\t\ttempBuffer[octZ3 * octSize2 + octY2 * octSize + octX2],\n\t\t\t\t\t\t\ttempBuffer[octZ3 * octSize2 + octY2 * octSize + octX3]\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\ttempBuffer[octZ3 * octSize2 + octY3 * octSize + octX0],\n\t\t\t\t\t\t\ttempBuffer[octZ3 * octSize2 + octY3 * octSize + octX1],\n\t\t\t\t\t\t\ttempBuffer[octZ3 * octSize2 + octY3 * octSize + octX2],\n\t\t\t\t\t\t\ttempBuffer[octZ3 * octSize2 + octY3 * octSize + octX3]\n\t\t\t\t\t\t]\n\t\t\t\t\t]\n\t\t\t\t];\n\n\t\t\t\tfor (var inZ = 0; inZ < step; ++inZ) {\n\t\t\t\t\tvar interpZ = inZ / step;\n\t\t\t\t\tvar imageZ = octZ * step + inZ;\n\n\t\t\t\t\tvar valuesP = //yx\n\t\t\t\t\t[\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tcatmullRomv3_(values[0][0][0], values[1][0][0], values[2][0][0], values[3][0][0], interpZ),\n\t\t\t\t\t\t\tcatmullRomv3_(values[0][0][1], values[1][0][1], values[2][0][1], values[3][0][1], interpZ),\n\t\t\t\t\t\t\tcatmullRomv3_(values[0][0][2], values[1][0][2], values[2][0][2], values[3][0][2], interpZ),\n\t\t\t\t\t\t\tcatmullRomv3_(values[0][0][3], values[1][0][3], values[2][0][3], values[3][0][3], interpZ)\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tcatmullRomv3_(values[0][1][0], values[1][1][0], values[2][1][0], values[3][1][0], interpZ),\n\t\t\t\t\t\t\tcatmullRomv3_(values[0][1][1], values[1][1][1], values[2][1][1], values[3][1][1], interpZ),\n\t\t\t\t\t\t\tcatmullRomv3_(values[0][1][2], values[1][1][2], values[2][1][2], values[3][1][2], interpZ),\n\t\t\t\t\t\t\tcatmullRomv3_(values[0][1][3], values[1][1][3], values[2][1][3], values[3][1][3], interpZ)\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tcatmullRomv3_(values[0][2][0], values[1][2][0], values[2][2][0], values[3][2][0], interpZ),\n\t\t\t\t\t\t\tcatmullRomv3_(values[0][2][1], values[1][2][1], values[2][2][1], values[3][2][1], interpZ),\n\t\t\t\t\t\t\tcatmullRomv3_(values[0][2][2], values[1][2][2], values[2][2][2], values[3][2][2], interpZ),\n\t\t\t\t\t\t\tcatmullRomv3_(values[0][2][3], values[1][2][3], values[2][2][3], values[3][2][3], interpZ)\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tcatmullRomv3_(values[0][2][0], values[1][3][0], values[2][3][0], values[3][3][0], interpZ),\n\t\t\t\t\t\t\tcatmullRomv3_(values[0][2][1], values[1][3][1], values[2][3][1], values[3][3][1], interpZ),\n\t\t\t\t\t\t\tcatmullRomv3_(values[0][2][2], values[1][3][2], values[2][3][2], values[3][3][2], interpZ),\n\t\t\t\t\t\t\tcatmullRomv3_(values[0][2][3], values[1][3][3], values[2][3][3], values[3][3][3], interpZ)\n\t\t\t\t\t\t]\n\t\t\t\t\t];\n\n\t\t\t\t\tfor (var inY = 0; inY < step; ++inY) {\n\t\t\t\t\t\tvar interpY = inY / step;\n\t\t\t\t\t\tvar imageY = octY * step + inY;\n\n\t\t\t\t\t\tvar value0 = catmullRomv3_(valuesP[0][0], valuesP[1][0], valuesP[2][0],\n\t\t\t\t\t\t\tvaluesP[3][0], interpY);\n\t\t\t\t\t\tvar value1 = catmullRomv3_(valuesP[0][1], valuesP[1][1], valuesP[2][1],\n\t\t\t\t\t\t\tvaluesP[3][1], interpY);\n\t\t\t\t\t\tvar value2 = catmullRomv3_(valuesP[0][2], valuesP[1][2], valuesP[2][2],\n\t\t\t\t\t\t\tvaluesP[3][2], interpY);\n\t\t\t\t\t\tvar value3 = catmullRomv3_(valuesP[0][3], valuesP[1][3], valuesP[2][3],\n\t\t\t\t\t\t\tvaluesP[3][3], interpY);\n\n\t\t\t\t\t\tfor (var inX = 0; inX < step; ++inX) {\n\t\t\t\t\t\t\tvar interpX = inX / step;\n\t\t\t\t\t\t\tvar imageX = octX * step + inX;\n\n\t\t\t\t\t\t\tvar octResult = catmullRomv3_(value0, value1, value2, value3, interpX);\n\t\t\t\t\t\t\tvar result = ctx.d(ctx.v(octResult, amp), image[imageZ][imageY][imageX]);\n\t\t\t\t\t\t\tvar clampedResult = [\n\t\t\t\t\t\t\t\tclamp_(result[0], -1.0, 1.0),\n\t\t\t\t\t\t\t\tclamp_(result[1], -1.0, 1.0),\n\t\t\t\t\t\t\t\tclamp_(result[2], -1.0, 1.0)\n\t\t\t\t\t\t\t];\n\n\t\t\t\t\t\t\timage[imageZ][imageY][imageX] = clampedResult;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tmixStepIteration++;\n\t\t\tthis.progress = Progress.INIT + (Progress.MIX - Progress.INIT) * (mixStepIteration / numMixStepIterations);\n\n\t\t\toctY++;\n\t\t\tif (octY >= octSize) {\n\t\t\t\toctY = 0;\n\t\t\t\toctZ++;\n\t\t\t\tif (octZ >= octSize) {\n\t\t\t\t\toctZ = 0;\n\n\t\t\t\t\tprevStep = step;\n\t\t\t\t\tamp = Math.pow(amp, fadeDegree);\n\n\t\t\t\t\tif (prevStep <= 1) {\n\t\t\t\t\t\tstate = States.SCALING;\n\t\t\t\t\t\tthis.progress = Progress.MIX;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstate = States.MIX_STEP_INIT;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// hardcoded scaling of the image to make it more symethric\n\t\tvar scaling = function() {\n\t\t\tvar low = [-1.0, -1.0, -1.0];\n\t\t\tvar high = [0.5, 0.7, 1.0];\n\n\t\t\tfor (var z = 0; z < imageSize; ++z) {\n\t\t\t\tvar imageZ = image[z];\n\n\t\t\t\tfor (var y = 0; y < imageSize; ++y) {\n\t\t\t\t\tvar imageZY = imageZ[y];\n\n\t\t\t\t\tfor (var x = 0; x < imageSize; ++x) {\n\t\t\t\t\t\tvar imageZYX = imageZY[x];\n\t\t\t\t\t\timageZYX[0] = ctx.X(low[0], high[0], imageZYX[0] * 0.5 + 0.5);\n\t\t\t\t\t\timageZYX[1] = ctx.X(low[1], high[1], imageZYX[1] * 0.5 + 0.5);\n\t\t\t\t\t\timageZYX[2] = ctx.X(low[2], high[2], imageZYX[2] * 0.5 + 0.5);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tstate = States.DATA_VIEWS;\n\t\t\tthis.progress = Progress.SCALING;\n\t\t}\n\n\t\t// filling zd DataViews\n\t\tvar dataViews = function() {\n\t\t\tctx.yd = imageSize;\n\t\t\tctx.zd = [];\n\n\t\t\tfor (var z = 0; z < imageSize; ++z) {\n\t\t\t\tvar imageZ = image[z];\n\n\t\t\t\tvar plane = new ArrayBuffer(imageSize * imageSize * 3);\n\t\t\t\tvar view = new DataView(plane);\n\n\t\t\t\tfor (var y = 0; y < imageSize; ++y) {\n\t\t\t\t\tvar imageZY = imageZ[y];\n\n\t\t\t\t\tfor (var x = 0; x < imageSize; ++x) {\n\t\t\t\t\t\tvar imageZYX = imageZY[x];\n\n\t\t\t\t\t\tvar rgbOffset = (y * imageSize + x) * 3;\n\t\t\t\t\t\tview.setUint8(rgbOffset + 0,\n\t\t\t\t\t\t\tMath.floor(clamp_(256.0 * (imageZYX[0] * 0.5 + 0.5) - 0.5, 0.0, 255.0)));\n\t\t\t\t\t\tview.setUint8(rgbOffset + 1,\n\t\t\t\t\t\t\tMath.floor(clamp_(256.0 * (imageZYX[1] * 0.5 + 0.5) - 0.5, 0.0, 255.0)));\n\t\t\t\t\t\tview.setUint8(rgbOffset + 2,\n\t\t\t\t\t\t\tMath.floor(clamp_(256.0 * (imageZYX[2] * 0.5 + 0.5) - 0.5, 0.0, 255.0)));\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tctx.zd[z] = view;\n\t\t\t}\n\n\t\t\tstate = States.FINISHED;\n\t\t\tthis.progress = Progress.DATA_VIEWS;\n\t\t}\n\n\t\tthis.step = function() {\n\t\t\tswitch (state) {\n\t\t\t\tcase States.INITIAL_FILL: initialFill.call(this); break;\n\t\t\t\tcase States.MIX_STEP_INIT: mixStepInit.call(this); break;\n\t\t\t\tcase States.MIX_STEP_PROCESS: mixStepProcess.call(this); break;\n\t\t\t\tcase States.SCALING: scaling.call(this); break;\n\t\t\t\tcase States.DATA_VIEWS: dataViews.call(this); break;\n\t\t\t}\n\n\t\t\treturn state == States.FINISHED;\n\t\t}\n\t}\n\n\t// Lazy-create offscreen canvas only if DOM available (allows Node.js tests)\n\tif (typeof document !== 'undefined' && document.createElement) {\n\t\tthis.cf = document.createElement('canvas');\n\t\tthis.cf.width = 0;\n\t\tthis.cf.height = 0;\n\t\tthis.bf = this.cf.getContext('2d');\n\t} else {\n\t\tthis.cf = { width:0, height:0 };\n\t\tthis.bf = null;\n\t}\n\n\tthis.af = function(minWidth, minHeight) {\n\t\tif (this.cf.width < minWidth || this.cf.height < minHeight) {\n\t\t\tthis.cf.width = minWidth;\n\t\t\tthis.cf.height = minHeight;\n\t\t\tthis.bf = this.cf.getContext('2d');\n\t\t}\n\t}\n\n\tthis.effects = [];\n\n\tthis.loadEffect = function(effectFilePath, onSuccessFunc, onFailFunc) {\n\n\t\tif (this.effects[effectFilePath] != undefined) {\n\n\t\t\tvar effectModel = this.effects[effectFilePath];\n\n\t\t\tif (effectModel instanceof Array) {\n\t\t\t\teffectModel[effectModel.length] = [onSuccessFunc, onFailFunc];\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tonSuccessFunc(effectModel);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.effects[effectFilePath] = [[onSuccessFunc, onFailFunc]];\n\n\t\tvar request = new XMLHttpRequest();\n\t\trequest.open(\"GET\", effectFilePath, true);\n\t\trequest.responseType = \"text\";\n\t\trequest.ctx = this;\n\t\trequest.onreadystatechange = function () {\n\t\t\tif (request.readyState == 4) {\n\t\t\t\tvar callbacks = this.ctx.effects[effectFilePath];\n\n\t\t\t\tif ((request.status >= 200 && request.status < 300) || request.status == 304) {\n\n\t\t\t\t\tvar evalText = \"(function(ctx) {\\n\" +\n\t\t\t\t\t\trequest.responseText +\n\t\t\t\t\t\t\"\\nreturn new NeutrinoEffect(ctx);\\n})(this.ctx);\";\n\t\t\t\t\tvar effectModel = eval(evalText);\n\t\t\t\t\tthis.ctx.effects[effectFilePath] = effectModel;\n\n\t\t\t\t\tcallbacks.forEach(function(callback) {\n\t\t\t\t\t\tcallback[0](effectModel);\n\t\t\t\t\t});\n\n\t\t\t\t} else {\n\t\t\t\t\tcallbacks.forEach(function(callback) {\n\t\t\t\t\t\tcallback[1]();\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\trequest.send();\n\t}\n\n\tthis.removeEffect = function(effectFilePath) {\n\t\tdelete this.effects[effectFilePath];\n\t}\n}\n"],"names":["Context","ctx","equalv3_","a","b","equalq_","r","y","s","z","c","d","C","D","addq","addq_","e","f","A","B","nf","of","g","h","E","F","rf","sf","i","j","k","l","m","n","o","p","H","dotq_","q","t","u","v","w","x","G","I","ax","ay","az","bx","by","bz","J","K","Math","sqrt","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","ab","bb","slerpq","cosTheta","negq","Number","EPSILON","Md","acos_","mulqscalar","mulqscalar_","sin_","slerpq_","acos","sin","cos_","cos","taus88","seed","value0","value1","value2","s0","rand","engine","cb","radius","randv2gen","random","gen","PI","db","randv3gen","theta","sqrtInvZ2","yb","Nd","dispx","dispy","eb","fb","gb","hb","negq_","ib","degrees","jb","radians","Ae","value","ob","x2","y2","z2","xy","xz","yz","wz","wy","wx","pb","tr","axes2quat","qb","ha","axisangle2quat","axisangle2quat_","rb","qx","qy","qz","qw","ix","iy","iz","iw","sb","qax","qay","qaz","qaw","qbx","qby","qbz","qbw","mulq_","inverseq_","quat_","tb","Hf","degree","scale","rad","ub","vb","val","floor","yd","colorCompToHex_","toString","ff","rgb","tf","vf","xf","yf","zf","ca","wf","Af","Bf","Cf","abs","Df","uf","Ef","wb","rgbDisp","view","zd","getUint8","xb","scaledPosX","scaledPosY","scaledPosZ","floorX","floorY","floorZ","fracX","fracY","fracZ","noiseX","noiseX1","noiseY","noiseY1","noiseZ","noiseZ1","value000","value001","value010","value011","value100","value101","value110","value111","value00","value01","value10","value11","ImageDesc","image","width","height","RenderCall","startIndex","numIndices","renderStyleIndex","SubRect","Camera2D","prototype","Camera3D","screenSize","horizAngle","Qd","tan","transform","pos","size","initializeNoise","path","onloadcallback","onfailcallback","undefined","defaultPath","Error","url","request","XMLHttpRequest","open","responseType","fail","err","String","_","succeed","onerror","onabort","onload","status","buffer","response","ArrayBuffer","byteLength","headerView","DataView","planeSize","getUint32","isFinite","sideSizePx","planeCount","bytesPerPlane","expectedBytes","Array","offset","send","NoiseGenerator","catmullRom_","p0","p1","p2","p3","catmullRomv3_","clamp_","from","to","imageSize","tempBuffer","tausGenerator","amp","fadeDegree","prevStep","step","octSize","octSize2","octMaskSize","octPixels","octZ","octY","numMixStepIterations","mixStepIteration","_octSize","States","INITIAL_FILL","MIX_STEP_INIT","MIX_STEP_PROCESS","SCALING","DATA_VIEWS","FINISHED","Progress","INIT","MIX","state","progress","initialFill","imageZ","imageZY","imageZYX","mixStepInit","max","mixStepProcess","octX","octZ0","octZ1","octZ2","octZ3","octY0","octY1","octY2","octY3","octX0","octX1","octX2","octX3","values","inZ","interpZ","valuesP","inY","interpY","imageY","value3","inX","interpX","imageX","octResult","result","clampedResult","pow","scaling","low","high","dataViews","plane","rgbOffset","setUint8","call","document","createElement","cf","bf","getContext","af","minWidth","minHeight","effects","loadEffect","effectFilePath","onSuccessFunc","onFailFunc","effectModel","length","onreadystatechange","readyState","callbacks","evalText","responseText","eval","forEach","callback","removeEffect"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neutrinoparticles/js-v1.0",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "description": "Javascript runtimes for neutrinoparticles",
5
5
  "main": "dist/neutrinoparticles.js-v1.0.umd.js",
6
6
  "keywords": [
@@ -32,6 +32,17 @@
32
32
  "rollup-plugin-commonjs": "^10.1.0",
33
33
  "rollup-plugin-node-resolve": "^5.2.0"
34
34
  },
35
+ "babel": {
36
+ "presets": [
37
+ "@babel/preset-env"
38
+ ],
39
+ "retainLines": true
40
+ },
41
+ "files": [
42
+ "bin",
43
+ "dist",
44
+ "CHANGELOG.md"
45
+ ],
35
46
  "scripts": {
36
47
  "clean": "./node_modules/.bin/rimraf ./dist",
37
48
  "build": "rollup -c -m",
@@ -44,18 +55,6 @@
44
55
  "docs": "",
45
56
  "publish:patch": "npm whoami && npm run cleanbuild && VERSION=$(npm version patch) && grep -q $VERSION CHANGES.md && npm publish",
46
57
  "publish:minor": "npm whoami && npm run cleanbuild && VERSION=$(npm version minor) && grep -q $VERSION CHANGES.md && npm publish",
47
- "publish:major": "npm whoami && npm run cleanbuild && VERSION=$(npm version major) && grep -q $VERSION CHANGES.md && npm publish",
48
- "postpublish": "git push && git push --tags"
49
- },
50
- "babel": {
51
- "presets": [
52
- "@babel/preset-env"
53
- ],
54
- "retainLines": true
55
- },
56
- "files": [
57
- "bin",
58
- "dist",
59
- "CHANGELOG.md"
60
- ]
61
- }
58
+ "publish:major": "npm whoami && npm run cleanbuild && VERSION=$(npm version major) && grep -q $VERSION CHANGES.md && npm publish"
59
+ }
60
+ }