@snaptrude/plugin-core 0.2.9 → 0.5.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/AGENTS.md +128 -50
- package/CHANGELOG.md +52 -6
- package/api-manifest.full.json +3999 -0
- package/api-manifest.json +3845 -0
- package/dist/api/core/buildings.d.ts +427 -0
- package/dist/api/core/buildings.d.ts.map +1 -0
- package/dist/api/core/comment/index.d.ts +230 -0
- package/dist/api/core/comment/index.d.ts.map +1 -0
- package/dist/api/core/geom/create/index.d.ts +247 -0
- package/dist/api/core/geom/create/index.d.ts.map +1 -0
- package/dist/api/core/geom/delete/index.d.ts +72 -0
- package/dist/api/core/geom/delete/index.d.ts.map +1 -0
- package/dist/api/core/geom/index.d.ts +24 -23
- package/dist/api/core/geom/index.d.ts.map +1 -1
- package/dist/api/core/geom/query/arc.d.ts +169 -0
- package/dist/api/core/geom/query/arc.d.ts.map +1 -0
- package/dist/api/core/geom/query/brep.d.ts +402 -0
- package/dist/api/core/geom/query/brep.d.ts.map +1 -0
- package/dist/api/core/geom/query/circle.d.ts +378 -0
- package/dist/api/core/geom/query/circle.d.ts.map +1 -0
- package/dist/api/core/geom/query/contour.d.ts +450 -0
- package/dist/api/core/geom/query/contour.d.ts.map +1 -0
- package/dist/api/core/geom/query/curve.d.ts +918 -0
- package/dist/api/core/geom/query/curve.d.ts.map +1 -0
- package/dist/api/core/geom/query/edge.d.ts +128 -0
- package/dist/api/core/geom/query/edge.d.ts.map +1 -0
- package/dist/api/core/geom/query/face.d.ts +363 -0
- package/dist/api/core/geom/query/face.d.ts.map +1 -0
- package/dist/api/core/geom/query/halfedge.d.ts +206 -0
- package/dist/api/core/geom/query/halfedge.d.ts.map +1 -0
- package/dist/api/core/geom/query/index.d.ts +61 -0
- package/dist/api/core/geom/query/index.d.ts.map +1 -0
- package/dist/api/core/geom/query/profile.d.ts +410 -0
- package/dist/api/core/geom/query/profile.d.ts.map +1 -0
- package/dist/api/core/geom/query/vertex.d.ts +187 -0
- package/dist/api/core/geom/query/vertex.d.ts.map +1 -0
- package/dist/api/core/geom/update/contour.d.ts +272 -0
- package/dist/api/core/geom/update/contour.d.ts.map +1 -0
- package/dist/api/core/geom/update/curve.d.ts +180 -0
- package/dist/api/core/geom/update/curve.d.ts.map +1 -0
- package/dist/api/core/geom/update/index.d.ts +27 -0
- package/dist/api/core/geom/update/index.d.ts.map +1 -0
- package/dist/api/core/geom/update/profile.d.ts +329 -0
- package/dist/api/core/geom/update/profile.d.ts.map +1 -0
- package/dist/api/core/groups.d.ts +485 -0
- package/dist/api/core/groups.d.ts.map +1 -0
- package/dist/api/core/history/index.d.ts +78 -0
- package/dist/api/core/history/index.d.ts.map +1 -0
- package/dist/api/core/index.d.ts +46 -1
- package/dist/api/core/index.d.ts.map +1 -1
- package/dist/api/core/layers.d.ts +402 -0
- package/dist/api/core/layers.d.ts.map +1 -0
- package/dist/api/core/math/quat.d.ts +111 -128
- package/dist/api/core/math/quat.d.ts.map +1 -1
- package/dist/api/core/math/vec3.d.ts +120 -102
- package/dist/api/core/math/vec3.d.ts.map +1 -1
- package/dist/api/core/project/index.d.ts +399 -0
- package/dist/api/core/project/index.d.ts.map +1 -0
- package/dist/api/core/tags.d.ts +755 -0
- package/dist/api/core/tags.d.ts.map +1 -0
- package/dist/api/core/units/index.d.ts +175 -0
- package/dist/api/core/units/index.d.ts.map +1 -0
- package/dist/api/core/zoom/index.d.ts +45 -0
- package/dist/api/core/zoom/index.d.ts.map +1 -0
- package/dist/api/design/boolean/index.d.ts +168 -0
- package/dist/api/design/boolean/index.d.ts.map +1 -0
- package/dist/api/design/create/index.d.ts +828 -0
- package/dist/api/design/create/index.d.ts.map +1 -0
- package/dist/api/design/delete/index.d.ts +63 -0
- package/dist/api/design/delete/index.d.ts.map +1 -0
- package/dist/api/design/doors/index.d.ts +268 -0
- package/dist/api/design/doors/index.d.ts.map +1 -0
- package/dist/api/design/edit/index.d.ts +49 -0
- package/dist/api/design/edit/index.d.ts.map +1 -0
- package/dist/api/design/erase/index.d.ts +160 -0
- package/dist/api/design/erase/index.d.ts.map +1 -0
- package/dist/api/design/furniture/index.d.ts +123 -0
- package/dist/api/design/furniture/index.d.ts.map +1 -0
- package/dist/api/design/index.d.ts +153 -0
- package/dist/api/design/index.d.ts.map +1 -0
- package/dist/api/design/lock.d.ts +41 -0
- package/dist/api/design/lock.d.ts.map +1 -0
- package/dist/api/design/materials/index.d.ts +297 -0
- package/dist/api/design/materials/index.d.ts.map +1 -0
- package/dist/api/design/query/geometry/index.d.ts +140 -0
- package/dist/api/design/query/geometry/index.d.ts.map +1 -0
- package/dist/api/design/query/index.d.ts +1011 -0
- package/dist/api/design/query/index.d.ts.map +1 -0
- package/dist/api/design/query/spaces.d.ts +221 -0
- package/dist/api/design/query/spaces.d.ts.map +1 -0
- package/dist/api/design/selection/index.d.ts +138 -0
- package/dist/api/design/selection/index.d.ts.map +1 -0
- package/dist/api/design/shared.d.ts +38 -0
- package/dist/api/design/shared.d.ts.map +1 -0
- package/dist/api/design/transform/index.d.ts +87 -0
- package/dist/api/design/transform/index.d.ts.map +1 -0
- package/dist/api/design/update/index.d.ts +178 -0
- package/dist/api/design/update/index.d.ts.map +1 -0
- package/dist/api/design/windows/index.d.ts +189 -0
- package/dist/api/design/windows/index.d.ts.map +1 -0
- package/dist/api/entity/buildableEnvelope.d.ts +51 -23
- package/dist/api/entity/buildableEnvelope.d.ts.map +1 -1
- package/dist/api/entity/department.d.ts +0 -98
- package/dist/api/entity/department.d.ts.map +1 -1
- package/dist/api/entity/index.d.ts +4 -9
- package/dist/api/entity/index.d.ts.map +1 -1
- package/dist/api/entity/referenceLine.d.ts +49 -106
- package/dist/api/entity/referenceLine.d.ts.map +1 -1
- package/dist/api/entity/space.d.ts +76 -828
- package/dist/api/entity/space.d.ts.map +1 -1
- package/dist/api/entity/story.d.ts +47 -37
- package/dist/api/entity/story.d.ts.map +1 -1
- package/dist/api/index.d.ts +17 -17
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/presentation/aiInspiration.d.ts +440 -0
- package/dist/api/presentation/aiInspiration.d.ts.map +1 -0
- package/dist/api/presentation/diagrams.d.ts +81 -0
- package/dist/api/presentation/diagrams.d.ts.map +1 -0
- package/dist/api/presentation/import.d.ts +113 -0
- package/dist/api/presentation/import.d.ts.map +1 -0
- package/dist/api/presentation/index.d.ts +46 -0
- package/dist/api/presentation/index.d.ts.map +1 -0
- package/dist/api/presentation/sheets.d.ts +176 -0
- package/dist/api/presentation/sheets.d.ts.map +1 -0
- package/dist/api/presentation/views.d.ts +296 -0
- package/dist/api/presentation/views.d.ts.map +1 -0
- package/dist/api/program/adjacency.d.ts +155 -0
- package/dist/api/program/adjacency.d.ts.map +1 -0
- package/dist/api/program/areas.d.ts +360 -0
- package/dist/api/program/areas.d.ts.map +1 -0
- package/dist/api/program/classification.d.ts +135 -0
- package/dist/api/program/classification.d.ts.map +1 -0
- package/dist/api/program/cores.d.ts +174 -0
- package/dist/api/program/cores.d.ts.map +1 -0
- package/dist/api/program/departments.d.ts +431 -0
- package/dist/api/program/departments.d.ts.map +1 -0
- package/dist/api/program/index.d.ts +69 -0
- package/dist/api/program/index.d.ts.map +1 -0
- package/dist/api/program/layout.d.ts +63 -0
- package/dist/api/program/layout.d.ts.map +1 -0
- package/dist/api/program/metrics.d.ts +108 -0
- package/dist/api/program/metrics.d.ts.map +1 -0
- package/dist/api/program/site.d.ts +367 -0
- package/dist/api/program/site.d.ts.map +1 -0
- package/dist/api/program/spreadsheet.d.ts +2041 -0
- package/dist/api/program/spreadsheet.d.ts.map +1 -0
- package/dist/handles.d.ts +138 -0
- package/dist/handles.d.ts.map +1 -0
- package/dist/host-utils.d.ts +7 -5
- package/dist/host-utils.d.ts.map +1 -1
- package/dist/index.cjs +3897 -1542
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3326 -1462
- package/dist/index.js.map +1 -1
- package/package.json +6 -2
- package/scripts/generate-manifest.mjs +193 -0
- package/scripts/generate-manifest.test.mjs +193 -0
- package/src/api/core/buildings.ts +485 -0
- package/src/api/core/comment/index.ts +258 -0
- package/src/api/core/geom/create/index.ts +293 -0
- package/src/api/core/geom/delete/index.ts +78 -0
- package/src/api/core/geom/index.ts +24 -23
- package/src/api/core/geom/query/arc.ts +169 -0
- package/src/api/core/geom/query/brep.ts +444 -0
- package/src/api/core/geom/query/circle.ts +404 -0
- package/src/api/core/geom/query/contour.ts +540 -0
- package/src/api/core/geom/query/curve.ts +1078 -0
- package/src/api/core/geom/query/edge.ts +130 -0
- package/src/api/core/geom/query/face.ts +403 -0
- package/src/api/core/geom/query/halfedge.ts +210 -0
- package/src/api/core/geom/query/index.ts +63 -0
- package/src/api/core/geom/query/profile.ts +473 -0
- package/src/api/core/geom/query/vertex.ts +205 -0
- package/src/api/core/geom/update/contour.ts +315 -0
- package/src/api/core/geom/update/curve.ts +209 -0
- package/src/api/core/geom/update/index.ts +29 -0
- package/src/api/core/geom/update/profile.ts +377 -0
- package/src/api/core/groups.ts +521 -0
- package/src/api/core/history/index.ts +84 -0
- package/src/api/core/index.ts +46 -1
- package/src/api/core/layers.ts +333 -0
- package/src/api/core/math/quat.ts +112 -235
- package/src/api/core/math/vec3.ts +124 -159
- package/src/api/core/project/index.ts +418 -0
- package/src/api/core/tags.ts +808 -0
- package/src/api/core/units/index.ts +164 -0
- package/src/api/core/zoom/index.ts +47 -0
- package/src/api/design/boolean/index.ts +179 -0
- package/src/api/design/create/index.ts +886 -0
- package/src/api/design/delete/index.ts +67 -0
- package/src/api/design/doors/index.ts +285 -0
- package/src/api/design/edit/index.ts +54 -0
- package/src/api/design/erase/index.ts +151 -0
- package/src/api/design/furniture/index.ts +130 -0
- package/src/api/design/index.ts +162 -0
- package/src/api/design/lock.ts +42 -0
- package/src/api/design/materials/index.ts +301 -0
- package/src/api/design/query/geometry/index.ts +166 -0
- package/src/api/design/query/index.ts +937 -0
- package/src/api/design/query/spaces.ts +132 -0
- package/src/api/design/selection/index.ts +144 -0
- package/src/api/design/shared.ts +40 -0
- package/src/api/design/transform/index.ts +93 -0
- package/src/api/design/update/index.ts +117 -0
- package/src/api/design/windows/index.ts +207 -0
- package/src/api/entity/buildableEnvelope.ts +64 -23
- package/src/api/entity/department.ts +0 -113
- package/src/api/entity/index.ts +4 -9
- package/src/api/entity/referenceLine.ts +50 -38
- package/src/api/entity/space.ts +84 -440
- package/src/api/entity/story.ts +53 -42
- package/src/api/index.ts +17 -17
- package/src/api/presentation/aiInspiration.ts +362 -0
- package/src/api/presentation/diagrams.ts +84 -0
- package/src/api/presentation/import.ts +112 -0
- package/src/api/presentation/index.ts +48 -0
- package/src/api/presentation/sheets.ts +198 -0
- package/src/api/presentation/views.ts +303 -0
- package/src/api/program/adjacency.ts +164 -0
- package/src/api/program/areas.ts +335 -0
- package/src/api/program/classification.ts +138 -0
- package/src/api/program/cores.ts +171 -0
- package/src/api/program/departments.ts +465 -0
- package/src/api/program/index.ts +71 -0
- package/src/api/program/layout.ts +68 -0
- package/src/api/program/metrics.ts +120 -0
- package/src/api/program/site.ts +326 -0
- package/src/api/program/spreadsheet.ts +2075 -0
- package/src/handles.ts +148 -0
- package/src/host-utils.ts +10 -6
- package/src/index.ts +1 -0
- package/dist/api/core/geom/arc.d.ts +0 -81
- package/dist/api/core/geom/arc.d.ts.map +0 -1
- package/dist/api/core/geom/curve.d.ts +0 -70
- package/dist/api/core/geom/curve.d.ts.map +0 -1
- package/dist/api/core/geom/line.d.ts +0 -56
- package/dist/api/core/geom/line.d.ts.map +0 -1
- package/dist/api/core/geom/profile.d.ts +0 -121
- package/dist/api/core/geom/profile.d.ts.map +0 -1
- package/dist/api/documentation/aiInspiration.d.ts +0 -2155
- package/dist/api/documentation/aiInspiration.d.ts.map +0 -1
- package/dist/api/documentation/index.d.ts +0 -13
- package/dist/api/documentation/index.d.ts.map +0 -1
- package/dist/api/tools/copy.d.ts +0 -59
- package/dist/api/tools/copy.d.ts.map +0 -1
- package/dist/api/tools/index.d.ts +0 -29
- package/dist/api/tools/index.d.ts.map +0 -1
- package/dist/api/tools/offset.d.ts +0 -43
- package/dist/api/tools/offset.d.ts.map +0 -1
- package/dist/api/tools/selection.d.ts +0 -48
- package/dist/api/tools/selection.d.ts.map +0 -1
- package/dist/api/tools/transform.d.ts +0 -114
- package/dist/api/tools/transform.d.ts.map +0 -1
- package/dist/api/units/index.d.ts +0 -163
- package/dist/api/units/index.d.ts.map +0 -1
- package/src/api/core/geom/arc.ts +0 -70
- package/src/api/core/geom/curve.ts +0 -41
- package/src/api/core/geom/line.ts +0 -53
- package/src/api/core/geom/profile.ts +0 -94
- package/src/api/documentation/aiInspiration.ts +0 -871
- package/src/api/documentation/index.ts +0 -15
- package/src/api/tools/copy.ts +0 -55
- package/src/api/tools/index.ts +0 -35
- package/src/api/tools/offset.ts +0 -43
- package/src/api/tools/selection.ts +0 -51
- package/src/api/tools/transform.ts +0 -117
- package/src/api/units/index.ts +0 -163
|
@@ -1,214 +1,179 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { PluginApiReturn } from "../../../types"
|
|
2
|
+
import { Vec3Handle, Vec3Components } from "../../../handles"
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
|
-
* 3D vector operations
|
|
5
|
+
* 3D vector operations (all-handle model, §11).
|
|
5
6
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* Accessed via `snaptrude.core.math.vec3`.
|
|
7
|
+
* Vectors are opaque {@linkcode Vec3Handle}s; every operation is a host call
|
|
8
|
+
* returning a new handle (vectors are immutable). Read primitive components back
|
|
9
|
+
* with {@linkcode PluginVec3Api.components}. Accessed via `snaptrude.core.math.vec3`.
|
|
10
10
|
*/
|
|
11
11
|
export abstract class PluginVec3Api {
|
|
12
12
|
constructor() {}
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
|
-
* Create a
|
|
16
|
-
*
|
|
17
|
-
* @param x - The X component
|
|
18
|
-
* @param y - The Y component
|
|
19
|
-
* @param z - The Z component
|
|
20
|
-
* @returns A new {@linkcode PVec3}
|
|
15
|
+
* Create a vector from primitive components.
|
|
21
16
|
*
|
|
22
17
|
* # Example
|
|
23
18
|
* ```ts
|
|
24
|
-
* const
|
|
25
|
-
*
|
|
19
|
+
* const v = await snaptrude.core.math.vec3.new(10, 0, 5)
|
|
20
|
+
* const { x, y, z } = await snaptrude.core.math.vec3.components(v)
|
|
26
21
|
* ```
|
|
27
22
|
*/
|
|
28
|
-
new(x: number, y: number, z: number):
|
|
29
|
-
return { x, y, z }
|
|
30
|
-
}
|
|
31
|
-
|
|
23
|
+
abstract new(x: number, y: number, z: number): PluginApiReturn<Vec3Handle>
|
|
32
24
|
/**
|
|
33
|
-
* Add two vectors component-wise.
|
|
25
|
+
* Add two vectors component-wise (`a + b`).
|
|
34
26
|
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
27
|
+
* # Example
|
|
28
|
+
* ```ts
|
|
29
|
+
* const a = await snaptrude.core.math.vec3.new(1, 0, 0)
|
|
30
|
+
* const b = await snaptrude.core.math.vec3.new(0, 1, 0)
|
|
31
|
+
* const sum = await snaptrude.core.math.vec3.add(a, b)
|
|
32
|
+
* ```
|
|
38
33
|
*/
|
|
39
|
-
add(a:
|
|
40
|
-
return { x: a.x + b.x, y: a.y + b.y, z: a.z + b.z }
|
|
41
|
-
}
|
|
42
|
-
|
|
34
|
+
abstract add(a: Vec3Handle, b: Vec3Handle): PluginApiReturn<Vec3Handle>
|
|
43
35
|
/**
|
|
44
|
-
* Subtract vector
|
|
36
|
+
* Subtract vector `b` from `a` component-wise (`a - b`).
|
|
45
37
|
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
38
|
+
* # Example
|
|
39
|
+
* ```ts
|
|
40
|
+
* const a = await snaptrude.core.math.vec3.new(3, 2, 1)
|
|
41
|
+
* const b = await snaptrude.core.math.vec3.new(1, 1, 1)
|
|
42
|
+
* const diff = await snaptrude.core.math.vec3.subtract(a, b)
|
|
43
|
+
* ```
|
|
49
44
|
*/
|
|
50
|
-
subtract(a:
|
|
51
|
-
return { x: a.x - b.x, y: a.y - b.y, z: a.z - b.z }
|
|
52
|
-
}
|
|
53
|
-
|
|
45
|
+
abstract subtract(a: Vec3Handle, b: Vec3Handle): PluginApiReturn<Vec3Handle>
|
|
54
46
|
/**
|
|
55
|
-
* Scale
|
|
47
|
+
* Scale `v` by a scalar.
|
|
56
48
|
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
49
|
+
* # Example
|
|
50
|
+
* ```ts
|
|
51
|
+
* const v = await snaptrude.core.math.vec3.new(1, 2, 3)
|
|
52
|
+
* const doubled = await snaptrude.core.math.vec3.scale(v, 2)
|
|
53
|
+
* ```
|
|
60
54
|
*/
|
|
61
|
-
scale(v:
|
|
62
|
-
return { x: v.x * scalar, y: v.y * scalar, z: v.z * scalar }
|
|
63
|
-
}
|
|
64
|
-
|
|
55
|
+
abstract scale(v: Vec3Handle, scalar: number): PluginApiReturn<Vec3Handle>
|
|
65
56
|
/**
|
|
66
57
|
* Compute the dot product of two vectors.
|
|
67
58
|
*
|
|
68
|
-
*
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
-
*
|
|
74
|
-
* @returns The scalar dot product
|
|
59
|
+
* # Example
|
|
60
|
+
* ```ts
|
|
61
|
+
* const a = await snaptrude.core.math.vec3.new(1, 0, 0)
|
|
62
|
+
* const b = await snaptrude.core.math.vec3.new(0.5, 0.5, 0)
|
|
63
|
+
* const d = await snaptrude.core.math.vec3.dot(a, b) // 0.5
|
|
64
|
+
* ```
|
|
75
65
|
*/
|
|
76
|
-
dot(a:
|
|
77
|
-
return a.x * b.x + a.y * b.y + a.z * b.z
|
|
78
|
-
}
|
|
79
|
-
|
|
66
|
+
abstract dot(a: Vec3Handle, b: Vec3Handle): PluginApiReturn<number>
|
|
80
67
|
/**
|
|
81
|
-
* Compute the cross product
|
|
68
|
+
* Compute the cross product `a × b` — the vector perpendicular to both.
|
|
82
69
|
*
|
|
83
|
-
*
|
|
84
|
-
*
|
|
85
|
-
*
|
|
86
|
-
*
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
* @returns A new {@linkcode PVec3} perpendicular to both {@linkcode a} and {@linkcode b}
|
|
70
|
+
* # Example
|
|
71
|
+
* ```ts
|
|
72
|
+
* const a = await snaptrude.core.math.vec3.new(1, 0, 0)
|
|
73
|
+
* const b = await snaptrude.core.math.vec3.new(0, 1, 0)
|
|
74
|
+
* const perpendicular = await snaptrude.core.math.vec3.cross(a, b)
|
|
75
|
+
* ```
|
|
90
76
|
*/
|
|
91
|
-
cross(a:
|
|
92
|
-
return {
|
|
93
|
-
x: a.y * b.z - a.z * b.y,
|
|
94
|
-
y: a.z * b.x - a.x * b.z,
|
|
95
|
-
z: a.x * b.y - a.y * b.x,
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
|
|
77
|
+
abstract cross(a: Vec3Handle, b: Vec3Handle): PluginApiReturn<Vec3Handle>
|
|
99
78
|
/**
|
|
100
|
-
* Compute the length (magnitude) of a vector.
|
|
79
|
+
* Compute the Euclidean length (magnitude) of a vector.
|
|
101
80
|
*
|
|
102
|
-
*
|
|
103
|
-
*
|
|
81
|
+
* # Example
|
|
82
|
+
* ```ts
|
|
83
|
+
* const v = await snaptrude.core.math.vec3.new(3, 4, 0)
|
|
84
|
+
* const len = await snaptrude.core.math.vec3.length(v) // 5
|
|
85
|
+
* ```
|
|
104
86
|
*/
|
|
105
|
-
length(v:
|
|
106
|
-
return Math.sqrt(v.x * v.x + v.y * v.y + v.z * v.z)
|
|
107
|
-
}
|
|
108
|
-
|
|
87
|
+
abstract length(v: Vec3Handle): PluginApiReturn<number>
|
|
109
88
|
/**
|
|
110
|
-
* Compute the squared length of a vector.
|
|
111
|
-
*
|
|
112
|
-
* Avoids the `sqrt` call — prefer this over {@linkcode PluginVec3Api.length}
|
|
113
|
-
* when comparing relative magnitudes.
|
|
89
|
+
* Compute the squared Euclidean length of a vector (avoids the sqrt).
|
|
114
90
|
*
|
|
115
|
-
*
|
|
116
|
-
*
|
|
91
|
+
* # Example
|
|
92
|
+
* ```ts
|
|
93
|
+
* const v = await snaptrude.core.math.vec3.new(3, 4, 0)
|
|
94
|
+
* const sq = await snaptrude.core.math.vec3.lengthSquared(v) // 25
|
|
95
|
+
* ```
|
|
117
96
|
*/
|
|
118
|
-
lengthSquared(v:
|
|
119
|
-
return v.x * v.x + v.y * v.y + v.z * v.z
|
|
120
|
-
}
|
|
121
|
-
|
|
97
|
+
abstract lengthSquared(v: Vec3Handle): PluginApiReturn<number>
|
|
122
98
|
/**
|
|
123
|
-
*
|
|
99
|
+
* Return the unit vector in the same direction (the zero vector if length is 0).
|
|
124
100
|
*
|
|
125
|
-
*
|
|
126
|
-
*
|
|
127
|
-
*
|
|
101
|
+
* # Example
|
|
102
|
+
* ```ts
|
|
103
|
+
* const v = await snaptrude.core.math.vec3.new(0, 0, 10)
|
|
104
|
+
* const unit = await snaptrude.core.math.vec3.normalize(v) // (0, 0, 1)
|
|
105
|
+
* ```
|
|
128
106
|
*/
|
|
129
|
-
normalize(v:
|
|
130
|
-
const len = this.length(v)
|
|
131
|
-
if (len === 0) return { x: 0, y: 0, z: 0 }
|
|
132
|
-
return { x: v.x / len, y: v.y / len, z: v.z / len }
|
|
133
|
-
}
|
|
134
|
-
|
|
107
|
+
abstract normalize(v: Vec3Handle): PluginApiReturn<Vec3Handle>
|
|
135
108
|
/**
|
|
136
|
-
*
|
|
109
|
+
* Measure the straight-line (Euclidean) distance between two points.
|
|
110
|
+
*
|
|
111
|
+
* @examplePrompt What is the distance between these two points?
|
|
112
|
+
* @examplePrompt Measure how far apart these two points are
|
|
137
113
|
*
|
|
138
|
-
*
|
|
139
|
-
*
|
|
140
|
-
*
|
|
114
|
+
* # Example
|
|
115
|
+
* ```ts
|
|
116
|
+
* const a = await snaptrude.core.math.vec3.new(0, 0, 0)
|
|
117
|
+
* const b = await snaptrude.core.math.vec3.new(3, 4, 0)
|
|
118
|
+
* const dist = await snaptrude.core.math.vec3.distance(a, b) // 5
|
|
119
|
+
* ```
|
|
141
120
|
*/
|
|
142
|
-
distance(a:
|
|
143
|
-
return this.length(this.subtract(a, b))
|
|
144
|
-
}
|
|
145
|
-
|
|
121
|
+
abstract distance(a: Vec3Handle, b: Vec3Handle): PluginApiReturn<number>
|
|
146
122
|
/**
|
|
147
|
-
* Linearly interpolate between two vectors
|
|
123
|
+
* Linearly interpolate between two vectors: `a + (b - a) * t`.
|
|
148
124
|
*
|
|
149
|
-
*
|
|
150
|
-
*
|
|
151
|
-
*
|
|
152
|
-
*
|
|
125
|
+
* # Example
|
|
126
|
+
* ```ts
|
|
127
|
+
* const a = await snaptrude.core.math.vec3.new(0, 0, 0)
|
|
128
|
+
* const b = await snaptrude.core.math.vec3.new(10, 0, 0)
|
|
129
|
+
* const midpoint = await snaptrude.core.math.vec3.lerp(a, b, 0.5)
|
|
130
|
+
* ```
|
|
153
131
|
*/
|
|
154
|
-
lerp(a:
|
|
155
|
-
return {
|
|
156
|
-
x: a.x + (b.x - a.x) * t,
|
|
157
|
-
y: a.y + (b.y - a.y) * t,
|
|
158
|
-
z: a.z + (b.z - a.z) * t,
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
|
|
132
|
+
abstract lerp(a: Vec3Handle, b: Vec3Handle, t: number): PluginApiReturn<Vec3Handle>
|
|
162
133
|
/**
|
|
163
|
-
* Negate a vector
|
|
134
|
+
* Negate a vector, reversing its direction.
|
|
164
135
|
*
|
|
165
|
-
*
|
|
166
|
-
*
|
|
136
|
+
* # Example
|
|
137
|
+
* ```ts
|
|
138
|
+
* const v = await snaptrude.core.math.vec3.new(1, -2, 3)
|
|
139
|
+
* const reversed = await snaptrude.core.math.vec3.negate(v) // (-1, 2, -3)
|
|
140
|
+
* ```
|
|
167
141
|
*/
|
|
168
|
-
negate(v:
|
|
169
|
-
return { x: -v.x, y: -v.y, z: -v.z }
|
|
170
|
-
}
|
|
171
|
-
|
|
142
|
+
abstract negate(v: Vec3Handle): PluginApiReturn<Vec3Handle>
|
|
172
143
|
/**
|
|
173
|
-
*
|
|
144
|
+
* Test whether two vectors have exactly equal components.
|
|
174
145
|
*
|
|
175
|
-
*
|
|
146
|
+
* # Example
|
|
147
|
+
* ```ts
|
|
148
|
+
* const a = await snaptrude.core.math.vec3.new(1, 2, 3)
|
|
149
|
+
* const b = await snaptrude.core.math.vec3.new(1, 2, 3)
|
|
150
|
+
* const same = await snaptrude.core.math.vec3.equals(a, b) // true
|
|
151
|
+
* ```
|
|
152
|
+
*/
|
|
153
|
+
abstract equals(a: Vec3Handle, b: Vec3Handle): PluginApiReturn<boolean>
|
|
154
|
+
/**
|
|
155
|
+
* Test whether two vectors are equal within a tolerance `epsilon` (default `1e-6`).
|
|
176
156
|
*
|
|
177
|
-
*
|
|
178
|
-
*
|
|
179
|
-
*
|
|
157
|
+
* # Example
|
|
158
|
+
* ```ts
|
|
159
|
+
* const a = await snaptrude.core.math.vec3.new(1, 2, 3)
|
|
160
|
+
* const b = await snaptrude.core.math.vec3.new(1.0004, 2, 3)
|
|
161
|
+
* const close = await snaptrude.core.math.vec3.equalsApprox(a, b, 1e-3) // true
|
|
162
|
+
* ```
|
|
180
163
|
*/
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
164
|
+
abstract equalsApprox(
|
|
165
|
+
a: Vec3Handle,
|
|
166
|
+
b: Vec3Handle,
|
|
167
|
+
epsilon?: number,
|
|
168
|
+
): PluginApiReturn<boolean>
|
|
185
169
|
/**
|
|
186
|
-
*
|
|
170
|
+
* Read the primitive `{ x, y, z }` components of a vector handle.
|
|
187
171
|
*
|
|
188
|
-
*
|
|
189
|
-
*
|
|
190
|
-
*
|
|
191
|
-
*
|
|
172
|
+
* # Example
|
|
173
|
+
* ```ts
|
|
174
|
+
* const v = await snaptrude.core.math.vec3.new(1, 2, 3)
|
|
175
|
+
* const { x, y, z } = await snaptrude.core.math.vec3.components(v)
|
|
176
|
+
* ```
|
|
192
177
|
*/
|
|
193
|
-
|
|
194
|
-
return (
|
|
195
|
-
Math.abs(a.x - b.x) < epsilon &&
|
|
196
|
-
Math.abs(a.y - b.y) < epsilon &&
|
|
197
|
-
Math.abs(a.z - b.z) < epsilon
|
|
198
|
-
)
|
|
199
|
-
}
|
|
178
|
+
abstract components(v: Vec3Handle): PluginApiReturn<Vec3Components>
|
|
200
179
|
}
|
|
201
|
-
|
|
202
|
-
/**
|
|
203
|
-
* A 3D vector with `x`, `y`, and `z` components.
|
|
204
|
-
*
|
|
205
|
-
* Used throughout the plugin API for positions, directions, displacements,
|
|
206
|
-
* and Euler rotation angles. Equivalent to `BABYLON.Vector3`.
|
|
207
|
-
*/
|
|
208
|
-
export const PVec3 = z.object({
|
|
209
|
-
x: z.number(),
|
|
210
|
-
y: z.number(),
|
|
211
|
-
z: z.number(),
|
|
212
|
-
})
|
|
213
|
-
|
|
214
|
-
export type PVec3 = z.infer<typeof PVec3>
|