babylonjs-tiaratumgames-tools 0.0.4

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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 SvenFrankson
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,2 @@
1
+ # babylonjs-geometry-kit
2
+ A collection of Geometry function to extend BabylonJS
@@ -0,0 +1,20 @@
1
+ import { Vector3, Color3, Quaternion } from '@babylonjs/core';
2
+ import { Scene } from '@babylonjs/core/scene';
3
+ interface ISceneObject {
4
+ getScene: () => Scene;
5
+ }
6
+ export declare class AnimationFactory {
7
+ static EmptyVoidCallback: (duration: number) => Promise<void>;
8
+ static EmptyNumberCallback: (target: number, duration: number, overrideEasing?: (v: number) => number) => Promise<void>;
9
+ static EmptyNumbersCallback: (targets: number[], duration: number) => Promise<void>;
10
+ static EmptyVector3Callback: (target: Vector3, duration: number, overrideEasing?: (v: number) => number) => Promise<void>;
11
+ static EmptyColor3Callback: (target: Color3, duration: number, overrideEasing?: (v: number) => number) => Promise<void>;
12
+ static EmptyQuaternionCallback: (target: Quaternion, duration: number, overrideEasing?: (v: number) => number) => Promise<void>;
13
+ static CreateWait(owner: ISceneObject, onUpdateCallback?: () => void): (duration: number) => Promise<void>;
14
+ static CreateNumber(owner: ISceneObject, obj: any, property: string, onUpdateCallback?: () => void, isAngle?: boolean, easing?: (v: number) => number): (target: number, duration: number, overrideEasing?: (v: number) => number) => Promise<void>;
15
+ static CreateNumbers(owner: ISceneObject, obj: any, properties: string[], onUpdateCallback?: () => void, isAngle?: boolean[], easing?: (v: number) => number): (targets: number[], duration: number) => Promise<void>;
16
+ static CreateVector3(owner: ISceneObject, obj: any, property: string, onUpdateCallback?: () => void, easing?: (v: number) => number): (target: Vector3, duration: number, overrideEasing?: (v: number) => number) => Promise<void>;
17
+ static CreateColor3(owner: ISceneObject, obj: any, property: string, onUpdateCallback?: () => void, easing?: (v: number) => number): (target: Color3, duration: number, overrideEasing?: (v: number) => number) => Promise<void>;
18
+ static CreateQuaternion(owner: ISceneObject, obj: any, property: string, onUpdateCallback?: () => void, easing?: (v: number) => number): (target: Quaternion, duration: number, overrideEasing?: (v: number) => number) => Promise<void>;
19
+ }
20
+ export {};
@@ -0,0 +1,47 @@
1
+ import { Vector3, Mesh, Ray, TransformNode, Matrix } from '@babylonjs/core';
2
+ import { IIntersection, IPlane, ISphere, IBox, ICylinder, ICapsule } from './Intersection';
3
+ export declare function SphereCollidersIntersection(cSphere: Vector3, rSphere: number, colliders: (Collider | Mesh)[]): IIntersection[];
4
+ export declare function SphereColliderIntersection(cSphere: Vector3, rSphere: number, collider: Collider | Mesh): IIntersection | undefined;
5
+ export declare function RayCollidersIntersection(ray: Ray, colliders: (Collider | Mesh)[]): IIntersection;
6
+ export declare function RayColliderIntersection(ray: Ray, collider: Collider | Mesh): IIntersection | undefined;
7
+ export declare class Collider {
8
+ }
9
+ export declare class PlaneCollider extends Collider implements IPlane {
10
+ point: Vector3;
11
+ normal: Vector3;
12
+ static CreateFromBJSPlane(plane: Mesh): PlaneCollider;
13
+ static CreateFromPoints(p1: Vector3, p2: Vector3, p3: Vector3): PlaneCollider;
14
+ constructor(point: Vector3, normal: Vector3);
15
+ }
16
+ export declare class SphereCollider extends Collider implements ISphere {
17
+ localCenter: Vector3;
18
+ radius: number;
19
+ parent?: TransformNode | undefined;
20
+ center: Vector3;
21
+ constructor(localCenter: Vector3, radius: number, parent?: TransformNode | undefined);
22
+ recomputeWorldCenter(): void;
23
+ }
24
+ export declare class BoxCollider extends Collider implements IBox {
25
+ worldMatrix: Matrix;
26
+ width: number;
27
+ height: number;
28
+ depth: number;
29
+ constructor(worldMatrix: Matrix);
30
+ }
31
+ export declare class CylinderCollider extends Collider implements ICylinder {
32
+ worldMatrix: Matrix;
33
+ radius: number;
34
+ height: number;
35
+ constructor(worldMatrix: Matrix);
36
+ }
37
+ export declare class CapsuleCollider extends Collider implements ICapsule {
38
+ c1: Vector3;
39
+ c2: Vector3;
40
+ radius: number;
41
+ worldMatrix?: Matrix | undefined;
42
+ constructor(c1: Vector3, c2: Vector3, radius: number, worldMatrix?: Matrix | undefined);
43
+ }
44
+ export declare class MeshCollider extends Collider {
45
+ mesh: Mesh;
46
+ constructor(mesh: Mesh);
47
+ }
@@ -0,0 +1,5 @@
1
+ import { Vector3, Color3, Scene, Mesh } from '@babylonjs/core';
2
+ export declare function DrawDebugLine(from: Vector3, to: Vector3, frames?: number, color?: Color3, scene?: Scene): Mesh;
3
+ export declare function DrawDebugHit(point: Vector3, normal: Vector3, frames?: number, color?: Color3, scene?: Scene): Mesh;
4
+ export declare function DrawDebugPoint(points: Vector3, frames?: number, color?: Color3, size?: number, scene?: Scene): Mesh;
5
+ export declare function DrawDebugTriangle(p1: Vector3, p2: Vector3, p3: Vector3, frames?: number, color?: Color3, scene?: Scene): Mesh;
@@ -0,0 +1,65 @@
1
+ import { Vector3, Matrix, Ray, Mesh, AbstractMesh } from '@babylonjs/core';
2
+ export interface IPlane {
3
+ point: Vector3;
4
+ normal: Vector3;
5
+ }
6
+ export interface ISphere {
7
+ center: Vector3;
8
+ radius: number;
9
+ }
10
+ export interface IBox {
11
+ worldMatrix: Matrix;
12
+ width: number;
13
+ height: number;
14
+ depth: number;
15
+ }
16
+ export interface ICylinder {
17
+ worldMatrix: Matrix;
18
+ radius: number;
19
+ height: number;
20
+ }
21
+ export interface ICapsule {
22
+ c1: Vector3;
23
+ c2: Vector3;
24
+ radius: number;
25
+ worldMatrix?: Matrix;
26
+ }
27
+ export interface IIntersection {
28
+ hit: boolean;
29
+ point: Vector3 | undefined;
30
+ normal: Vector3 | undefined;
31
+ depth: number;
32
+ index?: number;
33
+ }
34
+ export declare class Intersection implements IIntersection {
35
+ hit: boolean;
36
+ point: Vector3 | undefined;
37
+ normal: Vector3 | undefined;
38
+ depth: number;
39
+ index: number;
40
+ constructor();
41
+ }
42
+ export declare function SphereTriangleCheck(cSphere: Vector3, rSphere: number, p1: Vector3, p2: Vector3, p3: Vector3): boolean;
43
+ export declare function SphereRayCheck(cSphere: Vector3, rSphere: number, ray: Ray): boolean;
44
+ export declare function PointAABBCheck(p: Vector3, boxMin: Vector3, boxMax: Vector3): boolean;
45
+ export declare function PointAABBCheck(p: Vector3, x2Min: number, x2Max: number, y1Min: number, y2Max: number, z2Min: number, z2Max: number): boolean;
46
+ export declare function SphereAABBCheck(cSphere: Vector3, rSphere: number, boxMin: Vector3, boxMax: Vector3): boolean;
47
+ export declare function SphereAABBCheck(cSphere: Vector3, rSphere: number, x2Min: number, x2Max: number, y2Min: number, y2Max: number, z2Min: number, z2Max: number): boolean;
48
+ export declare function AABBAABBCheck(box1Min: Vector3, box1Max: Vector3, box2Min: Vector3, box2Max: Vector3): boolean;
49
+ export declare function AABBAABBCheck(x1Min: number, x1Max: number, y1Min: number, y1Max: number, z1Min: number, z1Max: number, x2Min: number, x2Max: number, y2Min: number, y2Max: number, z2Min: number, z2Max: number): boolean;
50
+ export declare function RaySphereIntersection(ray: Ray, sphere: ISphere): IIntersection;
51
+ export declare function RaySphereIntersection(ray: Ray, cSphere: Vector3, rSphere: number): IIntersection;
52
+ export declare function RayMeshIntersection(ray: Ray, mesh: Mesh): IIntersection;
53
+ export declare function RayPlaneIntersection(ray: Ray, plane: IPlane): IIntersection;
54
+ export declare function RayPlaneIntersection(ray: Ray, pPlane: Vector3, nPlane: Vector3): IIntersection;
55
+ export declare function SpherePlaneIntersection(sphere: ISphere, plane: IPlane): IIntersection;
56
+ export declare function SpherePlaneIntersection(cSphere: Vector3, rSphere: number, plane: IPlane): IIntersection;
57
+ export declare function SpherePlaneIntersection(cSphere: Vector3, rSphere: number, pPlane: Vector3, nPlane: Vector3): IIntersection;
58
+ export declare function SphereBoxIntersection(cSphere: Vector3, rSphere: number, box: IBox): IIntersection;
59
+ export declare function SphereCapsuleIntersection(cSphere: Vector3, rSphere: number, c1Capsule: Vector3, c2Capsule: Vector3, rCapsule: number, worldMatrix?: Matrix): IIntersection;
60
+ export declare function SphereLatheIntersection(cSphere: Vector3, rSphere: number, cLathe: Vector3, path: Vector3[], rWire?: number): IIntersection;
61
+ export declare function SphereWireIntersection(cSphere: Vector3, rSphere: number, path: Vector3[], rWire: number, pathIsEvenlyDistributed?: boolean, nearBestIndex?: number, nearBestSearchRange?: number, excludePos?: Vector3, excludeRange_m?: number): IIntersection;
62
+ export declare function SphereInTubeIntersection(cSphere: Vector3, rSphere: number, path: Vector3[], rTube: number, pathIsEvenlyDistributed?: boolean, nearBestIndex?: number, nearBestSearchRange?: number): IIntersection;
63
+ export declare function SphereTriangleIntersection(sphere: ISphere, p1: Vector3, p2: Vector3, p3: Vector3, smooth?: boolean): IIntersection;
64
+ export declare function SphereTriangleIntersection(cSphere: Vector3, rSphere: number, p1: Vector3, p2: Vector3, p3: Vector3, smooth?: boolean): IIntersection;
65
+ export declare function SphereMeshIntersection(cSphere: Vector3, rSphere: number, mesh: AbstractMesh, smooth?: boolean): IIntersection;
@@ -0,0 +1,11 @@
1
+ import { Quaternion, Vector3 } from '@babylonjs/core';
2
+ export declare function QuaternionFromXYAxis(x: Vector3, y: Vector3): Quaternion;
3
+ export declare function QuaternionFromXYAxisToRef(x: Vector3, y: Vector3, ref: Quaternion): Quaternion;
4
+ export declare function QuaternionFromXZAxis(x: Vector3, z: Vector3): Quaternion;
5
+ export declare function QuaternionFromXZAxisToRef(x: Vector3, z: Vector3, ref: Quaternion): Quaternion;
6
+ export declare function QuaternionFromYZAxis(y: Vector3, z: Vector3): Quaternion;
7
+ export declare function QuaternionFromYZAxisToRef(y: Vector3, z: Vector3, ref: Quaternion): Quaternion;
8
+ export declare function QuaternionFromZXAxis(z: Vector3, x: Vector3): Quaternion;
9
+ export declare function QuaternionFromZXAxisToRef(z: Vector3, x: Vector3, ref: Quaternion): Quaternion;
10
+ export declare function QuaternionFromZYAxis(z: Vector3, y: Vector3): Quaternion;
11
+ export declare function QuaternionFromZYAxisToRef(z: Vector3, y: Vector3, ref: Quaternion): Quaternion;
package/dist/Vec3.d.ts ADDED
@@ -0,0 +1,43 @@
1
+ import { Ray, Vector3 } from '@babylonjs/core';
2
+ export declare function IsFinite(v: Vector3): boolean;
3
+ export declare function Barycentric(point: Vector3, p1: Vector3, p2: Vector3, p3: Vector3): Vector3;
4
+ export declare function ProjectPerpendicularAtToRef(v: Vector3, at: Vector3, out: Vector3): Vector3;
5
+ export declare function ProjectPerpendicularAt(v: Vector3, at: Vector3): Vector3;
6
+ export declare function Rotate(v: Vector3, axis: Vector3, angle: number): Vector3;
7
+ export declare function RotateToRef(v: Vector3, axis: Vector3, angle: number, ref: Vector3): Vector3;
8
+ export declare function RotateInPlace(v: Vector3, axis: Vector3, angle: number): Vector3;
9
+ export declare function Angle(from: Vector3, to: Vector3): number;
10
+ export declare function AngleFromToAround(from: Vector3, to: Vector3, around: Vector3): number;
11
+ export declare function ProjectPointOnPlaneToRef(point: Vector3, pPlane: Vector3, nPlane: Vector3, ref: Vector3): Vector3;
12
+ export declare function ProjectPointOnPlane(point: Vector3, pPlane: Vector3, nPlane: Vector3): Vector3;
13
+ export declare function DistancePointRay(point: Vector3, origin: Vector3, direction: Vector3): number;
14
+ export declare function DistancePointRay(point: Vector3, ray: Ray): number;
15
+ export declare function DistancePointLine(point: Vector3, lineA: Vector3, lineB: Vector3): number;
16
+ export declare function ProjectPointOnLineToRef(point: Vector3, lineA: Vector3, lineB: Vector3, ref: Vector3): Vector3;
17
+ export declare function ProjectPointOnLine(point: Vector3, lineA: Vector3, lineB: Vector3): Vector3;
18
+ export declare function ProjectPointOnSegmentToRef(point: Vector3, segA: Vector3, segB: Vector3, ref: Vector3): Vector3;
19
+ export declare function ProjectPointOnSegment(point: Vector3, segA: Vector3, segB: Vector3): Vector3;
20
+ export declare function DistancePointSegment(point: Vector3, segA: Vector3, segB: Vector3): number;
21
+ export interface IPathProjection {
22
+ point: Vector3;
23
+ index: number;
24
+ }
25
+ export declare function ProjectPointOnPathToRef(point: Vector3, path: Vector3[], ref: IPathProjection, pathIsEvenlyDistributed?: boolean, nearBestIndex?: number, nearBestSearchRange?: number, excludePos?: Vector3, excludeRange_m?: number): IPathProjection;
26
+ export declare function StepToRef(from: Vector3, to: Vector3, step: number, ref: Vector3): Vector3;
27
+ export declare function Step(from: Vector3, to: Vector3, step: number): Vector3;
28
+ export declare function ForceDistanceFromOriginInPlace(point: Vector3, origin: Vector3, distance: number): Vector3;
29
+ export declare function GetPathLength(path: Vector3[]): number;
30
+ export declare function EvaluatePathToRef(f: number, path: Vector3[], ref: Vector3): Vector3;
31
+ export declare function EvaluatePath(f: number, path: Vector3[]): Vector3;
32
+ export declare function CatmullRomPathInPlace(path: Vector3[], inDir?: Vector3, outDir?: Vector3): Vector3[];
33
+ export declare function SmoothPathInPlace(path: Vector3[], f: number): Vector3[];
34
+ export declare function BevelClosedPath(path: Vector3[], bevel: number): Vector3[];
35
+ export declare function CatmullRomClosedPathInPlace(path: Vector3[]): Vector3[];
36
+ export declare function DecimatePathInPlaceFast(path: Vector3[], minAngle?: number, collateral?: Vector3[]): Vector3[];
37
+ export declare function DecimatePathInPlace(path: Vector3[], minAngle?: number, collateral?: Vector3[]): Vector3[];
38
+ export declare function RemoveFromStartForDistanceInPlace(path: Vector3[], distance: number, outRemovedPart?: Vector3[]): Vector3[];
39
+ export declare function RemoveFromEndForDistanceInPlace(path: Vector3[], distance: number, outRemovedPart?: Vector3[]): Vector3[];
40
+ export declare function RandomInSphereCutToRef(dir: Vector3, alphaMin: number, alphaMax: number, betaMin: number, betaMax: number, up: Vector3 | undefined, ref: Vector3): Vector3;
41
+ export declare function RandomInSphereCut(dir: Vector3, alphaMin: number, alphaMax: number, betaMin: number, betaMax: number, up?: Vector3): Vector3;
42
+ export declare function GetClosestAxisToRef(dir: Vector3, ref: Vector3): Vector3;
43
+ export declare function GetClosestAxis(dir: Vector3): Vector3;
@@ -0,0 +1,28 @@
1
+ import { Color3 } from '@babylonjs/core/Maths/math.color';
2
+ import { Quaternion, Vector3 } from '@babylonjs/core/Maths/math.vector';
3
+ import { VertexData } from '@babylonjs/core/Meshes/mesh.vertexData';
4
+ import { Scene } from '@babylonjs/core/scene';
5
+ export interface IMeshData {
6
+ name: string;
7
+ vertexData: VertexData;
8
+ position: Vector3;
9
+ rotation: Vector3;
10
+ scaling: Vector3;
11
+ }
12
+ export declare function GetGLTFVertexData(path: string, meshName: string, scene: Scene): Promise<VertexData | null>;
13
+ export declare function GetGLTFMeshDataArray(path: string, scene: Scene): Promise<IMeshData[] | null>;
14
+ export declare function CloneVertexData(data: VertexData): VertexData;
15
+ export declare function MergeVertexDatas(...datas: VertexData[]): VertexData;
16
+ export declare function TranslateVertexDataInPlace(data: VertexData, t: Vector3): VertexData;
17
+ export declare function RotateAngleAxisVertexDataInPlace(data: VertexData, angle: number, axis: Vector3): VertexData;
18
+ export declare function RotateVertexDataInPlace(data: VertexData, q: Quaternion): VertexData;
19
+ export declare function ScaleVertexDataInPlace(data: VertexData, s: number): VertexData;
20
+ export declare function ShrinkVertexDataInPlace(data: VertexData, d: number): VertexData;
21
+ export declare function MirrorXVertexDataInPlace(data: VertexData): VertexData;
22
+ export declare function MirrorZVertexDataInPlace(data: VertexData): VertexData;
23
+ export declare function TriFlipVertexDataInPlace(data: VertexData, flipNormals?: boolean): VertexData;
24
+ export declare function ColorizeVertexDataInPlace(data: VertexData, color: Color3, colorToReplace?: Color3): VertexData;
25
+ export declare function GetBBoxFromVertexData(data: VertexData): {
26
+ min: Vector3;
27
+ max: Vector3;
28
+ };
@@ -0,0 +1,4 @@
1
+ import { IsFinite, Barycentric, ProjectPerpendicularAtToRef, ProjectPerpendicularAt, Rotate, RotateToRef, RotateInPlace, Angle, AngleFromToAround, ProjectPointOnPlaneToRef, ProjectPointOnPlane, DistancePointRay, DistancePointLine, ProjectPointOnLineToRef, ProjectPointOnLine, ProjectPointOnSegmentToRef, ProjectPointOnSegment, DistancePointSegment, ProjectPointOnPathToRef, StepToRef, Step, ForceDistanceFromOriginInPlace, GetPathLength, EvaluatePathToRef, EvaluatePath, CatmullRomPathInPlace, SmoothPathInPlace, BevelClosedPath, CatmullRomClosedPathInPlace, DecimatePathInPlaceFast, DecimatePathInPlace, RemoveFromStartForDistanceInPlace, RemoveFromEndForDistanceInPlace, RandomInSphereCutToRef, RandomInSphereCut, GetClosestAxisToRef, GetClosestAxis } from './Vec3';
2
+ import { QuaternionFromXYAxis, QuaternionFromXYAxisToRef, QuaternionFromXZAxis, QuaternionFromXZAxisToRef, QuaternionFromYZAxis, QuaternionFromYZAxisToRef, QuaternionFromZXAxis, QuaternionFromZXAxisToRef, QuaternionFromZYAxis, QuaternionFromZYAxisToRef } from './Quaternion';
3
+ export { IsFinite, Barycentric, ProjectPerpendicularAtToRef, ProjectPerpendicularAt, Rotate, RotateToRef, RotateInPlace, Angle, AngleFromToAround, ProjectPointOnPlaneToRef, ProjectPointOnPlane, DistancePointRay, DistancePointLine, ProjectPointOnLineToRef, ProjectPointOnLine, ProjectPointOnSegmentToRef, ProjectPointOnSegment, DistancePointSegment, ProjectPointOnPathToRef, StepToRef, Step, ForceDistanceFromOriginInPlace, GetPathLength, EvaluatePathToRef, EvaluatePath, CatmullRomPathInPlace, SmoothPathInPlace, BevelClosedPath, CatmullRomClosedPathInPlace, DecimatePathInPlaceFast, DecimatePathInPlace, RemoveFromStartForDistanceInPlace, RemoveFromEndForDistanceInPlace, RandomInSphereCutToRef, RandomInSphereCut, GetClosestAxisToRef, GetClosestAxis, };
4
+ export { QuaternionFromXYAxis, QuaternionFromXYAxisToRef, QuaternionFromXZAxis, QuaternionFromXZAxisToRef, QuaternionFromYZAxis, QuaternionFromYZAxisToRef, QuaternionFromZXAxis, QuaternionFromZXAxisToRef, QuaternionFromZYAxis, QuaternionFromZYAxisToRef };
@@ -0,0 +1,302 @@
1
+ import { Axis as e, Quaternion as t, Ray as n, Vector3 as r } from "@babylonjs/core";
2
+ //#region src/Vec3.ts
3
+ var i = [
4
+ r.Zero(),
5
+ r.Zero(),
6
+ r.Zero(),
7
+ r.Zero(),
8
+ r.Zero()
9
+ ], a = [t.Identity()];
10
+ function o(e) {
11
+ return e && isFinite(e.x) && isFinite(e.y) && isFinite(e.z);
12
+ }
13
+ function s(e, t, n, i) {
14
+ let a = n.subtract(t), o = i.subtract(t), s = e.subtract(t), c = r.Dot(a, a), l = r.Dot(a, o), u = r.Dot(o, o), d = r.Dot(s, a), f = r.Dot(s, o), p = c * u - l * l, m = (u * d - l * f) / p, h = (c * f - l * d) / p;
15
+ return new r(1 - m - h, m, h);
16
+ }
17
+ function c(e, t, n) {
18
+ let r = e.x * t.x + e.y * t.y + e.z * t.z;
19
+ return r /= t.x * t.x + t.y * t.y + t.z * t.z, n.copyFrom(e), n.subtractInPlace(t.multiplyByFloats(r, r, r)), n;
20
+ }
21
+ function l(e, t) {
22
+ let n = r.Zero();
23
+ return c(e, t, n), n;
24
+ }
25
+ function u(e, t, n) {
26
+ return d(e, t, n, r.Zero());
27
+ }
28
+ function d(e, n, r, i) {
29
+ return t.RotationAxisToRef(n, r, a[0]), e.rotateByQuaternionToRef(a[0], i);
30
+ }
31
+ function f(e, t, n) {
32
+ return d(e, t, n, e);
33
+ }
34
+ function p(e, t) {
35
+ let n = i[0].copyFrom(e).normalize(), a = i[1].copyFrom(t).normalize();
36
+ return Math.acos(r.Dot(n, a));
37
+ }
38
+ function m(e, t, n) {
39
+ let a = i[0], o = i[1];
40
+ c(e, n, a).normalize(), c(t, n, o).normalize();
41
+ let s = r.Dot(a, o);
42
+ s = Math.min(Math.max(s, -1), 1);
43
+ let l = Math.acos(s);
44
+ return l > Math.PI / 360 / 60 && (r.CrossToRef(a, o, i[2]), r.Dot(i[2], n) < 0 && (l = -l)), l;
45
+ }
46
+ function h(e, t, n, i) {
47
+ i.copyFrom(e).subtractInPlace(t);
48
+ let a = r.Dot(i, n);
49
+ return i.copyFrom(n).scaleInPlace(-a), i.addInPlace(e), i;
50
+ }
51
+ function g(e, t, n) {
52
+ let i = r.Zero();
53
+ return h(e, t, n, i), i;
54
+ }
55
+ function _(e, t, a) {
56
+ let o;
57
+ t instanceof n ? (o = t.origin, a = t.direction) : o = t;
58
+ let s = i[0], c = i[1], l = i[2];
59
+ return s.copyFrom(o).subtractInPlace(e), a && c.copyFrom(a).normalize(), r.CrossToRef(s, c, l), l.length();
60
+ }
61
+ function v(e, t, n) {
62
+ let a = i[0], o = i[1], s = i[2];
63
+ return a.copyFrom(t).subtractInPlace(e), o.copyFrom(n).subtractInPlace(t).normalize(), r.CrossToRef(a, o, s), s.length();
64
+ }
65
+ function y(e, t, n, a) {
66
+ let o = i[0], s = i[1];
67
+ o.copyFrom(e).subtractInPlace(t), s.copyFrom(n).subtractInPlace(t);
68
+ let c = s.length();
69
+ s.scaleInPlace(1 / c);
70
+ let l = r.Dot(o, s);
71
+ return a.copyFrom(s).scaleInPlace(l).addInPlace(t), a;
72
+ }
73
+ function b(e, t, n) {
74
+ let i = r.Zero();
75
+ return y(e, t, n, i), i;
76
+ }
77
+ function x(e, t, n, a) {
78
+ let o = i[0], s = i[1];
79
+ o.copyFrom(e).subtractInPlace(t), s.copyFrom(n).subtractInPlace(t);
80
+ let c = s.length();
81
+ s.scaleInPlace(1 / c);
82
+ let l = r.Dot(o, s);
83
+ return l = Math.max(Math.min(l, c), 0), a.copyFrom(s).scaleInPlace(l).addInPlace(t), a;
84
+ }
85
+ function S(e, t, n) {
86
+ let i = r.Zero();
87
+ return x(e, t, n, i), i;
88
+ }
89
+ function C(e, t, n) {
90
+ let a = i[0], o = i[1], s = i[2];
91
+ a.copyFrom(e).subtractInPlace(t), o.copyFrom(n).subtractInPlace(t);
92
+ let c = o.length();
93
+ o.scaleInPlace(1 / c);
94
+ let l = r.Dot(a, o);
95
+ return l = Math.max(Math.min(l, c), 0), s.copyFrom(o).scaleInPlace(l).addInPlace(t), s.subtractInPlace(e).length();
96
+ }
97
+ function w(e, t, n, a, o = -1, s = 32, c, l = 1) {
98
+ let u = i[3];
99
+ if (a && t.length >= 4) {
100
+ let i = -1, a = Infinity, d, f;
101
+ o >= 0 ? (d = Math.min(Math.max(o - s), 0, t.length), f = Math.min(Math.max(o + s), 0, t.length)) : (d = 0, f = t.length);
102
+ for (let n = d; n < f; n++) {
103
+ let o = r.DistanceSquared(e, t[n]);
104
+ c && r.DistanceSquared(t[n], c) < l * l && (o = Infinity), o < a && (i = n, a = o);
105
+ }
106
+ let p = Math.max(0, i - 1), m = Math.min(t.length - 1, i + 1);
107
+ a = Infinity;
108
+ for (let i = p; i < m; i++) {
109
+ x(e, t[i], t[i + 1], u);
110
+ let o = r.DistanceSquared(e, u);
111
+ o < a && (n.point.copyFrom(u), n.index = i, a = o);
112
+ }
113
+ } else {
114
+ let i = Infinity;
115
+ for (let a = 0; a < t.length - 1; a++) {
116
+ x(e, t[a], t[a + 1], u);
117
+ let o = r.DistanceSquared(e, u);
118
+ c && r.DistanceSquared(u, c) < l * l && (o = Infinity), o < i && (n.point.copyFrom(u), n.index = a, i = o);
119
+ }
120
+ }
121
+ return n;
122
+ }
123
+ function T(e, t, n, a) {
124
+ e = i[0].copyFrom(e);
125
+ let o = n * n;
126
+ return r.DistanceSquared(e, t) < o ? a.copyFrom(t) : a.copyFrom(t).subtractInPlace(e).normalize().scaleInPlace(n).addInPlace(e), a;
127
+ }
128
+ function E(e, t, n) {
129
+ let i = r.Zero();
130
+ return T(e, t, n, i), i;
131
+ }
132
+ function D(e, t, n) {
133
+ return i[0].copyFrom(e).subtractInPlace(t).normalize().scaleInPlace(n), e.copyFrom(t).addInPlace(i[0]), e;
134
+ }
135
+ function O(e) {
136
+ let t = 0;
137
+ for (let n = 0; n < e.length - 1; n++) {
138
+ let i = e[n], a = e[n + 1];
139
+ t += r.Distance(i, a);
140
+ }
141
+ return t;
142
+ }
143
+ function k(e, t, n) {
144
+ if (e === 1) return t[t.length - 1].clone();
145
+ let r = Math.floor(e * (t.length - 1)), a = e * (t.length - 1) - r;
146
+ return i[0].copyFrom(t[r]).scaleInPlace(1 - a), n.copyFrom(t[r + 1]).scaleInPlace(a).addInPlace(i[0]), n;
147
+ }
148
+ function A(e, t) {
149
+ let n = r.Zero();
150
+ return k(e, t, n), n;
151
+ }
152
+ function j(e, t, n) {
153
+ if (e.length >= 2) {
154
+ let a = i[0];
155
+ t ? a.copyFrom(t).scaleInPlace(r.Distance(e[0], e[1])).scaleInPlace(-1).addInPlace(e[0]) : (a.copyFrom(e[0]).subtractInPlace(e[1]), a.addInPlace(e[0]));
156
+ let o = i[1];
157
+ n ? o.copyFrom(n).scaleInPlace(r.Distance(e[e.length - 2], e[e.length - 1])).addInPlace(e[e.length - 1]) : (o.copyFrom(e[e.length - 1]).subtractInPlace(e[e.length - 2]), o.addInPlace(e[e.length - 1]));
158
+ let s = [];
159
+ for (let t = 0; t < e.length - 1; t++) {
160
+ let n = t > 0 ? e[t - 1] : a, i = e[t], c = e[t + 1], l = t < e.length - 2 ? e[t + 2] : o;
161
+ s.push(r.CatmullRom(n, i, c, l, .5));
162
+ }
163
+ for (let t = 0; t < s.length; t++) e.splice(2 * t + 1, 0, s[t]);
164
+ }
165
+ return e;
166
+ }
167
+ function M(e, t) {
168
+ let n = e.map((e) => e.clone()), r = e.length;
169
+ for (let i = 1; i < r - 1; i++) {
170
+ let r = (e[i - 1].x + e[i].x * (1 - t) + e[i + 1].x) / (3 - t), a = (e[i - 1].y + e[i].y * (1 - t) + e[i + 1].y) / (3 - t), o = (e[i - 1].z + e[i].z * (1 - t) + e[i + 1].z) / (3 - t);
171
+ n[i].copyFromFloats(r, a, o);
172
+ }
173
+ for (let t = 0; t < r; t++) e[t].copyFrom(n[t]);
174
+ return e;
175
+ }
176
+ function N(e, t) {
177
+ let n = [];
178
+ for (let r = 0; r < e.length; r++) {
179
+ let i = e[(r - 1 + e.length) % e.length], a = e[r], o = e[(r + 1) % e.length], s = i.subtract(a).normalize();
180
+ s.scaleInPlace(t);
181
+ let c = o.subtract(a).normalize();
182
+ c.scaleInPlace(t), n.push(a.add(s)), n.push(a.add(c));
183
+ }
184
+ return n;
185
+ }
186
+ function P(e) {
187
+ let t = [];
188
+ for (let n = 0; n < e.length; n++) {
189
+ let i = e[(n - 1 + e.length) % e.length], a = e[n], o = e[(n + 1) % e.length], s = e[(n + 2) % e.length];
190
+ t.push(r.CatmullRom(i, a, o, s, .5));
191
+ }
192
+ for (let n = 0; n < t.length; n++) e.splice(2 * n + 1, 0, t[n]);
193
+ return e;
194
+ }
195
+ function F(e, t = 1 / 180 * Math.PI, n) {
196
+ let i = !1;
197
+ for (; !i;) {
198
+ i = !0;
199
+ let a = r.Forward(), o = e[1].subtract(e[0]).normalize();
200
+ for (let r = 1; r < e.length - 1; r++) a.copyFrom(o), o.copyFrom(e[r + 1]).subtractInPlace(e[r]).normalize(), p(a, o) < t && (e.splice(r, 1), n && n.splice(r, 1), r += 2, i = !1);
201
+ }
202
+ return e;
203
+ }
204
+ function I(e, t = 1 / 180 * Math.PI, n) {
205
+ let i = !1;
206
+ for (; !i;) {
207
+ let a = Infinity, o = -1, s = r.Forward(), c = e[1].subtract(e[0]).normalize();
208
+ for (let n = 1; n < e.length - 1; n++) {
209
+ s.copyFrom(c), c.copyFrom(e[n + 1]).subtractInPlace(e[n]).normalize();
210
+ let r = p(s, c);
211
+ r < t && r < a && (a = r, o = n);
212
+ }
213
+ o == -1 ? i = !0 : (e.splice(o, 1), n && n.splice(o, 1));
214
+ }
215
+ return e;
216
+ }
217
+ function L(e, t, n) {
218
+ n ||= [];
219
+ let i = t;
220
+ for (; i > 0 && e.length >= 2;) {
221
+ let t = e[0], a = e[1], o = r.Distance(t, a);
222
+ if (o <= i) n.push(e[0]), e.splice(0, 1), i -= o;
223
+ else if (o > i) {
224
+ let r = a.subtract(t).normalize().scaleInPlace(i).addInPlace(t);
225
+ n.push(e[0]), n.push(r), e[0] = r, i = 0;
226
+ }
227
+ }
228
+ return e;
229
+ }
230
+ function R(e, t, n) {
231
+ return n ||= [], e.reverse(), L(e, t, n), e.reverse(), n.reverse(), e;
232
+ }
233
+ function z(t, n, a, o, s, c, l) {
234
+ c ||= e.Y;
235
+ let u = r.CrossToRef(c, t, i[0]).normalize();
236
+ c = r.CrossToRef(t, u, i[1]).normalize();
237
+ let f = Math.random() * (a - n) + n;
238
+ return d(t, u, Math.random() * (s - o) + o, l), d(l, c, f, l), l;
239
+ }
240
+ function B(e, t, n, i, a, o) {
241
+ let s = r.Zero();
242
+ return z(e, t, n, i, a, o, s), s;
243
+ }
244
+ function V(e, t) {
245
+ let n = Math.abs(e.x), r = Math.abs(e.y), i = Math.abs(e.z);
246
+ return n >= r && n >= i ? e.x >= 0 ? t.copyFromFloats(1, 0, 0) : t.copyFromFloats(-1, 0, 0) : r >= n && r >= i ? e.y >= 0 ? t.copyFromFloats(0, 1, 0) : t.copyFromFloats(0, -1, 0) : i >= n && i >= r && (e.z >= 0 ? t.copyFromFloats(0, 0, 1) : t.copyFromFloats(0, 0, -1)), t;
247
+ }
248
+ function H(e) {
249
+ let t = r.Zero();
250
+ return V(e, t), t;
251
+ }
252
+ //#endregion
253
+ //#region src/Quaternion.ts
254
+ var U = [
255
+ r.Zero(),
256
+ r.Zero(),
257
+ r.Zero(),
258
+ r.Zero(),
259
+ r.Zero()
260
+ ];
261
+ function W(e, n) {
262
+ let r = t.Identity();
263
+ return G(e, n, r), r;
264
+ }
265
+ function G(e, n, i) {
266
+ let a = U[0].copyFrom(e), o = U[1].copyFrom(n), s = U[2];
267
+ return r.CrossToRef(a, o, s), r.CrossToRef(s, a, o), t.RotationQuaternionFromAxisToRef(a, o, s, i), i;
268
+ }
269
+ function K(e, n) {
270
+ let r = t.Identity();
271
+ return q(e, n, r), r;
272
+ }
273
+ function q(e, n, i) {
274
+ let a = U[0].copyFrom(e), o = U[1], s = U[2].copyFrom(n);
275
+ return r.CrossToRef(s, a, o), r.CrossToRef(a, o, s), t.RotationQuaternionFromAxisToRef(a, o, s, i), i;
276
+ }
277
+ function J(e, n) {
278
+ let r = t.Identity();
279
+ return Y(e, n, r), r;
280
+ }
281
+ function Y(e, n, i) {
282
+ let a = U[0], o = U[1].copyFrom(e), s = U[2].copyFrom(n);
283
+ return r.CrossToRef(o, s, a), r.CrossToRef(a, o, s), t.RotationQuaternionFromAxisToRef(a, o, s, i), i;
284
+ }
285
+ function X(e, n) {
286
+ let r = t.Identity();
287
+ return Z(e, n, r), r;
288
+ }
289
+ function Z(e, n, i) {
290
+ let a = U[0].copyFrom(n), o = U[1], s = U[2].copyFrom(e);
291
+ return r.CrossToRef(s, a, o), r.CrossToRef(o, s, a), t.RotationQuaternionFromAxisToRef(a, o, s, i), i;
292
+ }
293
+ function Q(e, n) {
294
+ let r = t.Identity();
295
+ return $(e, n, r), r;
296
+ }
297
+ function $(e, n, i) {
298
+ let a = U[0], o = U[1].copyFrom(n), s = U[2].copyFrom(e);
299
+ return r.CrossToRef(o, s, a), r.CrossToRef(s, a, o), t.RotationQuaternionFromAxisToRef(a, o, s, i), i;
300
+ }
301
+ //#endregion
302
+ export { p as Angle, m as AngleFromToAround, s as Barycentric, N as BevelClosedPath, P as CatmullRomClosedPathInPlace, j as CatmullRomPathInPlace, I as DecimatePathInPlace, F as DecimatePathInPlaceFast, v as DistancePointLine, _ as DistancePointRay, C as DistancePointSegment, A as EvaluatePath, k as EvaluatePathToRef, D as ForceDistanceFromOriginInPlace, H as GetClosestAxis, V as GetClosestAxisToRef, O as GetPathLength, o as IsFinite, l as ProjectPerpendicularAt, c as ProjectPerpendicularAtToRef, b as ProjectPointOnLine, y as ProjectPointOnLineToRef, w as ProjectPointOnPathToRef, g as ProjectPointOnPlane, h as ProjectPointOnPlaneToRef, S as ProjectPointOnSegment, x as ProjectPointOnSegmentToRef, W as QuaternionFromXYAxis, G as QuaternionFromXYAxisToRef, K as QuaternionFromXZAxis, q as QuaternionFromXZAxisToRef, J as QuaternionFromYZAxis, Y as QuaternionFromYZAxisToRef, X as QuaternionFromZXAxis, Z as QuaternionFromZXAxisToRef, Q as QuaternionFromZYAxis, $ as QuaternionFromZYAxisToRef, B as RandomInSphereCut, z as RandomInSphereCutToRef, R as RemoveFromEndForDistanceInPlace, L as RemoveFromStartForDistanceInPlace, u as Rotate, f as RotateInPlace, d as RotateToRef, M as SmoothPathInPlace, E as Step, T as StepToRef };
@@ -0,0 +1 @@
1
+ (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`@babylonjs/core`)):typeof define==`function`&&define.amd?define([`exports`,`@babylonjs/core`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e[`BabylonJS Geometry Kit`]={},e.BABYLON))})(this,function(e,t){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var n=[t.Vector3.Zero(),t.Vector3.Zero(),t.Vector3.Zero(),t.Vector3.Zero(),t.Vector3.Zero()],r=[t.Quaternion.Identity()];function i(e){return e&&isFinite(e.x)&&isFinite(e.y)&&isFinite(e.z)}function a(e,n,r,i){let a=r.subtract(n),o=i.subtract(n),s=e.subtract(n),c=t.Vector3.Dot(a,a),l=t.Vector3.Dot(a,o),u=t.Vector3.Dot(o,o),d=t.Vector3.Dot(s,a),f=t.Vector3.Dot(s,o),p=c*u-l*l,m=(u*d-l*f)/p,h=(c*f-l*d)/p;return new t.Vector3(1-m-h,m,h)}function o(e,t,n){let r=e.x*t.x+e.y*t.y+e.z*t.z;return r/=t.x*t.x+t.y*t.y+t.z*t.z,n.copyFrom(e),n.subtractInPlace(t.multiplyByFloats(r,r,r)),n}function s(e,n){let r=t.Vector3.Zero();return o(e,n,r),r}function c(e,n,r){return l(e,n,r,t.Vector3.Zero())}function l(e,n,i,a){return t.Quaternion.RotationAxisToRef(n,i,r[0]),e.rotateByQuaternionToRef(r[0],a)}function u(e,t,n){return l(e,t,n,e)}function d(e,r){let i=n[0].copyFrom(e).normalize(),a=n[1].copyFrom(r).normalize();return Math.acos(t.Vector3.Dot(i,a))}function f(e,r,i){let a=n[0],s=n[1];o(e,i,a).normalize(),o(r,i,s).normalize();let c=t.Vector3.Dot(a,s);c=Math.min(Math.max(c,-1),1);let l=Math.acos(c);return l>Math.PI/360/60&&(t.Vector3.CrossToRef(a,s,n[2]),t.Vector3.Dot(n[2],i)<0&&(l=-l)),l}function p(e,n,r,i){i.copyFrom(e).subtractInPlace(n);let a=t.Vector3.Dot(i,r);return i.copyFrom(r).scaleInPlace(-a),i.addInPlace(e),i}function m(e,n,r){let i=t.Vector3.Zero();return p(e,n,r,i),i}function h(e,r,i){let a;r instanceof t.Ray?(a=r.origin,i=r.direction):a=r;let o=n[0],s=n[1],c=n[2];return o.copyFrom(a).subtractInPlace(e),i&&s.copyFrom(i).normalize(),t.Vector3.CrossToRef(o,s,c),c.length()}function g(e,r,i){let a=n[0],o=n[1],s=n[2];return a.copyFrom(r).subtractInPlace(e),o.copyFrom(i).subtractInPlace(r).normalize(),t.Vector3.CrossToRef(a,o,s),s.length()}function _(e,r,i,a){let o=n[0],s=n[1];o.copyFrom(e).subtractInPlace(r),s.copyFrom(i).subtractInPlace(r);let c=s.length();s.scaleInPlace(1/c);let l=t.Vector3.Dot(o,s);return a.copyFrom(s).scaleInPlace(l).addInPlace(r),a}function v(e,n,r){let i=t.Vector3.Zero();return _(e,n,r,i),i}function y(e,r,i,a){let o=n[0],s=n[1];o.copyFrom(e).subtractInPlace(r),s.copyFrom(i).subtractInPlace(r);let c=s.length();s.scaleInPlace(1/c);let l=t.Vector3.Dot(o,s);return l=Math.max(Math.min(l,c),0),a.copyFrom(s).scaleInPlace(l).addInPlace(r),a}function b(e,n,r){let i=t.Vector3.Zero();return y(e,n,r,i),i}function x(e,r,i){let a=n[0],o=n[1],s=n[2];a.copyFrom(e).subtractInPlace(r),o.copyFrom(i).subtractInPlace(r);let c=o.length();o.scaleInPlace(1/c);let l=t.Vector3.Dot(a,o);return l=Math.max(Math.min(l,c),0),s.copyFrom(o).scaleInPlace(l).addInPlace(r),s.subtractInPlace(e).length()}function S(e,r,i,a,o=-1,s=32,c,l=1){let u=n[3];if(a&&r.length>=4){let n=-1,a=1/0,d,f;o>=0?(d=Math.min(Math.max(o-s),0,r.length),f=Math.min(Math.max(o+s),0,r.length)):(d=0,f=r.length);for(let i=d;i<f;i++){let o=t.Vector3.DistanceSquared(e,r[i]);c&&t.Vector3.DistanceSquared(r[i],c)<l*l&&(o=1/0),o<a&&(n=i,a=o)}let p=Math.max(0,n-1),m=Math.min(r.length-1,n+1);a=1/0;for(let n=p;n<m;n++){y(e,r[n],r[n+1],u);let o=t.Vector3.DistanceSquared(e,u);o<a&&(i.point.copyFrom(u),i.index=n,a=o)}}else{let n=1/0;for(let a=0;a<r.length-1;a++){y(e,r[a],r[a+1],u);let o=t.Vector3.DistanceSquared(e,u);c&&t.Vector3.DistanceSquared(u,c)<l*l&&(o=1/0),o<n&&(i.point.copyFrom(u),i.index=a,n=o)}}return i}function C(e,r,i,a){e=n[0].copyFrom(e);let o=i*i;return t.Vector3.DistanceSquared(e,r)<o?a.copyFrom(r):a.copyFrom(r).subtractInPlace(e).normalize().scaleInPlace(i).addInPlace(e),a}function w(e,n,r){let i=t.Vector3.Zero();return C(e,n,r,i),i}function T(e,t,r){return n[0].copyFrom(e).subtractInPlace(t).normalize().scaleInPlace(r),e.copyFrom(t).addInPlace(n[0]),e}function E(e){let n=0;for(let r=0;r<e.length-1;r++){let i=e[r],a=e[r+1];n+=t.Vector3.Distance(i,a)}return n}function D(e,t,r){if(e===1)return t[t.length-1].clone();let i=Math.floor(e*(t.length-1)),a=e*(t.length-1)-i;return n[0].copyFrom(t[i]).scaleInPlace(1-a),r.copyFrom(t[i+1]).scaleInPlace(a).addInPlace(n[0]),r}function O(e,n){let r=t.Vector3.Zero();return D(e,n,r),r}function k(e,r,i){if(e.length>=2){let a=n[0];r?a.copyFrom(r).scaleInPlace(t.Vector3.Distance(e[0],e[1])).scaleInPlace(-1).addInPlace(e[0]):(a.copyFrom(e[0]).subtractInPlace(e[1]),a.addInPlace(e[0]));let o=n[1];i?o.copyFrom(i).scaleInPlace(t.Vector3.Distance(e[e.length-2],e[e.length-1])).addInPlace(e[e.length-1]):(o.copyFrom(e[e.length-1]).subtractInPlace(e[e.length-2]),o.addInPlace(e[e.length-1]));let s=[];for(let n=0;n<e.length-1;n++){let r=n>0?e[n-1]:a,i=e[n],c=e[n+1],l=n<e.length-2?e[n+2]:o;s.push(t.Vector3.CatmullRom(r,i,c,l,.5))}for(let t=0;t<s.length;t++)e.splice(2*t+1,0,s[t])}return e}function A(e,t){let n=e.map(e=>e.clone()),r=e.length;for(let i=1;i<r-1;i++){let r=(e[i-1].x+e[i].x*(1-t)+e[i+1].x)/(3-t),a=(e[i-1].y+e[i].y*(1-t)+e[i+1].y)/(3-t),o=(e[i-1].z+e[i].z*(1-t)+e[i+1].z)/(3-t);n[i].copyFromFloats(r,a,o)}for(let t=0;t<r;t++)e[t].copyFrom(n[t]);return e}function j(e,t){let n=[];for(let r=0;r<e.length;r++){let i=e[(r-1+e.length)%e.length],a=e[r],o=e[(r+1)%e.length],s=i.subtract(a).normalize();s.scaleInPlace(t);let c=o.subtract(a).normalize();c.scaleInPlace(t),n.push(a.add(s)),n.push(a.add(c))}return n}function M(e){let n=[];for(let r=0;r<e.length;r++){let i=e[(r-1+e.length)%e.length],a=e[r],o=e[(r+1)%e.length],s=e[(r+2)%e.length];n.push(t.Vector3.CatmullRom(i,a,o,s,.5))}for(let t=0;t<n.length;t++)e.splice(2*t+1,0,n[t]);return e}function N(e,n=1/180*Math.PI,r){let i=!1;for(;!i;){i=!0;let a=t.Vector3.Forward(),o=e[1].subtract(e[0]).normalize();for(let t=1;t<e.length-1;t++)a.copyFrom(o),o.copyFrom(e[t+1]).subtractInPlace(e[t]).normalize(),d(a,o)<n&&(e.splice(t,1),r&&r.splice(t,1),t+=2,i=!1)}return e}function P(e,n=1/180*Math.PI,r){let i=!1;for(;!i;){let a=1/0,o=-1,s=t.Vector3.Forward(),c=e[1].subtract(e[0]).normalize();for(let t=1;t<e.length-1;t++){s.copyFrom(c),c.copyFrom(e[t+1]).subtractInPlace(e[t]).normalize();let r=d(s,c);r<n&&r<a&&(a=r,o=t)}o==-1?i=!0:(e.splice(o,1),r&&r.splice(o,1))}return e}function F(e,n,r){r||=[];let i=n;for(;i>0&&e.length>=2;){let n=e[0],a=e[1],o=t.Vector3.Distance(n,a);if(o<=i)r.push(e[0]),e.splice(0,1),i-=o;else if(o>i){let t=a.subtract(n).normalize().scaleInPlace(i).addInPlace(n);r.push(e[0]),r.push(t),e[0]=t,i=0}}return e}function I(e,t,n){return n||=[],e.reverse(),F(e,t,n),e.reverse(),n.reverse(),e}function L(e,r,i,a,o,s,c){s||=t.Axis.Y;let u=t.Vector3.CrossToRef(s,e,n[0]).normalize();s=t.Vector3.CrossToRef(e,u,n[1]).normalize();let d=Math.random()*(i-r)+r;return l(e,u,Math.random()*(o-a)+a,c),l(c,s,d,c),c}function R(e,n,r,i,a,o){let s=t.Vector3.Zero();return L(e,n,r,i,a,o,s),s}function z(e,t){let n=Math.abs(e.x),r=Math.abs(e.y),i=Math.abs(e.z);return n>=r&&n>=i?e.x>=0?t.copyFromFloats(1,0,0):t.copyFromFloats(-1,0,0):r>=n&&r>=i?e.y>=0?t.copyFromFloats(0,1,0):t.copyFromFloats(0,-1,0):i>=n&&i>=r&&(e.z>=0?t.copyFromFloats(0,0,1):t.copyFromFloats(0,0,-1)),t}function B(e){let n=t.Vector3.Zero();return z(e,n),n}var V=[t.Vector3.Zero(),t.Vector3.Zero(),t.Vector3.Zero(),t.Vector3.Zero(),t.Vector3.Zero()];function H(e,n){let r=t.Quaternion.Identity();return U(e,n,r),r}function U(e,n,r){let i=V[0].copyFrom(e),a=V[1].copyFrom(n),o=V[2];return t.Vector3.CrossToRef(i,a,o),t.Vector3.CrossToRef(o,i,a),t.Quaternion.RotationQuaternionFromAxisToRef(i,a,o,r),r}function W(e,n){let r=t.Quaternion.Identity();return G(e,n,r),r}function G(e,n,r){let i=V[0].copyFrom(e),a=V[1],o=V[2].copyFrom(n);return t.Vector3.CrossToRef(o,i,a),t.Vector3.CrossToRef(i,a,o),t.Quaternion.RotationQuaternionFromAxisToRef(i,a,o,r),r}function K(e,n){let r=t.Quaternion.Identity();return q(e,n,r),r}function q(e,n,r){let i=V[0],a=V[1].copyFrom(e),o=V[2].copyFrom(n);return t.Vector3.CrossToRef(a,o,i),t.Vector3.CrossToRef(i,a,o),t.Quaternion.RotationQuaternionFromAxisToRef(i,a,o,r),r}function J(e,n){let r=t.Quaternion.Identity();return Y(e,n,r),r}function Y(e,n,r){let i=V[0].copyFrom(n),a=V[1],o=V[2].copyFrom(e);return t.Vector3.CrossToRef(o,i,a),t.Vector3.CrossToRef(a,o,i),t.Quaternion.RotationQuaternionFromAxisToRef(i,a,o,r),r}function X(e,n){let r=t.Quaternion.Identity();return Z(e,n,r),r}function Z(e,n,r){let i=V[0],a=V[1].copyFrom(n),o=V[2].copyFrom(e);return t.Vector3.CrossToRef(a,o,i),t.Vector3.CrossToRef(o,i,a),t.Quaternion.RotationQuaternionFromAxisToRef(i,a,o,r),r}e.Angle=d,e.AngleFromToAround=f,e.Barycentric=a,e.BevelClosedPath=j,e.CatmullRomClosedPathInPlace=M,e.CatmullRomPathInPlace=k,e.DecimatePathInPlace=P,e.DecimatePathInPlaceFast=N,e.DistancePointLine=g,e.DistancePointRay=h,e.DistancePointSegment=x,e.EvaluatePath=O,e.EvaluatePathToRef=D,e.ForceDistanceFromOriginInPlace=T,e.GetClosestAxis=B,e.GetClosestAxisToRef=z,e.GetPathLength=E,e.IsFinite=i,e.ProjectPerpendicularAt=s,e.ProjectPerpendicularAtToRef=o,e.ProjectPointOnLine=v,e.ProjectPointOnLineToRef=_,e.ProjectPointOnPathToRef=S,e.ProjectPointOnPlane=m,e.ProjectPointOnPlaneToRef=p,e.ProjectPointOnSegment=b,e.ProjectPointOnSegmentToRef=y,e.QuaternionFromXYAxis=H,e.QuaternionFromXYAxisToRef=U,e.QuaternionFromXZAxis=W,e.QuaternionFromXZAxisToRef=G,e.QuaternionFromYZAxis=K,e.QuaternionFromYZAxisToRef=q,e.QuaternionFromZXAxis=J,e.QuaternionFromZXAxisToRef=Y,e.QuaternionFromZYAxis=X,e.QuaternionFromZYAxisToRef=Z,e.RandomInSphereCut=R,e.RandomInSphereCutToRef=L,e.RemoveFromEndForDistanceInPlace=I,e.RemoveFromStartForDistanceInPlace=F,e.Rotate=c,e.RotateInPlace=u,e.RotateToRef=l,e.SmoothPathInPlace=A,e.Step=w,e.StepToRef=C});
package/package.json ADDED
@@ -0,0 +1,34 @@
1
+ {
2
+ "name": "babylonjs-tiaratumgames-tools",
3
+ "version": "0.0.4",
4
+ "type": "module",
5
+ "main": "./dist/babylonjs-tiaratumgames-tools.umd.cjs",
6
+ "module": "./dist/babylonjs-tiaratumgames-tools.js",
7
+ "types": "./dist/babylonjs-tiaratumgames-tools.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": "./dist/babylonjs-tiaratumgames-tools.js",
11
+ "require": "./dist/babylonjs-tiaratumgames-tools.umd.cjs"
12
+ }
13
+ },
14
+ "files": [
15
+ "dist"
16
+ ],
17
+ "scripts": {
18
+ "dev": "vite",
19
+ "build": "tsc && vite build",
20
+ "preview": "vite preview"
21
+ },
22
+ "devDependencies": {
23
+ "@types/node": "^25.2.2",
24
+ "typescript": "~5.9.3",
25
+ "vite": "^8.0.0-beta.13",
26
+ "vite-plugin-dts": "^4.5.4"
27
+ },
28
+ "overrides": {
29
+ "vite": "^8.0.0-beta.13"
30
+ },
31
+ "dependencies": {
32
+ "@babylonjs/core": "^9.7.0"
33
+ }
34
+ }