@hatiolab/figure-model 0.9.4 → 0.9.6
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/README.md +1 -1
- package/dist/authoring-actions.d.ts.map +1 -1
- package/dist/authoring-actions.js +16 -23
- package/dist/authoring-actions.js.map +1 -1
- package/dist/authoring-fastening.d.ts.map +1 -1
- package/dist/authoring-fastening.js +182 -13
- package/dist/authoring-fastening.js.map +1 -1
- package/dist/authoring-geometry.d.ts +17 -1
- package/dist/authoring-geometry.d.ts.map +1 -1
- package/dist/authoring-geometry.js +66 -5
- package/dist/authoring-geometry.js.map +1 -1
- package/dist/authoring-nodes.d.ts +20 -0
- package/dist/authoring-nodes.d.ts.map +1 -1
- package/dist/authoring-nodes.js +34 -0
- package/dist/authoring-nodes.js.map +1 -1
- package/dist/authoring-occupancy.d.ts.map +1 -1
- package/dist/authoring-occupancy.js +419 -109
- package/dist/authoring-occupancy.js.map +1 -1
- package/dist/authoring-size.d.ts +5 -10
- package/dist/authoring-size.d.ts.map +1 -1
- package/dist/authoring-size.js +28 -98
- package/dist/authoring-size.js.map +1 -1
- package/dist/authoring-types.d.ts +43 -23
- package/dist/authoring-types.d.ts.map +1 -1
- package/dist/contract.d.ts +4 -16
- package/dist/contract.d.ts.map +1 -1
- package/dist/contract.js.map +1 -1
- package/dist/create.d.ts +5 -3
- package/dist/create.d.ts.map +1 -1
- package/dist/create.js +3 -7
- package/dist/create.js.map +1 -1
- package/dist/face-overhang.d.ts +22 -2
- package/dist/face-overhang.d.ts.map +1 -1
- package/dist/face-overhang.js +139 -1
- package/dist/face-overhang.js.map +1 -1
- package/dist/fasten-place.d.ts +77 -0
- package/dist/fasten-place.d.ts.map +1 -1
- package/dist/fasten-place.js +214 -2
- package/dist/fasten-place.js.map +1 -1
- package/dist/gate.d.ts.map +1 -1
- package/dist/gate.js +28 -8
- package/dist/gate.js.map +1 -1
- package/dist/graph-types.d.ts +15 -2
- package/dist/graph-types.d.ts.map +1 -1
- package/dist/graph.js +15 -6
- package/dist/graph.js.map +1 -1
- package/dist/index.d.ts +6 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/instance-size.d.ts +58 -32
- package/dist/instance-size.d.ts.map +1 -1
- package/dist/instance-size.js +155 -41
- package/dist/instance-size.js.map +1 -1
- package/dist/joint-list.d.ts.map +1 -1
- package/dist/joint-list.js +3 -3
- package/dist/joint-list.js.map +1 -1
- package/dist/joint-writing.d.ts.map +1 -1
- package/dist/joint-writing.js +69 -8
- package/dist/joint-writing.js.map +1 -1
- package/dist/kernel-version.d.ts +1 -1
- package/dist/kernel-version.js +1 -1
- package/dist/part-edit.d.ts.map +1 -1
- package/dist/part-edit.js +2 -2
- package/dist/part-edit.js.map +1 -1
- package/dist/proposal.js +9 -9
- package/dist/proposal.js.map +1 -1
- package/dist/recipe-from-parts.js +5 -5
- package/dist/recipe-from-parts.js.map +1 -1
- package/dist/release-contract.d.ts.map +1 -1
- package/dist/release-contract.js +7 -2
- package/dist/release-contract.js.map +1 -1
- package/dist/release-metrics.d.ts.map +1 -1
- package/dist/release-metrics.js +6 -2
- package/dist/release-metrics.js.map +1 -1
- package/dist/resize-plan.d.ts.map +1 -1
- package/dist/resize-plan.js +4 -9
- package/dist/resize-plan.js.map +1 -1
- package/dist/room.d.ts.map +1 -1
- package/dist/room.js +13 -4
- package/dist/room.js.map +1 -1
- package/dist/shape-edit.d.ts +1 -1
- package/dist/shape-edit.js +1 -1
- package/dist/shape-extreme.d.ts +55 -4
- package/dist/shape-extreme.d.ts.map +1 -1
- package/dist/shape-extreme.js +118 -4
- package/dist/shape-extreme.js.map +1 -1
- package/dist/shape-provider.d.ts.map +1 -1
- package/dist/shape-provider.js +4 -3
- package/dist/shape-provider.js.map +1 -1
- package/dist/size-edit.d.ts +32 -8
- package/dist/size-edit.d.ts.map +1 -1
- package/dist/size-edit.js +68 -125
- package/dist/size-edit.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -42,7 +42,7 @@ import { parseFigureAsset, compileFigureAsset, inspectFigureAsset, figureScoreOf
|
|
|
42
42
|
| --- | --- |
|
|
43
43
|
| Asset document | `parseFigureAsset`, `serializeFigureAsset`, `compileFigureAsset`, `captureFigureAuthoredInputs`; types from `asset-types.ts`, `FIGURE_PLACEMENTS` |
|
|
44
44
|
| Kernel (typed graph) | `compileFigureGraph`, `FIGURE_OPERATORS`, `FIGURE_NON_AFFINE_OPERATORS`, `FIGURE_STATE_NON_AFFINE_OPERATORS`, `FIGURE_OPERATOR_STATE_POLICY`, `figureShapeFaces`, `FIGURE_KERNEL_VERSION`, `FIGURE_FACE_NORMALS`; graph types (`FigureGraph`, `FigureCompiledGraph`, …) |
|
|
45
|
-
| Instance size | `FIGURE_INSTANCE_SIZE_INPUTS`, `
|
|
45
|
+
| Instance size | `FIGURE_INSTANCE_SIZE_INPUTS`, `figureInstanceSizeRangeOf`, `figureInstanceSizeLimitsOf`, `recordFigureInstanceSize`, `forgetRecordedInstanceSize`, `fitNarrowedInstanceSize`, `figureSizeRangeFitsOf` |
|
|
46
46
|
| Motion and state | `driverValue`, `driverStates`, `normalisePhase`, `validateFigureDrivers`, `validateFigureStateInputs`, `advanceStateValue`, `stateInputPolicy` |
|
|
47
47
|
| Authoring commands | `createFigureAsset`, `addFigureBox`, `addFigurePrimitive`, `editFigurePart`, `applyFigureAuthoring`, `proposeFigureOccupancy`, `proposeFigureProportion`, `checkFigureJoints`, `figureAttachmentsOf`, `figureBindingsOf` |
|
|
48
48
|
| Editor workspace | `createFigureEditorWorkspace` |
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authoring-actions.d.ts","sourceRoot":"","sources":["../src/authoring-actions.ts"],"names":[],"mappings":"AA8BA,OAAO,EAAE,KAAK,iBAAiB,EAA2C,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"authoring-actions.d.ts","sourceRoot":"","sources":["../src/authoring-actions.ts"],"names":[],"mappings":"AA8BA,OAAO,EAAE,KAAK,iBAAiB,EAA2C,MAAM,mBAAmB,CAAA;AAkBnG,OAAO,KAAK,EAAE,WAAW,EAAqB,MAAM,kBAAkB,CAAA;AAEtE,OAAO,KAAK,EAAgC,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAyB/F,oGAAoG;AACpG,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,qBAAqB,EAC7B,OAAO,CAAC,EAAE,iBAAiB,GAC1B,WAAW,CAOb"}
|
|
@@ -28,14 +28,14 @@ import { figurePartsExtentOf } from "./gate.js";
|
|
|
28
28
|
import { compileFigureGraph } from "./graph.js";
|
|
29
29
|
import { figureFollowableAxesOf, figureShapeProviderOf } from "./shape-provider.js";
|
|
30
30
|
import { setFigureSectionCorner, setFigureCavity, setFigureSectionPoints, setFigureSectionApex, figureSectionSizeChanges } from "./shape-edit.js";
|
|
31
|
-
import {
|
|
31
|
+
import { figureSizeEditOf } from "./size-edit.js";
|
|
32
32
|
import { isDetailLevel, AXES } from "./words.js";
|
|
33
|
-
import {
|
|
33
|
+
import { fitNarrowedInstanceSize, FIGURE_INSTANCE_SIZE_INPUTS } from "./instance-size.js";
|
|
34
34
|
import { checkFigureExtensionKey, checkFigureExtensionValue, checkFigureExtensions } from "./extensions.js";
|
|
35
35
|
import { fail, clone, dropIfUnused, sizeInputOf } from "./authoring-nodes.js";
|
|
36
36
|
import { jointAbove, rewriteJoints, setJoint, applyFaceRemap, removeJoint, fastenAsJoint, setRepeat } from "./joint-writing.js";
|
|
37
37
|
import { linkDimension, unlinkDimension } from "./authoring-dimensions.js";
|
|
38
|
-
import { declareInstanceSize
|
|
38
|
+
import { declareInstanceSize } from "./authoring-size.js";
|
|
39
39
|
import { nudgePart, scaleUniformly, followSizeInProportion, scalePosition, fixPosition } from "./authoring-proportion.js";
|
|
40
40
|
import { setPlacement, declareOccupancy, setMountingFace, clearMountingFace, proposeFigureOccupancy } from "./authoring-occupancy.js";
|
|
41
41
|
import { addBinding, removeBinding, setSlotLayout, removeSlotLayout } from "./authoring-bindings.js";
|
|
@@ -265,9 +265,9 @@ function authoring(source, action) {
|
|
|
265
265
|
if (action.apex !== undefined)
|
|
266
266
|
setFigureSectionApex(asset, action.part, action.apex, (ref, owned) => dropIfUnused(asset, ref, owned));
|
|
267
267
|
const sizes = figureSectionSizeChanges(asset, action.part, action);
|
|
268
|
-
/*
|
|
268
|
+
/* Numbers typed: a free part keeps its middle, a fastened one its fastening (ADR-0140 4.1); its own position moves by that. */
|
|
269
269
|
if (sizes.length)
|
|
270
|
-
for (const c of
|
|
270
|
+
for (const c of figureSizeEditOf(asset, action.part, sizes, { keep: 'centre' }).changes)
|
|
271
271
|
asset.designInputs[c.input] = c.value;
|
|
272
272
|
/* After the widths: the figure is judged once, at the end, with both. */
|
|
273
273
|
if (action.cavity !== undefined)
|
|
@@ -290,20 +290,19 @@ function authoring(source, action) {
|
|
|
290
290
|
/* An input a command took away takes its place on the board with it (ADR-0096). */
|
|
291
291
|
keepPublicInputs(asset);
|
|
292
292
|
/*
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
293
|
+
The ends of the size its author narrowed follow the parts: a command that makes one impossible moves it in to what
|
|
294
|
+
the parts allow, and is not refused for it (ADR-0087 decision 6). A compiled asset is not changed afterwards
|
|
295
|
+
(ADR-0119 decision 4), so the asset is compiled as it is first -- its own refusals keep their order -- and an end
|
|
296
|
+
that moves is moved on a copy, compiled in its turn. A figure whose ends are all open pays nothing.
|
|
297
297
|
*/
|
|
298
298
|
let result = asset;
|
|
299
|
-
if ((
|
|
300
|
-
action.narrowRange) {
|
|
299
|
+
if (AXES.some(axis => sizeInputOf(asset.document.model, axis)?.min !== undefined || sizeInputOf(asset.document.model, axis)?.max !== undefined)) {
|
|
301
300
|
compileFigureAsset(asset);
|
|
302
|
-
|
|
303
|
-
|
|
301
|
+
const fitted = clone(asset);
|
|
302
|
+
if (fitNarrowedInstanceSize(fitted).length)
|
|
303
|
+
result = fitted;
|
|
304
304
|
}
|
|
305
305
|
compileAndSealFigureAsset(result);
|
|
306
|
-
holdsOverDeclaredSize(result, source);
|
|
307
306
|
return result;
|
|
308
307
|
}
|
|
309
308
|
function followSize(source, a) {
|
|
@@ -320,17 +319,12 @@ function followSize(source, a) {
|
|
|
320
319
|
fail('EDIT_TARGET', `${path}.${axis}`, `${a.part} has no measure of its own along ${axis}`);
|
|
321
320
|
let asset = source;
|
|
322
321
|
const m = asset.document.model;
|
|
323
|
-
if (!AXES.every(axis => sizeInputOf(m, axis)))
|
|
324
|
-
const at = figurePartsExtentOf(asset);
|
|
325
|
-
const start = defaultInstanceSizeRange(at);
|
|
326
|
-
const range = foldInstanceSizeRange(start, figureInstanceSizeLimitsOf(asset, start)).range;
|
|
322
|
+
if (!AXES.every(axis => sizeInputOf(m, axis)))
|
|
327
323
|
asset = applyFigureAuthoring(asset, {
|
|
328
324
|
kind: 'declare-instance-size',
|
|
329
|
-
|
|
330
|
-
at,
|
|
325
|
+
at: figurePartsExtentOf(asset),
|
|
331
326
|
replace: AXES.some(axis => sizeInputOf(m, axis))
|
|
332
327
|
});
|
|
333
|
-
}
|
|
334
328
|
const values = compileFigureGraph(asset.document.model).evaluate({
|
|
335
329
|
...asset.designInputs,
|
|
336
330
|
...asset.stateDefaults
|
|
@@ -350,8 +344,7 @@ function followSize(source, a) {
|
|
|
350
344
|
axis,
|
|
351
345
|
source: { of: 'instance', axis },
|
|
352
346
|
times: measure / size,
|
|
353
|
-
replace: true
|
|
354
|
-
narrowRange: true
|
|
347
|
+
replace: true
|
|
355
348
|
});
|
|
356
349
|
}
|
|
357
350
|
/*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authoring-actions.js","sourceRoot":"","sources":["../src/authoring-actions.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"authoring-actions.js","sourceRoot":"","sources":["../src/authoring-actions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authoring-fastening.d.ts","sourceRoot":"","sources":["../src/authoring-fastening.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,IAAI,EAAQ,MAAM,YAAY,CAAA;AAC5C,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACzB,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"authoring-fastening.d.ts","sourceRoot":"","sources":["../src/authoring-fastening.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,IAAI,EAAQ,MAAM,YAAY,CAAA;AAC5C,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACzB,MAAM,sBAAsB,CAAA;AAkD7B,KAAK,OAAO,GAAG,GAAG,CAAA;AAElB;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,gBAAgB,CAAA;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAA;IAC7C,YAAY,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;IAC5C,IAAI,EAAE,MAAM,CAAA;CACb;AAKD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI,CA4JnF;AA2HD;;;;GAIG;AACH,wBAAgB,QAAQ,CACtB,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,MAAM,EACZ,CAAC,EAAE,MAAM,EAAE,EAAE,EACb,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,EACrC,IAAI,EAAE,MAAM,EAAE,EAAE,QAkBjB;AAED;;;GAGG;AACH;;;;;;;;;;GAUG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE;IAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,IAAI,CAuE/G;AAQD,wBAAgB,SAAS,CACvB,KAAK,EAAE,OAAO,EACd,CAAC,EAAE,mBAAmB,EACtB,MAAM,CAAC,EAAE;IAAE,KAAK,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,OAAO,CAAA;CAAE,EAC7E,IAAI,GAAE,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,EAAM,GAC1B,OAAO,CAiLT;AAED,qGAAqG;AACrG,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAsBhG"}
|
|
@@ -8,9 +8,10 @@
|
|
|
8
8
|
import { figurePlacementOf } from "./asset.js";
|
|
9
9
|
import { AXES } from "./words.js";
|
|
10
10
|
import { FIGURE_FACINGS } from "./authoring-types.js";
|
|
11
|
-
import { figureShapeExtremeAlong, lin, plus, times, writeFigureReach } from "./shape-extreme.js";
|
|
11
|
+
import { figureDiscOf, figureReachRefs, figureReachValue, figureRoundAbout, figureShapeExtremeAlong, figureSurfaceFormOf, figureSurfacePointOf, lin, plus, times, writeFigureReach } from "./shape-extreme.js";
|
|
12
|
+
import { compileFigureGraph } from "./graph.js";
|
|
12
13
|
import { fail, nodeById, writerOf, partOf, namer, constantOf, scaled, measureRef, termRefs, sumOf, sourceRef, ownInput, dropIfUnused, parentOf, round6, sizeInputOf } from "./authoring-nodes.js";
|
|
13
|
-
import { half, facesOfPart, planeOf, ownSpansOf, transpose3, isIdentity, eulerOfAny, rpyMatrix, mv3, IDENTITY } from "./authoring-geometry.js";
|
|
14
|
+
import { half, facesOfPart, planeOf, ownSpansOf, transpose3, isIdentity, eulerOfAny, rpyMatrix, aroundNormalOf, mv3, mul3, IDENTITY } from "./authoring-geometry.js";
|
|
14
15
|
const unitAlong = (axis, sign) => AXES.map(x => (x === axis ? sign : 0));
|
|
15
16
|
/**
|
|
16
17
|
* A part fastened, in the pose `childRotate` gives it, to a face of its parent or to the mounting plane (ADR-0140 3):
|
|
@@ -41,7 +42,26 @@ export function placeOnFace(asset, j, frame) {
|
|
|
41
42
|
/* The face: its axis, its outward sign and where it lies, in the parent's own frame; across it, the parent's edges. */
|
|
42
43
|
let axis, sign, plane;
|
|
43
44
|
const edges = {};
|
|
44
|
-
|
|
45
|
+
/* An end disc's radii across it (3.9): min and max touch its rim, not its square. */
|
|
46
|
+
let disc;
|
|
47
|
+
/*
|
|
48
|
+
On a curved surface (3.9) the part is placed in the surface's frame there: y its outward normal, x along a cylinder's
|
|
49
|
+
push (or across a sphere's), at the point the surface faces that way -- a flat face lying at y = 0 in that frame, its
|
|
50
|
+
edges a cylinder's ends. Where on it is the surface's own words.
|
|
51
|
+
*/
|
|
52
|
+
let surface;
|
|
53
|
+
if ('surface' in to) {
|
|
54
|
+
if (to.part === child)
|
|
55
|
+
fail('ATTACH_CYCLE', path, 'a part cannot be fastened to itself');
|
|
56
|
+
surface = surfaceFrameOf(m, to.part, to.surface, path);
|
|
57
|
+
axis = 'y';
|
|
58
|
+
sign = 1;
|
|
59
|
+
plane = [];
|
|
60
|
+
const push = surface.push;
|
|
61
|
+
if (push)
|
|
62
|
+
edges.x = { lo: push.lo.terms, hi: push.hi.terms };
|
|
63
|
+
}
|
|
64
|
+
else if (onPlane) {
|
|
45
65
|
const placement = figurePlacementOf(asset);
|
|
46
66
|
axis = placement === 'wall' ? 'z' : 'y';
|
|
47
67
|
sign = 1;
|
|
@@ -63,6 +83,9 @@ export function placeOnFace(asset, j, frame) {
|
|
|
63
83
|
const face = Object.hasOwn(target.faces, String(to.face)) ? target.faces[to.face] : undefined;
|
|
64
84
|
if (!face)
|
|
65
85
|
fail('SCHEMA', path, `${to.part} has no face ${String(to.face)}; it has ${Object.keys(target.faces).join(', ')}`);
|
|
86
|
+
/* A cylinder's side is curved: a part is fastened to a point on it, not to the plane touching it (3.9). */
|
|
87
|
+
if (face.contact === 'line')
|
|
88
|
+
fail('ATTACH_FACE', path, `${to.part}'s ${String(to.face)} is the curved side of a cylinder; fasten to a point on it -- surface: { around, along } (ADR-0140 3.9)`);
|
|
66
89
|
axis = face.axis;
|
|
67
90
|
sign = face.normal;
|
|
68
91
|
plane = planeOf(target.shape, face);
|
|
@@ -70,10 +93,12 @@ export function placeOnFace(asset, j, frame) {
|
|
|
70
93
|
for (const x of AXES.filter(x => x !== axis))
|
|
71
94
|
if (spans[x])
|
|
72
95
|
edges[x] = { lo: spans[x].lo, hi: spans[x].hi };
|
|
96
|
+
disc = figureDiscOf(m, to.part, String(to.face), path);
|
|
73
97
|
}
|
|
74
98
|
/* The child's pose in the parent's frame, and how far its real shape reaches along a direction there. */
|
|
75
99
|
const rotate = o.childRotate ?? {};
|
|
76
|
-
|
|
100
|
+
/* Its pose in the frame it is placed in: the parent's own, or the surface's there (Sᵀ·C). */
|
|
101
|
+
const C = surface ? mul3(transpose3(surface.frame), rpyMatrix(rotate)) : rpyMatrix(rotate);
|
|
77
102
|
const reach = (d) => figureShapeExtremeAlong(m, child, mv3(transpose3(C), d), path);
|
|
78
103
|
const gap = o.gap === undefined ? lin([]) : lin([{ ref: measureRef(m, asset, name, o.gap, `gap.${axis}`, path), k: 1 }]);
|
|
79
104
|
const [toward, away] = [reach(unitAlong(axis, -sign)), reach(unitAlong(axis, sign))];
|
|
@@ -88,24 +113,41 @@ export function placeOnFace(asset, j, frame) {
|
|
|
88
113
|
: plus(face, times(plus(gap, times(plus(toward, times(away, -1)), 0.5)), sign));
|
|
89
114
|
/* On the face; by its middle (centre), at that middle, gap and all -- it turns in place, a roller spinning. */
|
|
90
115
|
seat[axis] = facing === 'centre' ? plus(at[axis], times(plus(reach(unitAlong(axis, 1)), times(reach(unitAlong(axis, -1)), -1)), 0.5)) : face;
|
|
91
|
-
|
|
116
|
+
const across = AXES.filter(x => x !== axis);
|
|
117
|
+
const howOf = (u) => (surface ? (surface.along[u] ?? 'centre') : (o.align?.[u] ?? 'centre'));
|
|
118
|
+
const isOffset = (how) => typeof how === 'object' && !!how && Object.hasOwn(how, 'mm');
|
|
119
|
+
/* A measured offset from the middle, written once though both axes of a disc read it. */
|
|
120
|
+
const offsets = {};
|
|
121
|
+
const offsetOf = (u) => {
|
|
122
|
+
const how = howOf(u);
|
|
123
|
+
return (offsets[u] ??= isOffset(how) ? lin([{ ref: measureRef(m, asset, name, how.mm, `align.${u}`, path), k: 1 }]) : lin([]));
|
|
124
|
+
};
|
|
125
|
+
const rim = disc && rimOf(asset, m, disc, across, howOf, offsetOf, { child, part: String(to.part), face: String(to.face), C, reach, path });
|
|
126
|
+
for (const u of across) {
|
|
92
127
|
const [hi, lo] = [reach(unitAlong(u, 1)), reach(unitAlong(u, -1))];
|
|
93
128
|
/* The middle of its real extent, from its origin: (e(+u) − e(−u)) / 2. */
|
|
94
129
|
const middle = times(plus(hi, times(lo, -1)), 0.5);
|
|
95
|
-
const how =
|
|
130
|
+
const how = howOf(u);
|
|
96
131
|
const edge = edges[u];
|
|
97
132
|
if (how === 'min' || how === 'max') {
|
|
98
133
|
if (!edge)
|
|
99
134
|
fail(onPlane ? 'SCHEMA' : 'ATTACH_FACE', path, onPlane ? `the plane has no edges to line ${child} up with on ${u}; declare the figure's size, or give the centre or a measured offset` : `${to.part} has no edges along ${u} to line ${child} up with; give the centre or a measured offset`);
|
|
135
|
+
if (rim) {
|
|
136
|
+
/* On a disc it touches the rim from inside: its middle that far from the disc's, its edge on the rim (3.9). */
|
|
137
|
+
const mid = lin([...half(edge.lo), ...half(edge.hi)]);
|
|
138
|
+
const side = how === 'min' ? -1 : 1;
|
|
139
|
+
at[u] = plus(mid, times(rim.middle, side), times(middle, -1));
|
|
140
|
+
seat[u] = how === 'min' ? plus(at[u], times(lo, -1)) : plus(at[u], hi);
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
100
143
|
at[u] = how === 'min' ? plus(lin(edge.lo), lo) : plus(lin(edge.hi), times(hi, -1));
|
|
101
144
|
/* Level with an edge, it turns about that edge, as a hinge does (ADR-0107 decision 1). */
|
|
102
145
|
seat[u] = lin(how === 'min' ? edge.lo : edge.hi);
|
|
103
146
|
continue;
|
|
104
147
|
}
|
|
105
|
-
else if (how === 'centre' || (
|
|
148
|
+
else if (how === 'centre' || isOffset(how)) {
|
|
106
149
|
const mid = edge ? lin([...half(edge.lo), ...half(edge.hi)]) : lin([]);
|
|
107
|
-
|
|
108
|
-
at[u] = plus(mid, off, times(middle, -1));
|
|
150
|
+
at[u] = plus(mid, offsetOf(u), times(middle, -1));
|
|
109
151
|
}
|
|
110
152
|
else
|
|
111
153
|
fail('SCHEMA', path, `${String(how)} is not an alignment`);
|
|
@@ -122,7 +164,7 @@ export function placeOnFace(asset, j, frame) {
|
|
|
122
164
|
const spans = facing === 'meet' && k >= 0 ? ownSpansOf(m, child, path) : {};
|
|
123
165
|
const along = k >= 0 ? spans[AXES[k]] : undefined;
|
|
124
166
|
if (!along)
|
|
125
|
-
fail('JOINT_SCHEMA', `${path}.origin.pivot`, `${child} meets ${onPlane ? 'the plane' : `${to.part}'s ${to.face}`} at a point or a line${facing === 'meet' ? '' : ` (${facing})`}, not by a face of its own; child-face has no face to turn about -- child-centre or seat`);
|
|
167
|
+
fail('JOINT_SCHEMA', `${path}.origin.pivot`, `${child} meets ${onPlane ? 'the plane' : surface ? `${to.part}'s surface` : `${to.part}'s ${to.face}`} at a point or a line${facing === 'meet' ? '' : ` (${facing})`}, not by a face of its own; child-face has no face to turn about -- child-centre or seat`);
|
|
126
168
|
/* The face's centre in the child's own frame, turned into the parent's and placed with the child. */
|
|
127
169
|
const centre = AXES.map((x, i) => (i === k ? (own[k] > 0 ? along.hi : along.lo) : spans[x] ? [...half(spans[x].lo), ...half(spans[x].hi)] : []));
|
|
128
170
|
AXES.forEach((x, i) => {
|
|
@@ -130,9 +172,16 @@ export function placeOnFace(asset, j, frame) {
|
|
|
130
172
|
});
|
|
131
173
|
}
|
|
132
174
|
/* The pose is the child's origin from the seat; the seat moves by the frame's offset (3.10, ADR-0107). */
|
|
133
|
-
const
|
|
175
|
+
const from = AXES.map(x => plus(at[x], times(seat[x], -1)));
|
|
134
176
|
const shift = frame.offset ?? {};
|
|
135
|
-
|
|
177
|
+
/*
|
|
178
|
+
On a surface the seat and the pose are said in its frame there: the seat carried to the parent's by that frame, from
|
|
179
|
+
the point; the pose turned into the parent's axes, which the joint frame stands on.
|
|
180
|
+
*/
|
|
181
|
+
const turned = (v) => AXES.map((_, i) => plus(...AXES.map((_, c) => times(v[c], surface.frame[i][c]))));
|
|
182
|
+
const held = surface ? turned(AXES.map(x => seat[x])).map((r, i) => plus(surface.point[AXES[i]], r)) : AXES.map(x => seat[x]);
|
|
183
|
+
const pose = surface ? turned(from) : from;
|
|
184
|
+
const seatAt = AXES.map((x, i) => (shift[x] === undefined || shift[x] === 0 ? held[i] : plus(held[i], lin([{ ref: measureRef(m, asset, name, shift[x], `offset.${x}`, `${path}.origin.offset.${x}`), k: 1 }]))));
|
|
136
185
|
const write = (r, h) => writeFigureReach(m, name, r, h);
|
|
137
186
|
reseat(asset, child, onPlane ? asset.document.capabilities.assetFrame : `${to.part}.local`, {
|
|
138
187
|
seat: seatAt.map((r, i) => write(r, `seat.${AXES[i]}`)),
|
|
@@ -141,12 +190,132 @@ export function placeOnFace(asset, j, frame) {
|
|
|
141
190
|
/* The child's own pose: childRotate is Rz·Ry·Rx (3.6); rigid@1 takes its angles X then Y then Z, so they are worked out. */
|
|
142
191
|
const { pose: node } = partOf(m, child, path);
|
|
143
192
|
const old = node.args.slice(3, 6);
|
|
144
|
-
|
|
193
|
+
/*
|
|
194
|
+
The joint frame stands on the parent's own axes at the seat, on a surface too (3.9, 3.11): a joint's axis is said in
|
|
195
|
+
the parent's frame, and the child's pose there is its childRotate as recorded -- the surface's frame only places it.
|
|
196
|
+
*/
|
|
197
|
+
node.args = [...node.args.slice(0, 3), ...eulerOfAny(surface ? rpyMatrix(rotate) : C, true).map(t => constantOf(m, 'deg', t, 'a'))];
|
|
145
198
|
for (const ref of old)
|
|
146
199
|
dropIfUnused(asset, ref, ownInput(m, child, ref) ? ref : undefined);
|
|
147
200
|
if (AXES.some(x => (frame.parentRotate?.[x] ?? 0) !== 0))
|
|
148
201
|
turnSeat(asset, child, rpyMatrix(frame.parentRotate), frame.parentRotate, IDENTITY);
|
|
149
202
|
}
|
|
203
|
+
/**
|
|
204
|
+
* How far from a disc's middle a part lined up with its rim on one axis stands (ADR-0140 3.9, chief architect 10-20): its
|
|
205
|
+
* middle, on that axis. Two footprints have it in closed form, written as graph values so it holds as either is resized:
|
|
206
|
+
* a round part on a disc of one radius R, its radius r, its middle e off the axis across: √((D − e)(D + e)), D = R − r
|
|
207
|
+
* a rectangle footprint, its corner E = e + half its depth across: a/b · √((b − E)(b + E)) − its half width
|
|
208
|
+
* where a is the disc's radius on the axis it is lined up on and b the one across. Below zero inside the root -- it is
|
|
209
|
+
* wider than the disc there -- is refused when written; resized so, it stands on the axis across (the root held at 0)
|
|
210
|
+
* and its overhang says so. Anything else is refused by name: min or max on both axes (one point cannot touch the rim
|
|
211
|
+
* twice), a mesh, a part turned about the disc's axis by other than a right angle, a round part on an elliptic disc.
|
|
212
|
+
*/
|
|
213
|
+
function rimOf(asset, m, disc, across, howOf, offsetOf, at) {
|
|
214
|
+
const { child, part, face, C, reach, path } = at;
|
|
215
|
+
const ends = across.filter(u => howOf(u) === 'min' || howOf(u) === 'max');
|
|
216
|
+
if (!ends.length)
|
|
217
|
+
return undefined;
|
|
218
|
+
const where = `${part}'s ${face} is a disc`;
|
|
219
|
+
if (ends.length === 2)
|
|
220
|
+
fail('ATTACH_FACE', path, `${where}: ${child} touches its rim lined up on one axis, min or max; the other is the centre or a measured offset (ADR-0140 3.9)`);
|
|
221
|
+
const u = ends[0];
|
|
222
|
+
const w = across.find(x => x !== u);
|
|
223
|
+
if (partOf(m, child, path).shape.op === 'mesh@1')
|
|
224
|
+
fail('ATTACH_FACE', path, `${where}: a mesh's footprint is not known, so ${child} cannot be lined up with its rim -- give the centre or a measured offset (ADR-0140 3.9)`);
|
|
225
|
+
const normal = AXES.find(x => !across.includes(x));
|
|
226
|
+
const own = (x) => mv3(transpose3(C), unitAlong(x, 1));
|
|
227
|
+
const zero = lin([]);
|
|
228
|
+
const e = JSON.stringify(offsetOf(w)) === JSON.stringify(zero) ? zero : { max: [offsetOf(w), times(offsetOf(w), -1)] };
|
|
229
|
+
const [a, b] = [disc[u], disc[w]];
|
|
230
|
+
const oneRadius = JSON.stringify(a) === JSON.stringify(b);
|
|
231
|
+
const inside = (d, E) => ({ geomean: [{ max: [plus(d, times(E, -1)), zero] }, plus(d, E)] });
|
|
232
|
+
let root;
|
|
233
|
+
let middle;
|
|
234
|
+
if (figureRoundAbout(m, child, own(normal), path)) {
|
|
235
|
+
if (!oneRadius)
|
|
236
|
+
fail('ATTACH_FACE', path, `${where} of two radii: a round part touches its rim at no closed-form place -- give the centre or a measured offset (ADR-0140 3.9)`);
|
|
237
|
+
const D = plus(a, times(reach(unitAlong(u, 1)), -1));
|
|
238
|
+
root = [D, e];
|
|
239
|
+
middle = inside(D, e);
|
|
240
|
+
}
|
|
241
|
+
else {
|
|
242
|
+
/* Its footprint is the rectangle of its reaches only while one of its own axes lies across the disc. */
|
|
243
|
+
const square = [0, 1, 2].some(c => [u, w].some(x => Math.abs(Math.abs(C[AXES.indexOf(x)][c]) - 1) < 1e-9));
|
|
244
|
+
if (!square)
|
|
245
|
+
fail('ATTACH_FACE', path, `${where}: ${child} is turned about its axis by other than a right angle, so its corners are not where its reaches say -- give the centre or a measured offset (ADR-0140 3.9)`);
|
|
246
|
+
const halfOf = (x) => times(plus(reach(unitAlong(x, 1)), reach(unitAlong(x, -1))), 0.5);
|
|
247
|
+
const E = plus(e, halfOf(w));
|
|
248
|
+
root = [b, E];
|
|
249
|
+
const r = inside(b, E);
|
|
250
|
+
middle = plus(oneRadius ? r : { product: [{ quotient: [a, b] }, r] }, times(halfOf(u), -1));
|
|
251
|
+
}
|
|
252
|
+
/* Wider than the disc where it would touch: refused when written. */
|
|
253
|
+
const values = valuesOf(asset, m, [...root, ...(oneRadius ? [] : [a])]);
|
|
254
|
+
const [d, E] = root.map(r => figureReachValue(r, values));
|
|
255
|
+
if (!(d - E >= -1e-9))
|
|
256
|
+
fail('ATTACH_FACE', path, `${where}: ${child} is wider than the disc where it would touch its rim (${Math.round(E)} mm across from its middle, ${Math.round(d)} mm there) -- give the centre or a measured offset (ADR-0140 3.9)`);
|
|
257
|
+
return { middle };
|
|
258
|
+
}
|
|
259
|
+
/** The values of the graph a few reaches are made of, at the figure's design inputs: those nodes alone are evaluated. */
|
|
260
|
+
function valuesOf(asset, m, reaches) {
|
|
261
|
+
const nodes = new Map();
|
|
262
|
+
const visit = (ref) => {
|
|
263
|
+
const n = writerOf(m, ref);
|
|
264
|
+
if (!n || nodes.has(n.id))
|
|
265
|
+
return;
|
|
266
|
+
nodes.set(n.id, n);
|
|
267
|
+
for (const r of n.args ?? [])
|
|
268
|
+
visit(r);
|
|
269
|
+
};
|
|
270
|
+
for (const ref of reaches.flatMap(figureReachRefs))
|
|
271
|
+
visit(ref);
|
|
272
|
+
return compileFigureGraph({ ...m, nodes: [...nodes.values()] }).evaluate({ ...asset.designInputs, ...asset.stateDefaults }).values;
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* A point on a part's curved surface, from its record (ADR-0140 3.9): the outward normal n there in the part's own frame,
|
|
276
|
+
* the frame the child is placed in -- y along n; x along a cylinder's push, or across a sphere on the first of its own
|
|
277
|
+
* axes least along n -- the point the surface faces n at, and where on it across (a cylinder's `along` on x). A form the
|
|
278
|
+
* shape does not take, and a shape with no such surface, are refused by name.
|
|
279
|
+
*/
|
|
280
|
+
function surfaceFrameOf(m, part, place, path) {
|
|
281
|
+
const at = `${path}.body0.surface`;
|
|
282
|
+
const { shape } = partOf(m, part, path);
|
|
283
|
+
const form = figureSurfaceFormOf(m, part, path);
|
|
284
|
+
const side = form === 'around';
|
|
285
|
+
const round = form === 'toward';
|
|
286
|
+
const what = shape.op === 'revolve@1' ? 'a frustum, whose side turns with its slope (not taken yet, ADR-0140 3.9) -- fasten to its top or bottom' : 'flat faces only -- fasten to a face';
|
|
287
|
+
if (!side && !round)
|
|
288
|
+
fail('ATTACH_FACE', at, `${part} has no curved surface to fasten to: ${what}`);
|
|
289
|
+
const unit = (v) => {
|
|
290
|
+
const l = Math.hypot(...v);
|
|
291
|
+
return v.map(x => x / l);
|
|
292
|
+
};
|
|
293
|
+
const cross = (a, b) => [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];
|
|
294
|
+
let n, x;
|
|
295
|
+
if ('toward' in place) {
|
|
296
|
+
if (!round)
|
|
297
|
+
fail('ATTACH_FACE', at, `${part} is a cylinder: a point on its side is { around, along }`);
|
|
298
|
+
n = unit(AXES.map(a => place.toward[a] ?? 0));
|
|
299
|
+
/* Across the normal on the first of the part's own axes least along it. */
|
|
300
|
+
const k = AXES.reduce((best, _, i) => (Math.abs(n[i]) < Math.abs(n[best]) - 1e-12 ? i : best), 0);
|
|
301
|
+
x = unit(AXES.map((_, i) => (i === k ? 1 : 0) - n[k] * n[i]));
|
|
302
|
+
}
|
|
303
|
+
else {
|
|
304
|
+
if (!side)
|
|
305
|
+
fail('ATTACH_FACE', at, `${part} is round: a point on it is { toward }`);
|
|
306
|
+
const push = shape.params.axis;
|
|
307
|
+
n = unit(aroundNormalOf(push, place.around));
|
|
308
|
+
x = unitAlong(push, 1);
|
|
309
|
+
}
|
|
310
|
+
const z = cross(x, n);
|
|
311
|
+
/* Columns: the frame's x, y (the normal) and z, in the part's own frame. */
|
|
312
|
+
const frame = AXES.map((_, i) => [x[i], n[i], z[i]].map(v => (Math.abs(v) < 1e-12 ? 0 : v)));
|
|
313
|
+
const surface = figureSurfacePointOf(m, part, n, path);
|
|
314
|
+
if ('not' in surface)
|
|
315
|
+
fail('ATTACH_FACE', at, `${part} has no curved surface to fasten to: ${what}`);
|
|
316
|
+
const { point, push } = surface;
|
|
317
|
+
return { frame, point, along: { x: 'along' in place ? place.along : 'centre', z: 'centre' }, ...(push ? { push } : {}) };
|
|
318
|
+
}
|
|
150
319
|
/**
|
|
151
320
|
* The seat turned by a joint frame's parent-end rotation (`rigid@1` turns X, then Y, then Z). Its angles are named by
|
|
152
321
|
* the rotation the record gives, and by the parent's standing turn when that is not none -- not by their value, which
|