@woosh/meep-engine 2.108.0 → 2.108.3
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/build/bundle-worker-terrain.js +1 -1
- package/build/meep.cjs +650 -308
- package/build/meep.min.js +1 -1
- package/build/meep.module.js +650 -308
- package/editor/tools/paint/TerrainHeightPaintTool.js +5 -5
- package/package.json +1 -1
- package/src/core/binary/float_to_uint8.d.ts +7 -0
- package/src/core/binary/float_to_uint8.d.ts.map +1 -0
- package/src/core/binary/{float2uint8.js → float_to_uint8.js} +1 -1
- package/src/core/binary/uint8_to_float.d.ts +7 -0
- package/src/core/binary/uint8_to_float.d.ts.map +1 -0
- package/src/core/binary/{uint82float.js → uint8_to_float.js} +1 -1
- package/src/core/binary/uint8_to_float.spec.d.ts +2 -0
- package/src/core/binary/uint8_to_float.spec.d.ts.map +1 -0
- package/src/core/binary/uint8_to_float.spec.js +7 -0
- package/src/core/bvh2/binary/2/BinaryUint32BVH.d.ts +6 -0
- package/src/core/bvh2/binary/2/BinaryUint32BVH.d.ts.map +1 -1
- package/src/core/bvh2/binary/2/BinaryUint32BVH.js +15 -3
- package/src/core/bvh2/bvh3/build_triangle_morton_codes.js +3 -3
- package/src/core/bvh2/bvh3/ebvh_build_for_geometry_morton.d.ts.map +1 -1
- package/src/core/bvh2/bvh3/ebvh_build_for_geometry_morton.js +25 -14
- package/src/core/codegen/codeToBlob.d.ts +8 -0
- package/src/core/codegen/codeToBlob.d.ts.map +1 -0
- package/src/core/codegen/codeToBlob.js +36 -0
- package/src/core/codegen/codeToURL.d.ts +8 -0
- package/src/core/codegen/codeToURL.d.ts.map +1 -0
- package/src/core/codegen/codeToURL.js +22 -0
- package/src/core/collection/array/arrayQuickSort.d.ts +0 -9
- package/src/core/collection/array/arrayQuickSort.d.ts.map +1 -1
- package/src/core/collection/array/arrayQuickSort.js +0 -73
- package/src/core/collection/array/array_quick_sort_by_comparator.d.ts +10 -0
- package/src/core/collection/array/array_quick_sort_by_comparator.d.ts.map +1 -0
- package/src/core/collection/array/array_quick_sort_by_comparator.js +75 -0
- package/src/core/collection/array/array_quick_sort_by_lookup.d.ts +8 -0
- package/src/core/collection/array/array_quick_sort_by_lookup.d.ts.map +1 -0
- package/src/core/collection/array/array_quick_sort_by_lookup.js +78 -0
- package/src/core/collection/array/array_shuffle.d.ts +8 -0
- package/src/core/collection/array/array_shuffle.d.ts.map +1 -0
- package/src/core/collection/array/array_shuffle.js +22 -0
- package/src/core/collection/array/array_shuffle.spec.d.ts +2 -0
- package/src/core/collection/array/array_shuffle.spec.d.ts.map +1 -0
- package/src/core/collection/array/{randomizeArrayElementOrder.spec.js → array_shuffle.spec.js} +4 -4
- package/src/core/collection/array/iterator/ArrayIteratorRandom.js +2 -2
- package/src/core/collection/array/randomMultipleFromArray.js +2 -2
- package/src/core/color/Color.js +9 -9
- package/src/core/color/hsv/hsv2rgb.js +4 -4
- package/src/core/color/rgb2uint24.js +4 -4
- package/src/core/color/sRGB/linear_to_sRGB.d.ts +1 -0
- package/src/core/color/sRGB/linear_to_sRGB.d.ts.map +1 -1
- package/src/core/color/sRGB/linear_to_sRGB.js +4 -4
- package/src/core/geom/2d/triangle2d_get_barycentric.d.ts +15 -0
- package/src/core/geom/2d/triangle2d_get_barycentric.d.ts.map +1 -0
- package/src/core/geom/2d/triangle2d_get_barycentric.js +48 -0
- package/src/core/geom/3d/aabb/AABB3.d.ts.map +1 -1
- package/src/core/geom/3d/aabb/AABB3.js +4 -1
- package/src/core/geom/3d/aabb/aabb3_from_v3_array.d.ts.map +1 -1
- package/src/core/geom/3d/aabb/aabb3_from_v3_array.js +2 -7
- package/src/core/geom/3d/aabb/aabb3_intersects_ray.js +3 -3
- package/src/core/geom/3d/aabb3_compute_from_triangle.d.ts +11 -0
- package/src/core/geom/3d/aabb3_compute_from_triangle.d.ts.map +1 -0
- package/src/core/geom/3d/aabb3_compute_from_triangle.js +43 -0
- package/src/core/geom/3d/shape/UnitSphereShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/UnitSphereShape3D.js +14 -14
- package/src/core/geom/3d/sphere/harmonics/SH3_COEFFICIENTS.d.ts.map +1 -1
- package/src/core/geom/3d/sphere/harmonics/SH3_COEFFICIENTS.js +2 -0
- package/src/core/geom/3d/sphere/harmonics/sh3_dering_optimize_positive.js +5 -5
- package/src/core/geom/3d/sphere/harmonics/sh_compute_K.d.ts +9 -0
- package/src/core/geom/3d/sphere/harmonics/sh_compute_K.d.ts.map +1 -0
- package/src/core/geom/3d/sphere/harmonics/sh_compute_K.js +17 -0
- package/src/core/geom/3d/tetrahedra/TetrahedralMesh.d.ts +6 -3
- package/src/core/geom/3d/tetrahedra/TetrahedralMesh.d.ts.map +1 -1
- package/src/core/geom/3d/tetrahedra/TetrahedralMesh.js +56 -18
- package/src/core/geom/3d/tetrahedra/delaunay/tetrahedral_mesh_walk_towards_containing_tetrahedron.d.ts +1 -1
- package/src/core/geom/3d/tetrahedra/delaunay/tetrahedral_mesh_walk_towards_containing_tetrahedron.d.ts.map +1 -1
- package/src/core/geom/3d/tetrahedra/delaunay/tetrahedral_mesh_walk_towards_containing_tetrahedron.js +11 -4
- package/src/core/geom/3d/tetrahedra/{GetDepthForTetrahedronProbe.glsl → triangle/GetDepthForTetrahedronProbe.glsl} +17 -10
- package/src/core/geom/3d/tetrahedra/triangle/prototype.d.ts +2 -0
- package/src/core/geom/3d/tetrahedra/triangle/prototype.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/triangle/prototype.js +128 -0
- package/src/core/geom/3d/tetrahedra/triangle/trace_triangular_depth_map.d.ts +13 -0
- package/src/core/geom/3d/tetrahedra/triangle/trace_triangular_depth_map.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/triangle/trace_triangular_depth_map.js +120 -0
- package/src/core/geom/3d/tetrahedra/triangle/triangle_encode_rasterized_depth.d.ts +3 -0
- package/src/core/geom/3d/tetrahedra/triangle/triangle_encode_rasterized_depth.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/triangle/triangle_encode_rasterized_depth.js +106 -0
- package/src/core/geom/Vector3.js +3 -3
- package/src/core/geom/random/randomPointInSphere.d.ts +1 -1
- package/src/core/geom/random/randomPointInSphere.js +2 -2
- package/src/core/geom/random/randomPointOnSphere.d.ts +3 -3
- package/src/core/geom/random/randomPointOnSphere.d.ts.map +1 -1
- package/src/core/geom/random/randomPointOnSphere.js +5 -9
- package/src/core/math/factorial.d.ts +7 -0
- package/src/core/math/factorial.d.ts.map +1 -0
- package/src/core/math/factorial.js +15 -0
- package/src/core/math/factorial.spec.d.ts +2 -0
- package/src/core/math/factorial.spec.d.ts.map +1 -0
- package/src/core/math/factorial.spec.js +9 -0
- package/src/core/model/DebouncedObservedBoolean.d.ts +1 -1
- package/src/core/model/DebouncedObservedBoolean.d.ts.map +1 -1
- package/src/core/model/node-graph/node/NodeDescription.d.ts +6 -4
- package/src/core/process/task/util/randomCountTask.js +3 -3
- package/src/core/process/worker/WorkerBuilder.d.ts.map +1 -1
- package/src/core/process/worker/WorkerBuilder.js +5 -35
- package/src/engine/EngineHarness.d.ts.map +1 -1
- package/src/engine/EngineHarness.js +7 -1
- package/src/engine/asset/loaders/ArrayBufferLoader.d.ts.map +1 -1
- package/src/engine/asset/loaders/ArrayBufferLoader.js +17 -10
- package/src/engine/asset/loaders/material/TextureAttachmensByMaterialType.d.ts.map +1 -1
- package/src/engine/asset/loaders/material/TextureAttachmensByMaterialType.js +3 -0
- package/src/engine/asset/loaders/material/computeTextureEquality.d.ts.map +1 -1
- package/src/engine/asset/loaders/material/computeTextureEquality.js +8 -1
- package/src/engine/ecs/terrain/overlay/TerrainOverlay.js +4 -4
- package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.d.ts.map +1 -1
- package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.js +4 -0
- package/src/engine/graphics/ecs/mesh-v2/render/adapters/AbstractRenderAdapter.d.ts.map +1 -1
- package/src/engine/graphics/ecs/mesh-v2/render/adapters/AbstractRenderAdapter.js +3 -1
- package/src/engine/graphics/ecs/sprite/SpriteSystemPE.d.ts.map +1 -1
- package/src/engine/graphics/ecs/sprite/SpriteSystemPE.js +7 -7
- package/src/engine/graphics/filter/sampler2d_flipY_in_place.d.ts +8 -0
- package/src/engine/graphics/filter/sampler2d_flipY_in_place.d.ts.map +1 -0
- package/src/engine/graphics/filter/{FlipArrayInPlace.js → sampler2d_flipY_in_place.js} +1 -1
- package/src/engine/graphics/geometry/bvh/buffered/bvh32_set_leaf_from_triangle.d.ts.map +1 -1
- package/src/engine/graphics/geometry/bvh/buffered/bvh32_set_leaf_from_triangle.js +5 -27
- package/src/engine/graphics/impostors/octahedral/bake/prepare_bake_material.js +3 -3
- package/src/engine/graphics/render/Lines.d.ts.map +1 -1
- package/src/engine/graphics/render/Lines.js +10 -2
- package/src/engine/graphics/sh3/SH3VisualisationMaterial.d.ts.map +1 -1
- package/src/engine/graphics/sh3/SH3VisualisationMaterial.js +9 -6
- package/src/engine/graphics/sh3/gi/material/MaterialTransformer.d.ts +24 -0
- package/src/engine/graphics/sh3/gi/material/MaterialTransformer.d.ts.map +1 -0
- package/src/engine/graphics/sh3/gi/material/MaterialTransformer.js +293 -0
- package/src/engine/graphics/sh3/gi/material/build_fragment_shader.d.ts +6 -0
- package/src/engine/graphics/sh3/gi/material/build_fragment_shader.d.ts.map +1 -0
- package/src/engine/graphics/sh3/gi/material/build_fragment_shader.js +71 -0
- package/src/engine/graphics/sh3/gi/material/build_vertex_shader.d.ts +6 -0
- package/src/engine/graphics/sh3/gi/material/build_vertex_shader.d.ts.map +1 -0
- package/src/engine/graphics/sh3/gi/material/build_vertex_shader.js +256 -0
- package/src/engine/graphics/sh3/gi/tetrahedral_mesh_to_texture.js +4 -4
- package/src/engine/graphics/sh3/lpv/LightProbeVolume.d.ts +3 -1
- package/src/engine/graphics/sh3/lpv/LightProbeVolume.d.ts.map +1 -1
- package/src/engine/graphics/sh3/lpv/LightProbeVolume.js +12 -1
- package/src/engine/graphics/sh3/lpv/PathTracerProbeRenderer.d.ts.map +1 -1
- package/src/engine/graphics/sh3/lpv/PathTracerProbeRenderer.js +4 -5
- package/src/engine/graphics/sh3/lpv/build_probes_for_scene.d.ts +2 -1
- package/src/engine/graphics/sh3/lpv/build_probes_for_scene.d.ts.map +1 -1
- package/src/engine/graphics/sh3/lpv/build_probes_for_scene.js +6 -6
- package/src/engine/graphics/sh3/lpv/probe_volume_to_textures.d.ts +8 -0
- package/src/engine/graphics/sh3/lpv/probe_volume_to_textures.d.ts.map +1 -1
- package/src/engine/graphics/sh3/lpv/probe_volume_to_textures.js +3 -2
- package/src/engine/graphics/sh3/path_tracer/PathTracedScene.d.ts.map +1 -1
- package/src/engine/graphics/sh3/path_tracer/PathTracedScene.js +9 -4
- package/src/engine/graphics/sh3/path_tracer/PathTracer.d.ts +3 -3
- package/src/engine/graphics/sh3/path_tracer/PathTracer.d.ts.map +1 -1
- package/src/engine/graphics/sh3/path_tracer/PathTracer.js +2 -2
- package/src/engine/graphics/sh3/path_tracer/compute_triangle_group_aabb3.d.ts +2 -2
- package/src/engine/graphics/sh3/path_tracer/compute_triangle_group_aabb3.d.ts.map +1 -1
- package/src/engine/graphics/sh3/path_tracer/compute_triangle_group_aabb3.js +18 -8
- package/src/engine/graphics/sh3/path_tracer/prototypePathTracer.js +14 -6
- package/src/engine/graphics/sh3/path_tracer/sampling/generate_stratified_samples.d.ts +10 -0
- package/src/engine/graphics/sh3/path_tracer/sampling/generate_stratified_samples.d.ts.map +1 -0
- package/src/engine/graphics/sh3/path_tracer/sampling/generate_stratified_samples.js +20 -0
- package/src/engine/graphics/sh3/path_tracer/sampling/generate_stratified_samples_2d.d.ts +10 -0
- package/src/engine/graphics/sh3/path_tracer/sampling/generate_stratified_samples_2d.d.ts.map +1 -0
- package/src/engine/graphics/sh3/path_tracer/sampling/generate_stratified_samples_2d.js +31 -0
- package/src/engine/graphics/sh3/path_tracer/sampling/make_stratified_sample.d.ts +9 -0
- package/src/engine/graphics/sh3/path_tracer/sampling/make_stratified_sample.d.ts.map +1 -0
- package/src/engine/graphics/sh3/path_tracer/sampling/make_stratified_sample.js +21 -0
- package/src/engine/graphics/sh3/path_tracer/texture/sample_material.js +1 -1
- package/src/engine/graphics/sh3/path_tracer/texture/sample_texture.d.ts.map +1 -1
- package/src/engine/graphics/sh3/path_tracer/texture/sample_texture.js +2 -3
- package/src/engine/graphics/sh3/path_tracer/vec3_uint8_to_float.js +4 -4
- package/src/engine/graphics/sh3/prototypeSH3Probe.js +116 -19
- package/src/engine/graphics/texture/AttributeDataTexture.d.ts.map +1 -1
- package/src/engine/graphics/texture/AttributeDataTexture.js +8 -2
- package/src/engine/graphics/texture/computeThreeTextureFormat.js +2 -1
- package/src/engine/graphics/texture/computeThreeTextureFormatFromDataType.d.ts +7 -0
- package/src/engine/graphics/texture/computeThreeTextureFormatFromDataType.d.ts.map +1 -0
- package/src/engine/graphics/texture/computeThreeTextureFormatFromDataType.js +13 -0
- package/src/engine/graphics/texture/numericTypeFromBinaryDataType.d.ts +9 -0
- package/src/engine/graphics/texture/numericTypeFromBinaryDataType.d.ts.map +1 -0
- package/src/engine/graphics/texture/numericTypeFromBinaryDataType.js +31 -0
- package/src/engine/graphics/texture/sampler/Sampler2D.d.ts.map +1 -1
- package/src/engine/graphics/texture/sampler/Sampler2D.js +4 -4
- package/src/engine/graphics/texture/sampler/convertTexture2Sampler2D.d.ts.map +1 -1
- package/src/engine/graphics/texture/sampler/convertTexture2Sampler2D.js +47 -19
- package/src/engine/graphics/texture/sampler/debug/prototypeSamplerFiltering.js +5 -33
- package/src/engine/graphics/texture/sampler/sampler2d_copy_rectangle.d.ts +11 -0
- package/src/engine/graphics/texture/sampler/sampler2d_copy_rectangle.d.ts.map +1 -0
- package/src/engine/graphics/texture/sampler/sampler2d_copy_rectangle.js +41 -0
- package/src/engine/graphics/texture/virtual/VirtualTextureUsage.d.ts +0 -4
- package/src/engine/graphics/texture/virtual/VirtualTextureUsage.d.ts.map +1 -1
- package/src/engine/graphics/texture/virtual/VirtualTextureUsage.js +19 -30
- package/src/engine/network/convertPathToURL.d.ts +3 -1
- package/src/engine/network/convertPathToURL.d.ts.map +1 -1
- package/src/engine/network/convertPathToURL.js +68 -51
- package/src/engine/physics/fluid/SliceVisualiser.d.ts.map +1 -1
- package/src/engine/physics/fluid/SliceVisualiser.js +4 -4
- package/src/generation/filtering/numeric/CellFilterCache.d.ts.map +1 -1
- package/src/generation/filtering/numeric/CellFilterCache.js +1 -0
- package/src/core/binary/float2uint8.d.ts +0 -7
- package/src/core/binary/float2uint8.d.ts.map +0 -1
- package/src/core/binary/uint82float.d.ts +0 -7
- package/src/core/binary/uint82float.d.ts.map +0 -1
- package/src/core/binary/uint82float.spec.d.ts +0 -2
- package/src/core/binary/uint82float.spec.d.ts.map +0 -1
- package/src/core/binary/uint82float.spec.js +0 -7
- package/src/core/collection/array/randomizeArrayElementOrder.d.ts +0 -8
- package/src/core/collection/array/randomizeArrayElementOrder.d.ts.map +0 -1
- package/src/core/collection/array/randomizeArrayElementOrder.js +0 -24
- package/src/core/collection/array/randomizeArrayElementOrder.spec.d.ts +0 -2
- package/src/core/collection/array/randomizeArrayElementOrder.spec.d.ts.map +0 -1
- package/src/engine/graphics/filter/FlipArrayInPlace.d.ts +0 -8
- package/src/engine/graphics/filter/FlipArrayInPlace.d.ts.map +0 -1
- package/src/engine/graphics/sh3/path_tracer/texture/SoftwareTextureCache.d.ts +0 -3
- package/src/engine/graphics/sh3/path_tracer/texture/SoftwareTextureCache.d.ts.map +0 -1
- package/src/engine/graphics/sh3/path_tracer/texture/SoftwareTextureCache.js +0 -3
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { randomIntegerBetween } from "../../math/random/randomIntegerBetween.js";
|
|
2
|
+
import { array_swap_one } from "./array_swap_one.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Randomly re-orders items in-place
|
|
6
|
+
* @template T
|
|
7
|
+
* @param {function} random
|
|
8
|
+
* @param {T[]} array
|
|
9
|
+
*/
|
|
10
|
+
export function array_shuffle(random, array) {
|
|
11
|
+
const n = array.length;
|
|
12
|
+
|
|
13
|
+
for (let source_index = 0; source_index < n; source_index++) {
|
|
14
|
+
const target_index = randomIntegerBetween(random, 0, n - (source_index + 1));
|
|
15
|
+
|
|
16
|
+
if (target_index === source_index) {
|
|
17
|
+
continue;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
array_swap_one(array, source_index, target_index);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"array_shuffle.spec.d.ts","sourceRoot":"","sources":["../../../../../src/core/collection/array/array_shuffle.spec.js"],"names":[],"mappings":""}
|
package/src/core/collection/array/{randomizeArrayElementOrder.spec.js → array_shuffle.spec.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { array_shuffle } from "./array_shuffle.js";
|
|
2
2
|
|
|
3
3
|
test("sanity", () => {
|
|
4
4
|
|
|
@@ -6,19 +6,19 @@ test("sanity", () => {
|
|
|
6
6
|
|
|
7
7
|
const a = [];
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
array_shuffle(random, a);
|
|
10
10
|
|
|
11
11
|
expect(a).toEqual([]);
|
|
12
12
|
|
|
13
13
|
const b = [1];
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
array_shuffle(random, b);
|
|
16
16
|
|
|
17
17
|
expect(b).toEqual([1]);
|
|
18
18
|
|
|
19
19
|
const c = [1, 2, 3];
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
array_shuffle(random, c);
|
|
22
22
|
|
|
23
23
|
expect(c.length).toBe(3);
|
|
24
24
|
expect(c).toContain(1);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { seededRandom } from "../../../math/random/seededRandom.js";
|
|
2
|
-
import {
|
|
2
|
+
import { array_shuffle } from "../array_shuffle.js";
|
|
3
3
|
import { AbstractArrayIterator } from "./AbstractArrayIterator.js";
|
|
4
4
|
|
|
5
5
|
export class ArrayIteratorRandom extends AbstractArrayIterator {
|
|
@@ -29,7 +29,7 @@ export class ArrayIteratorRandom extends AbstractArrayIterator {
|
|
|
29
29
|
this.__sequence[i] = i;
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
array_shuffle(this.__random, this.__sequence);
|
|
33
33
|
|
|
34
34
|
this.__i = 0;
|
|
35
35
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { randomizeArrayElementOrder } from "./randomizeArrayElementOrder.js";
|
|
2
1
|
import { min2 } from "../../math/min2.js";
|
|
2
|
+
import { array_shuffle } from "./array_shuffle.js";
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Pick multiple random items from an array
|
|
@@ -20,7 +20,7 @@ export function randomMultipleFromArray(random, source, target, count) {
|
|
|
20
20
|
order[i] = i;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
array_shuffle(random, order);
|
|
24
24
|
|
|
25
25
|
const target_length = min2(source_length, count);
|
|
26
26
|
|
package/src/core/color/Color.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { assert } from "../assert.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { float_to_uint8 } from "../binary/float_to_uint8.js";
|
|
3
|
+
import { uint8_to_float } from "../binary/uint8_to_float.js";
|
|
4
4
|
import Signal from "../events/signal/Signal.js";
|
|
5
5
|
import { clamp01 } from "../math/clamp01.js";
|
|
6
6
|
import { lerp } from "../math/lerp.js";
|
|
@@ -152,9 +152,9 @@ export class Color {
|
|
|
152
152
|
*/
|
|
153
153
|
setRGBUint8(r, g, b) {
|
|
154
154
|
this.setRGB(
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
155
|
+
uint8_to_float(r),
|
|
156
|
+
uint8_to_float(g),
|
|
157
|
+
uint8_to_float(b),
|
|
158
158
|
)
|
|
159
159
|
}
|
|
160
160
|
|
|
@@ -462,9 +462,9 @@ export class Color {
|
|
|
462
462
|
*/
|
|
463
463
|
toHex() {
|
|
464
464
|
return '#' + rgb2hex(
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
465
|
+
float_to_uint8(this.r),
|
|
466
|
+
float_to_uint8(this.g),
|
|
467
|
+
float_to_uint8(this.b)
|
|
468
468
|
);
|
|
469
469
|
}
|
|
470
470
|
|
|
@@ -473,7 +473,7 @@ export class Color {
|
|
|
473
473
|
* @returns {string}
|
|
474
474
|
*/
|
|
475
475
|
toCssRGBAString() {
|
|
476
|
-
return `rgba(${
|
|
476
|
+
return `rgba(${float_to_uint8(this.r)},${float_to_uint8(this.g)},${float_to_uint8(this.b)},${this.a})`;
|
|
477
477
|
}
|
|
478
478
|
|
|
479
479
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import { float_to_uint8 } from "../../binary/float_to_uint8.js";
|
|
1
2
|
import { clamp01 } from "../../math/clamp01.js";
|
|
2
|
-
import { float2uint8 } from "../../binary/float2uint8.js";
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
*
|
|
@@ -52,9 +52,9 @@ export function hsv2rgb(h, s, v) {
|
|
|
52
52
|
break;
|
|
53
53
|
}
|
|
54
54
|
return {
|
|
55
|
-
r:
|
|
56
|
-
g:
|
|
57
|
-
b:
|
|
55
|
+
r: float_to_uint8(r),
|
|
56
|
+
g: float_to_uint8(g),
|
|
57
|
+
b: float_to_uint8(b)
|
|
58
58
|
};
|
|
59
59
|
}
|
|
60
60
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { float_to_uint8 } from "../binary/float_to_uint8.js";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
*
|
|
@@ -8,9 +8,9 @@ import { float2uint8 } from "../binary/float2uint8.js";
|
|
|
8
8
|
* @returns {number}
|
|
9
9
|
*/
|
|
10
10
|
export function rgb2uint24(r, g, b) {
|
|
11
|
-
const _r =
|
|
12
|
-
const _g =
|
|
13
|
-
const _b =
|
|
11
|
+
const _r = float_to_uint8(r);
|
|
12
|
+
const _g = float_to_uint8(g);
|
|
13
|
+
const _b = float_to_uint8(b);
|
|
14
14
|
|
|
15
15
|
return (_b & 0xFF)
|
|
16
16
|
| (_g & 0xFF) << 8
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linear_to_sRGB.d.ts","sourceRoot":"","sources":["../../../../../src/core/color/sRGB/linear_to_sRGB.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"linear_to_sRGB.d.ts","sourceRoot":"","sources":["../../../../../src/core/color/sRGB/linear_to_sRGB.js"],"names":[],"mappings":"AAAA,+DAMC;AAED;;;;;;GAMG;AACH,uCALW,MAAM,EAAE,GAAC,UAAU,MAAM,CAAC,iBAC1B,MAAM,SACN,MAAM,EAAE,GAAC,UAAU,MAAM,CAAC,gBAC1B,MAAM,QAahB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
function
|
|
1
|
+
export function convert_channel_linear_to_sRGB(c) {
|
|
2
2
|
if (c < 0.0031308) {
|
|
3
3
|
return c * 12.92;
|
|
4
4
|
} else {
|
|
@@ -21,7 +21,7 @@ export function linear_to_sRGB(
|
|
|
21
21
|
const g = input[input_offset + 1];
|
|
22
22
|
const b = input[input_offset + 2];
|
|
23
23
|
|
|
24
|
-
output[output_offset] =
|
|
25
|
-
output[output_offset + 1] =
|
|
26
|
-
output[output_offset + 2] =
|
|
24
|
+
output[output_offset] = convert_channel_linear_to_sRGB(r);
|
|
25
|
+
output[output_offset + 1] = convert_channel_linear_to_sRGB(g);
|
|
26
|
+
output[output_offset + 2] = convert_channel_linear_to_sRGB(b);
|
|
27
27
|
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* @param {number[]} output
|
|
4
|
+
* @param {number} output_offset
|
|
5
|
+
* @param {number} ax
|
|
6
|
+
* @param {number} ay
|
|
7
|
+
* @param {number} bx
|
|
8
|
+
* @param {number} by
|
|
9
|
+
* @param {number} cx
|
|
10
|
+
* @param {number} cy
|
|
11
|
+
* @param {number} px
|
|
12
|
+
* @param {number} py
|
|
13
|
+
*/
|
|
14
|
+
export function triangle2d_get_barycentric(output: number[], output_offset: number, ax: number, ay: number, bx: number, by: number, cx: number, cy: number, px: number, py: number): void;
|
|
15
|
+
//# sourceMappingURL=triangle2d_get_barycentric.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"triangle2d_get_barycentric.d.ts","sourceRoot":"","sources":["../../../../../src/core/geom/2d/triangle2d_get_barycentric.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AACH,mDAXW,MAAM,EAAE,iBACR,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,QAkChB"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { v2_dot } from "../vec2/v2_dot.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
*
|
|
5
|
+
* @param {number[]} output
|
|
6
|
+
* @param {number} output_offset
|
|
7
|
+
* @param {number} ax
|
|
8
|
+
* @param {number} ay
|
|
9
|
+
* @param {number} bx
|
|
10
|
+
* @param {number} by
|
|
11
|
+
* @param {number} cx
|
|
12
|
+
* @param {number} cy
|
|
13
|
+
* @param {number} px
|
|
14
|
+
* @param {number} py
|
|
15
|
+
*/
|
|
16
|
+
export function triangle2d_get_barycentric(
|
|
17
|
+
output, output_offset,
|
|
18
|
+
ax, ay,
|
|
19
|
+
bx, by,
|
|
20
|
+
cx, cy,
|
|
21
|
+
px, py
|
|
22
|
+
) {
|
|
23
|
+
|
|
24
|
+
const v0_x = bx - ax;
|
|
25
|
+
const v0_y = by - ay;
|
|
26
|
+
|
|
27
|
+
const v1_x = cx - ax;
|
|
28
|
+
const v1_y = cy - ay;
|
|
29
|
+
|
|
30
|
+
const v2_x = px - ax;
|
|
31
|
+
const v2_y = py - ay;
|
|
32
|
+
|
|
33
|
+
const d00 = v2_dot(v0_x, v0_y, v0_x, v0_y);
|
|
34
|
+
const d01 = v2_dot(v0_x, v0_y, v1_x, v1_y);
|
|
35
|
+
const d11 = v2_dot(v1_x, v1_y, v1_x, v1_y);
|
|
36
|
+
const d20 = v2_dot(v2_x, v2_y, v0_x, v0_y);
|
|
37
|
+
const d21 = v2_dot(v2_x, v2_y, v1_x, v1_y);
|
|
38
|
+
|
|
39
|
+
const denom = d00 * d11 - d01 * d01;
|
|
40
|
+
|
|
41
|
+
const v = (d11 * d20 - d01 * d21) / denom;
|
|
42
|
+
const w = (d00 * d21 - d01 * d20) / denom;
|
|
43
|
+
const u = 1.0 - v - w;
|
|
44
|
+
|
|
45
|
+
output[output_offset] = v;
|
|
46
|
+
output[output_offset + 1] = w;
|
|
47
|
+
output[output_offset + 2] = u;
|
|
48
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AABB3.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/aabb/AABB3.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AABB3.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/aabb/AABB3.js"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { assert } from "../../../assert.js";
|
|
2
|
+
import Vector3 from "../../Vector3.js";
|
|
2
3
|
import computeMortonCode from "../morton/Morton.js";
|
|
3
4
|
import { aabb3_array_intersects_point } from "./aabb3_array_intersects_point.js";
|
|
4
5
|
import { aabb3_build_corners } from "./aabb3_build_corners.js";
|
|
@@ -630,11 +631,13 @@ export class AABB3 {
|
|
|
630
631
|
* Get center position of the box
|
|
631
632
|
* @param {Vector3} target where to write result
|
|
632
633
|
*/
|
|
633
|
-
getCenter(target) {
|
|
634
|
+
getCenter(target = new Vector3()) {
|
|
634
635
|
const x = this.getCenterX();
|
|
635
636
|
const y = this.getCenterY();
|
|
636
637
|
const z = this.getCenterZ();
|
|
637
638
|
target.set(x, y, z);
|
|
639
|
+
|
|
640
|
+
return target;
|
|
638
641
|
}
|
|
639
642
|
|
|
640
643
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aabb3_from_v3_array.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/aabb/aabb3_from_v3_array.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"aabb3_from_v3_array.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/aabb/aabb3_from_v3_array.js"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,4CAJW,UAAU,MAAM,CAAC,GAAC,MAAM,EAAE,GAAC,YAAY,QAAM,SAC7C,MAAM,EAAE,GAAC,UAAU,MAAM,CAAC,GAAC,YAAY,gBACvC,MAAM,QA6BhB"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { assert } from "../../../assert.js";
|
|
2
2
|
import { max2 } from "../../../math/max2.js";
|
|
3
3
|
import { min2 } from "../../../math/min2.js";
|
|
4
|
+
import { aabb3_array_set } from "./aabb3_array_set.js";
|
|
4
5
|
|
|
5
6
|
/**
|
|
6
7
|
*
|
|
@@ -34,11 +35,5 @@ export function aabb3_from_v3_array(result, input, input_length) {
|
|
|
34
35
|
}
|
|
35
36
|
|
|
36
37
|
// read out
|
|
37
|
-
result
|
|
38
|
-
result[1] = y0;
|
|
39
|
-
result[2] = z0;
|
|
40
|
-
|
|
41
|
-
result[3] = x1;
|
|
42
|
-
result[4] = y1;
|
|
43
|
-
result[5] = z1;
|
|
38
|
+
aabb3_array_set(result, 0, x0, y0, z0, x1, y1, z1);
|
|
44
39
|
}
|
|
@@ -35,7 +35,7 @@ export function aabb3_intersects_ray(
|
|
|
35
35
|
const diff_x = origin_x - center_x;
|
|
36
36
|
|
|
37
37
|
|
|
38
|
-
if (diff_x * direction_x >= 0
|
|
38
|
+
if (diff_x * direction_x >= 0 && abs(diff_x) > extents_x) {
|
|
39
39
|
return false;
|
|
40
40
|
}
|
|
41
41
|
|
|
@@ -47,7 +47,7 @@ export function aabb3_intersects_ray(
|
|
|
47
47
|
const diff_y = origin_y - center_y;
|
|
48
48
|
|
|
49
49
|
|
|
50
|
-
if (diff_y * direction_y >= 0
|
|
50
|
+
if (diff_y * direction_y >= 0 && abs(diff_y) > extents_y) {
|
|
51
51
|
return false;
|
|
52
52
|
}
|
|
53
53
|
|
|
@@ -59,7 +59,7 @@ export function aabb3_intersects_ray(
|
|
|
59
59
|
const diff_z = origin_z - center_z;
|
|
60
60
|
|
|
61
61
|
|
|
62
|
-
if (diff_z * direction_z >= 0
|
|
62
|
+
if (diff_z * direction_z >= 0 && abs(diff_z) > extents_z) {
|
|
63
63
|
return false;
|
|
64
64
|
}
|
|
65
65
|
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* @param {number[]|Float32Array} output
|
|
4
|
+
* @param {number} output_offset
|
|
5
|
+
* @param {number[]|Float32Array} vertices
|
|
6
|
+
* @param {number} a_index
|
|
7
|
+
* @param {number} b_index
|
|
8
|
+
* @param {number} c_index
|
|
9
|
+
*/
|
|
10
|
+
export function aabb3_compute_from_triangle(output: number[] | Float32Array, output_offset: number, vertices: number[] | Float32Array, a_index: number, b_index: number, c_index: number): void;
|
|
11
|
+
//# sourceMappingURL=aabb3_compute_from_triangle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aabb3_compute_from_triangle.d.ts","sourceRoot":"","sources":["../../../../../src/core/geom/3d/aabb3_compute_from_triangle.js"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AACH,oDAPW,MAAM,EAAE,GAAC,YAAY,iBACrB,MAAM,YACN,MAAM,EAAE,GAAC,YAAY,WACrB,MAAM,WACN,MAAM,WACN,MAAM,QAgChB"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { max3 } from "../../math/max3.js";
|
|
2
|
+
import { min3 } from "../../math/min3.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
*
|
|
6
|
+
* @param {number[]|Float32Array} output
|
|
7
|
+
* @param {number} output_offset
|
|
8
|
+
* @param {number[]|Float32Array} vertices
|
|
9
|
+
* @param {number} a_index
|
|
10
|
+
* @param {number} b_index
|
|
11
|
+
* @param {number} c_index
|
|
12
|
+
*/
|
|
13
|
+
export function aabb3_compute_from_triangle(
|
|
14
|
+
output, output_offset,
|
|
15
|
+
vertices, a_index, b_index, c_index
|
|
16
|
+
) {
|
|
17
|
+
const a = a_index * 3;
|
|
18
|
+
const b = b_index * 3;
|
|
19
|
+
const c = c_index * 3;
|
|
20
|
+
|
|
21
|
+
// read actual positions of each vertex
|
|
22
|
+
const aX = vertices[a];
|
|
23
|
+
const aY = vertices[a + 1];
|
|
24
|
+
const aZ = vertices[a + 2];
|
|
25
|
+
|
|
26
|
+
const bX = vertices[b];
|
|
27
|
+
const bY = vertices[b + 1];
|
|
28
|
+
const bZ = vertices[b + 2];
|
|
29
|
+
|
|
30
|
+
const cX = vertices[c];
|
|
31
|
+
const cY = vertices[c + 1];
|
|
32
|
+
const cZ = vertices[c + 2];
|
|
33
|
+
|
|
34
|
+
// compute bounds of the triangle
|
|
35
|
+
output[output_offset] = min3(aX, bX, cX);
|
|
36
|
+
output[output_offset + 1] = min3(aY, bY, cY);
|
|
37
|
+
output[output_offset + 2] = min3(aZ, bZ, cZ);
|
|
38
|
+
|
|
39
|
+
output[output_offset + 3] = max3(aX, bX, cX);
|
|
40
|
+
output[output_offset + 4] = max3(aY, bY, cY);
|
|
41
|
+
output[output_offset + 5] = max3(aZ, bZ, cZ);
|
|
42
|
+
|
|
43
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UnitSphereShape3D.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/shape/UnitSphereShape3D.js"],"names":[],"mappings":"AAKA;;GAEG;AACH;IACI,qBAEC;IAED,2BAEC;IAED,wCAQC;IAED,4DAYC;IAED,mEAEC;IAED,6CAMC;IAED,oCAMC;IAED,kFAEC;IAED,eAEC;CACJ;;;;
|
|
1
|
+
{"version":3,"file":"UnitSphereShape3D.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/shape/UnitSphereShape3D.js"],"names":[],"mappings":"AAKA;;GAEG;AACH;IACI,qBAEC;IAED,2BAEC;IAED,wCAQC;IAED,4DAYC;IAED,mEAEC;IAED,6CAMC;IAED,oCAMC;IAED,kFAEC;IAED,eAEC;CACJ;;;;gCAlE+B,sBAAsB"}
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
import { AbstractShape3D } from "./AbstractShape3D.js";
|
|
2
1
|
import { randomPointInSphere } from "../../random/randomPointInSphere.js";
|
|
3
2
|
import { v3_length } from "../../vec3/v3_length.js";
|
|
3
|
+
import { AbstractShape3D } from "./AbstractShape3D.js";
|
|
4
4
|
import { compute_signed_distance_gradient_by_sampling } from "./util/compute_signed_distance_gradient_by_sampling.js";
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
|
-
* Sphere with diameter of
|
|
7
|
+
* Sphere with diameter of 2 (radius = 1)
|
|
8
8
|
*/
|
|
9
9
|
export class UnitSphereShape3D extends AbstractShape3D {
|
|
10
10
|
get volume() {
|
|
11
|
-
return
|
|
11
|
+
return (4 / 3) * Math.PI;
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
get surface_area() {
|
|
15
|
-
return
|
|
15
|
+
return Math.PI * 4;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
compute_bounding_box(result) {
|
|
19
|
-
result[0] = -
|
|
20
|
-
result[1] = -
|
|
21
|
-
result[2] = -
|
|
19
|
+
result[0] = -1;
|
|
20
|
+
result[1] = -1;
|
|
21
|
+
result[2] = -1;
|
|
22
22
|
|
|
23
|
-
result[3] =
|
|
24
|
-
result[4] =
|
|
25
|
-
result[5] =
|
|
23
|
+
result[3] = 1;
|
|
24
|
+
result[4] = 1;
|
|
25
|
+
result[5] = 1;
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
nearest_point_on_surface(result, reference) {
|
|
@@ -31,8 +31,8 @@ export class UnitSphereShape3D extends AbstractShape3D {
|
|
|
31
31
|
const r_y = reference[1];
|
|
32
32
|
const r_z = reference[2];
|
|
33
33
|
|
|
34
|
-
// normalize vector to
|
|
35
|
-
const d =
|
|
34
|
+
// normalize vector to 1 radius
|
|
35
|
+
const d = 1 / Math.hypot(r_x, r_y, r_z);
|
|
36
36
|
|
|
37
37
|
result[0] = r_x * d;
|
|
38
38
|
result[1] = r_y * d;
|
|
@@ -48,7 +48,7 @@ export class UnitSphereShape3D extends AbstractShape3D {
|
|
|
48
48
|
point[0],
|
|
49
49
|
point[1],
|
|
50
50
|
point[2]
|
|
51
|
-
) -
|
|
51
|
+
) - 1;
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
contains_point(point) {
|
|
@@ -56,7 +56,7 @@ export class UnitSphereShape3D extends AbstractShape3D {
|
|
|
56
56
|
const y = point[1];
|
|
57
57
|
const z = point[2];
|
|
58
58
|
|
|
59
|
-
return (x * x + y * y + z * z) <
|
|
59
|
+
return (x * x + y * y + z * z) < 1;
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
sample_random_point_in_volume(result, result_offset, random) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SH3_COEFFICIENTS.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/geom/3d/sphere/harmonics/SH3_COEFFICIENTS.js"],"names":[],"mappings":"AAAA;;;GAGG;AACH,+BAFU,YAAY,
|
|
1
|
+
{"version":3,"file":"SH3_COEFFICIENTS.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/geom/3d/sphere/harmonics/SH3_COEFFICIENTS.js"],"names":[],"mappings":"AAAA;;;GAGG;AACH,+BAFU,YAAY,CAcnB"}
|
|
@@ -4,9 +4,11 @@
|
|
|
4
4
|
*/
|
|
5
5
|
export const SH3_COEFFICIENTS = new Float32Array([
|
|
6
6
|
0.28209479177387814, // 0: 0 0
|
|
7
|
+
|
|
7
8
|
-0.4886025119029199, // 1: 1 -1
|
|
8
9
|
0.4886025119029199, // 2: 1 0
|
|
9
10
|
-0.4886025119029199, // 3: 1 1
|
|
11
|
+
|
|
10
12
|
1.0925484305920792, // 4: 2 -2
|
|
11
13
|
-1.0925484305920792, // 5: 2 -1
|
|
12
14
|
0.31539156525252005, // 6: 2 0
|
|
@@ -10,6 +10,7 @@ import { sh_index } from "./sh_index.js";
|
|
|
10
10
|
@see https://github.com/Bestmaker602/olacziy/blob/212b64ea5f1856b390cdf7629801243f76a4466d/libs/ibl/src/CubemapSH.cpp
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
|
+
const scratch_sh3 = new Float32Array(9);
|
|
13
14
|
|
|
14
15
|
/**
|
|
15
16
|
* SH from environment with high dynamic range (or high frequencies -- high dynamic range creates
|
|
@@ -233,14 +234,13 @@ function windowSH(
|
|
|
233
234
|
}
|
|
234
235
|
|
|
235
236
|
cutoff = numBands * 4 + 1;// start at a large band
|
|
236
|
-
// We need to process each channel separately
|
|
237
|
-
const SH = new Float32Array(9);
|
|
238
237
|
|
|
238
|
+
// We need to process each channel separately
|
|
239
239
|
for (let channel = 0; channel < channel_count; channel++) {
|
|
240
240
|
|
|
241
241
|
for (let i = 0; i < numBands * numBands; i++) {
|
|
242
242
|
// copy this channel
|
|
243
|
-
|
|
243
|
+
scratch_sh3[i] = input[input_offset + i * channel_count + channel];
|
|
244
244
|
}
|
|
245
245
|
|
|
246
246
|
// find a cut-off band that works
|
|
@@ -251,9 +251,9 @@ function windowSH(
|
|
|
251
251
|
|
|
252
252
|
const m = 0.5 * (l + r);
|
|
253
253
|
|
|
254
|
-
windowing(
|
|
254
|
+
windowing(scratch_sh3, m, numBands);
|
|
255
255
|
|
|
256
|
-
if (sh3_min(
|
|
256
|
+
if (sh3_min(scratch_sh3) < 0) {
|
|
257
257
|
r = m;
|
|
258
258
|
} else {
|
|
259
259
|
l = m;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* computes K(m,l) normalization constant
|
|
3
|
+
* @see "Deringing Spherical Harmonics" by Peter-Pike Sloan
|
|
4
|
+
* @param {number} m
|
|
5
|
+
* @param {number} l
|
|
6
|
+
* @returns {number}
|
|
7
|
+
*/
|
|
8
|
+
export function sh_compute_K(m: number, l: number): number;
|
|
9
|
+
//# sourceMappingURL=sh_compute_K.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sh_compute_K.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/geom/3d/sphere/harmonics/sh_compute_K.js"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,gCAJW,MAAM,KACN,MAAM,GACJ,MAAM,CASlB"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { factorial } from "../../../../math/factorial.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* computes K(m,l) normalization constant
|
|
5
|
+
* @see "Deringing Spherical Harmonics" by Peter-Pike Sloan
|
|
6
|
+
* @param {number} m
|
|
7
|
+
* @param {number} l
|
|
8
|
+
* @returns {number}
|
|
9
|
+
*/
|
|
10
|
+
export function sh_compute_K(m, l) {
|
|
11
|
+
|
|
12
|
+
const a = (2 * l + 1) * factorial(l - Math.abs(m))
|
|
13
|
+
|
|
14
|
+
const b = 4 * Math.PI * factorial(l + Math.abs(m))
|
|
15
|
+
|
|
16
|
+
return Math.sqrt(a / b);
|
|
17
|
+
}
|
|
@@ -209,11 +209,14 @@ export class TetrahedralMesh {
|
|
|
209
209
|
removeTetrasConnectedToPoints(range_start: number, range_end: number): void;
|
|
210
210
|
/**
|
|
211
211
|
*
|
|
212
|
-
* @param {number
|
|
213
|
-
* @param {number}
|
|
212
|
+
* @param {number} x
|
|
213
|
+
* @param {number} y
|
|
214
|
+
* @param {number} z
|
|
215
|
+
* @param {number[]} points Positions of vertices of tetrahedrons
|
|
216
|
+
* @param {number} [hint_tetrahedron]
|
|
214
217
|
* @returns {number} index of tetra or -1 if no containing tetra found
|
|
215
218
|
*/
|
|
216
|
-
findTetraContainingPoint(points: number[],
|
|
219
|
+
findTetraContainingPoint(x: number, y: number, z: number, points: number[], hint_tetrahedron?: number): number;
|
|
217
220
|
/**
|
|
218
221
|
* Relocate tetrahedron in memory, patches neighbourhood links as well
|
|
219
222
|
* NOTE: The destination slot will be overwritten. This is a dangerous method that can break the topology, make sure you fully understand what you are doing when using it
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TetrahedralMesh.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/tetrahedra/TetrahedralMesh.js"],"names":[],"mappings":"AAgBA;;;;GAIG;AACH,qCAFU,MAAM,CAEkD;AAElE;;;GAGG;AACH,gCAFU,MAAM,CAE4B;AAE5C;;;GAGG;AACH,4BAFU,MAAM,CAEwB;AAoBxC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH;IACI;;;OAGG;IACH,2BAFW,MAAM,EAqDhB;IAhDG;;;;OAIG;IACH,iBAAsE;IAEtE;;;;OAIG;IACH,sBAAmD;IAEnD;;;;OAIG;IACH,eAAyC;IAEzC;;;;OAIG;IACH,mBAA8B;IAE9B;;;;OAIG;IACH,mBAAmB;IAEnB;;;;OAIG;IACH,eAAgB;IAEhB;;;;OAIG;IACH,uBAAuB;IAG3B;;;OAGG;IACH,oBAEC;IAED;;;OAGG;IACH,2BAEC;IAED;;;;OAIG;IACH,2CAQC;IAED;;OAEG;IACH,cAWC;IAED;;;OAGG;IACH,sBAFW,MAAM,QA8BhB;IAED;;;OAGG;IACH,eAFY,MAAM,CAIjB;IAED;;;OAGG;IACH,QAFY,MAAM,CAIjB;IAED;;;OAGG;IACH,uBAFW,MAAM,QAchB;IAED;;;OAGG;IACH,yBAFW,MAAM,QAShB;IAED;;;;OAIG;IACH,YAHW,MAAM,GACL,OAAO,CAiBlB;IAED;;;;;OAKG;IACH,0BAJW,MAAM,mBACN,MAAM,GACJ,MAAM,CAYlB;IAED;;;;;OAKG;IACH,0BAJW,MAAM,mBACN,MAAM,aACN,MAAM,QAchB;IAGD;;;;;OAKG;IACH,0BAJW,MAAM,eACN,MAAM,GACJ,MAAM,CAYlB;IAED;;;;;OAKG;IACH,0BAJW,MAAM,eACN,MAAM,UACN,MAAM,QAiBhB;IAED;;;;;OAKG;IACH,uBAJW,MAAM,UACN,MAAM,GACL,OAAO,CAUlB;IAGD;;;;OAIG;IACH,YAFY,MAAM,CA4BjB;IAED;;;;;;;;OAQG;IACH,eAPW,MAAM,EAAE,GAAC,YAAY,KACrB,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,GACJ,MAAM,CAqBlB;IAED;;;;OAIG;IACH,wBAFW,MAAM,QAmBhB;IAED;;;;OAIG;IACH,oBAFW,MAAM,QAmBhB;IAED;;;;;OAKG;IACH,2CAHW,MAAM,aACN,MAAM,QAwBhB;IAED
|
|
1
|
+
{"version":3,"file":"TetrahedralMesh.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/tetrahedra/TetrahedralMesh.js"],"names":[],"mappings":"AAgBA;;;;GAIG;AACH,qCAFU,MAAM,CAEkD;AAElE;;;GAGG;AACH,gCAFU,MAAM,CAE4B;AAE5C;;;GAGG;AACH,4BAFU,MAAM,CAEwB;AAoBxC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH;IACI;;;OAGG;IACH,2BAFW,MAAM,EAqDhB;IAhDG;;;;OAIG;IACH,iBAAsE;IAEtE;;;;OAIG;IACH,sBAAmD;IAEnD;;;;OAIG;IACH,eAAyC;IAEzC;;;;OAIG;IACH,mBAA8B;IAE9B;;;;OAIG;IACH,mBAAmB;IAEnB;;;;OAIG;IACH,eAAgB;IAEhB;;;;OAIG;IACH,uBAAuB;IAG3B;;;OAGG;IACH,oBAEC;IAED;;;OAGG;IACH,2BAEC;IAED;;;;OAIG;IACH,2CAQC;IAED;;OAEG;IACH,cAWC;IAED;;;OAGG;IACH,sBAFW,MAAM,QA8BhB;IAED;;;OAGG;IACH,eAFY,MAAM,CAIjB;IAED;;;OAGG;IACH,QAFY,MAAM,CAIjB;IAED;;;OAGG;IACH,uBAFW,MAAM,QAchB;IAED;;;OAGG;IACH,yBAFW,MAAM,QAShB;IAED;;;;OAIG;IACH,YAHW,MAAM,GACL,OAAO,CAiBlB;IAED;;;;;OAKG;IACH,0BAJW,MAAM,mBACN,MAAM,GACJ,MAAM,CAYlB;IAED;;;;;OAKG;IACH,0BAJW,MAAM,mBACN,MAAM,aACN,MAAM,QAchB;IAGD;;;;;OAKG;IACH,0BAJW,MAAM,eACN,MAAM,GACJ,MAAM,CAYlB;IAED;;;;;OAKG;IACH,0BAJW,MAAM,eACN,MAAM,UACN,MAAM,QAiBhB;IAED;;;;;OAKG;IACH,uBAJW,MAAM,UACN,MAAM,GACL,OAAO,CAUlB;IAGD;;;;OAIG;IACH,YAFY,MAAM,CA4BjB;IAED;;;;;;;;OAQG;IACH,eAPW,MAAM,EAAE,GAAC,YAAY,KACrB,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,GACJ,MAAM,CAqBlB;IAED;;;;OAIG;IACH,wBAFW,MAAM,QAmBhB;IAED;;;;OAIG;IACH,oBAFW,MAAM,QAmBhB;IAED;;;;;OAKG;IACH,2CAHW,MAAM,aACN,MAAM,QAwBhB;IAED;;;;;;;;OAQG;IACH,4BAPW,MAAM,KACN,MAAM,KACN,MAAM,UACN,MAAM,EAAE,qBACR,MAAM,GACJ,MAAM,CAyDlB;IAGD;;;;;OAKG;IACH,uBAHW,MAAM,qBACN,MAAM,QA6BhB;IAED;;;;OAIG;IACH,WAFa,MAAM,CA2ClB;IAED;;;OAGG;IACH,kBAFW,YAAY,QAUtB;IAED;;;OAGG;IACH,oBAFW,YAAY,QAiBtB;IAED;;;OAGG;IACH,oBAFY,MAAM,CAUjB;IAED;;;OAGG;IACH,wBAFW,MAAM,QAQhB;IAGL;;;OAGG;IACH,4BAFU,OAAO,CAE0B;CAN1C;6BA1tB4B,iCAAiC"}
|