@hatiolab/figure-model 0.9.6 → 0.10.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/dist/asset-types.d.ts +24 -56
- package/dist/asset-types.d.ts.map +1 -1
- package/dist/asset-types.js.map +1 -1
- package/dist/asset.d.ts +0 -7
- package/dist/asset.d.ts.map +1 -1
- package/dist/asset.js +11 -45
- package/dist/asset.js.map +1 -1
- package/dist/authoring-actions.d.ts.map +1 -1
- package/dist/authoring-actions.js +5 -27
- package/dist/authoring-actions.js.map +1 -1
- package/dist/authoring-bindings.js +1 -1
- package/dist/authoring-bindings.js.map +1 -1
- package/dist/authoring-dimensions.js +3 -3
- package/dist/authoring-nodes.d.ts +4 -4
- package/dist/authoring-nodes.d.ts.map +1 -1
- package/dist/authoring-nodes.js +7 -7
- package/dist/authoring-nodes.js.map +1 -1
- package/dist/authoring-placement.d.ts +40 -0
- package/dist/authoring-placement.d.ts.map +1 -0
- package/dist/{authoring-occupancy.js → authoring-placement.js} +114 -221
- package/dist/authoring-placement.js.map +1 -0
- package/dist/authoring-proportion.d.ts.map +1 -1
- package/dist/authoring-proportion.js +3 -4
- package/dist/authoring-proportion.js.map +1 -1
- package/dist/authoring-size.js +1 -1
- package/dist/authoring-types.d.ts +0 -57
- package/dist/authoring-types.d.ts.map +1 -1
- package/dist/body.d.ts +19 -0
- package/dist/body.d.ts.map +1 -0
- package/dist/body.js +37 -0
- package/dist/body.js.map +1 -0
- package/dist/command-preview.js +4 -4
- package/dist/command-preview.js.map +1 -1
- package/dist/contract.d.ts +0 -3
- package/dist/contract.d.ts.map +1 -1
- package/dist/contract.js.map +1 -1
- package/dist/examples.d.ts.map +1 -1
- package/dist/examples.js +1 -2
- package/dist/examples.js.map +1 -1
- package/dist/face-overhang.js +2 -2
- package/dist/face-overhang.js.map +1 -1
- package/dist/fasten-place.js +7 -7
- package/dist/fasten-place.js.map +1 -1
- package/dist/gate.d.ts +15 -32
- package/dist/gate.d.ts.map +1 -1
- package/dist/gate.js +34 -101
- package/dist/gate.js.map +1 -1
- package/dist/graph-types.d.ts +2 -2
- package/dist/graph.d.ts.map +1 -1
- package/dist/graph.js +6 -67
- package/dist/graph.js.map +1 -1
- package/dist/index.d.ts +6 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/dist/joint-part-edits.d.ts +1 -10
- package/dist/joint-part-edits.d.ts.map +1 -1
- package/dist/joint-part-edits.js +6 -64
- package/dist/joint-part-edits.js.map +1 -1
- package/dist/kernel-version.d.ts +1 -1
- package/dist/kernel-version.d.ts.map +1 -1
- package/dist/kernel-version.js +1 -1
- package/dist/kernel-version.js.map +1 -1
- package/dist/part-edit.d.ts +1 -8
- package/dist/part-edit.d.ts.map +1 -1
- package/dist/part-edit.js +15 -32
- package/dist/part-edit.js.map +1 -1
- package/dist/proposal.d.ts +4 -11
- package/dist/proposal.d.ts.map +1 -1
- package/dist/proposal.js +3 -10
- package/dist/proposal.js.map +1 -1
- package/dist/recipe.js +1 -1
- package/dist/recipe.js.map +1 -1
- package/dist/release-contract.d.ts +1 -1
- package/dist/release-contract.d.ts.map +1 -1
- package/dist/release-contract.js +32 -29
- package/dist/release-contract.js.map +1 -1
- package/dist/release-metrics.d.ts +6 -14
- package/dist/release-metrics.d.ts.map +1 -1
- package/dist/release-metrics.js +8 -29
- package/dist/release-metrics.js.map +1 -1
- package/dist/resize-plan.d.ts +0 -5
- package/dist/resize-plan.d.ts.map +1 -1
- package/dist/resize-plan.js +4 -29
- package/dist/resize-plan.js.map +1 -1
- package/dist/robots.d.ts.map +1 -1
- package/dist/robots.js +1 -2
- package/dist/robots.js.map +1 -1
- package/dist/size-edit.js +3 -3
- package/dist/size-edit.js.map +1 -1
- package/dist/surface.js +2 -2
- package/docs/asset-persistence.md +1 -1
- package/docs/document-contract.md +0 -1
- package/docs/operator-contracts.md +3 -18
- package/docs/shape-dimension-contract.md +27 -25
- package/package.json +1 -1
- package/dist/authoring-occupancy.d.ts +0 -28
- package/dist/authoring-occupancy.d.ts.map +0 -1
- package/dist/authoring-occupancy.js.map +0 -1
- package/dist/room.d.ts +0 -53
- package/dist/room.d.ts.map +0 -1
- package/dist/room.js +0 -101
- package/dist/room.js.map +0 -1
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
* Copyright © HatioLab Inc. All rights reserved.
|
|
3
3
|
*/
|
|
4
4
|
/*
|
|
5
|
-
* The room
|
|
5
|
+
* The room a figure sweeps as it moves (ADR-0145 2.3), worked out from its parts and joints; where it is placed from, and
|
|
6
|
+
* the face it is mounted by.
|
|
6
7
|
*/
|
|
7
|
-
import {
|
|
8
|
+
import { figurePlacementOf } from "./asset.js";
|
|
8
9
|
import { compileFigureGraph } from "./graph.js";
|
|
9
10
|
import { figureShapeDescriptionOf } from "./shape-ops.js";
|
|
10
11
|
import { FigureContractError } from "./contract.js";
|
|
@@ -13,31 +14,6 @@ import { FIGURE_PLACEMENTS } from "./asset-types.js";
|
|
|
13
14
|
import { FIGURE_FACES } from "./authoring-types.js";
|
|
14
15
|
import { fail, nodeById, writerOf, throughSums, rowHolding, partOf, namer, constantOf, dropIfUnused, parentOf, round6, stringsIn } from "./authoring-nodes.js";
|
|
15
16
|
import { isReach, sizeRefsOf, occupiedExtentsOf, angleOf, turnMatrix, mul3, standingRefsOf, half, axisTurn, offCentreEndsOf, IDENTITY } from "./authoring-geometry.js";
|
|
16
|
-
/** A figure as one value, for saying "this is the figure I read". The declaration itself is left out of it. */
|
|
17
|
-
function fingerprintOf(asset) {
|
|
18
|
-
/*
|
|
19
|
-
The room and the placement are left out: neither changes what the room would measure (ADR-0097). Nor do the clips,
|
|
20
|
-
their groups and the data connections -- the room is measured over the joints' ranges, not what plays them -- and a
|
|
21
|
-
command is applied with the groups and their clips held aside (clip-keeping.ts): counted, a room proposed on the
|
|
22
|
-
figure as it is was stale against the same figure without them, and a figure with a motion group could not declare
|
|
23
|
-
its room again (the robot dog, 2026-10-19).
|
|
24
|
-
*/
|
|
25
|
-
const text = JSON.stringify({
|
|
26
|
-
...asset,
|
|
27
|
-
placement: undefined,
|
|
28
|
-
occupancy: asset.occupancy ? { ...asset.occupancy, bounds: null } : undefined,
|
|
29
|
-
drivers: undefined,
|
|
30
|
-
motionGroups: undefined,
|
|
31
|
-
dataInterface: undefined
|
|
32
|
-
});
|
|
33
|
-
let h1 = 0x811c9dc5;
|
|
34
|
-
let h2 = 0x01000193;
|
|
35
|
-
for (let i = 0; i < text.length; i++) {
|
|
36
|
-
h1 = Math.imul(h1 ^ text.charCodeAt(i), 0x01000193) >>> 0;
|
|
37
|
-
h2 = Math.imul(h2 + text.charCodeAt(i), 0x85ebca6b) >>> 0;
|
|
38
|
-
}
|
|
39
|
-
return `${h1.toString(16).padStart(8, '0')}${h2.toString(16).padStart(8, '0')}:${text.length}`;
|
|
40
|
-
}
|
|
41
17
|
const linAdd = (a, b, k = 1) => ({
|
|
42
18
|
terms: [...a.terms, ...b.terms.map(t => ({ ref: t.ref, k: t.k * k }))],
|
|
43
19
|
c: a.c + b.c * k
|
|
@@ -64,7 +40,7 @@ const linOf = (m, ref) => {
|
|
|
64
40
|
* How far a slide has gone when its control is at one end of its range, as a sum: each control at that end, what the
|
|
65
41
|
* figure's sizes make of the rest. A mimic of a leader whose stroke follows a length is the leader's ratio times that
|
|
66
42
|
* length times its multiplier -- read through, not refused: the telescopic conveyor's second and third stages were
|
|
67
|
-
* left out of
|
|
43
|
+
* left out of the room it was given, 2600 and 5200 mm past it (2026-09-25).
|
|
68
44
|
*/
|
|
69
45
|
function travelAt(m, asset, motion, bound) {
|
|
70
46
|
const pick = (i) => bound === 'start' ? (asset.stateDefaults[i.id] ?? i.min) : bound === 'min' ? i.min : i.max;
|
|
@@ -383,31 +359,6 @@ function boundedMagnitudeOf(m, ref, inside = false) {
|
|
|
383
359
|
return linAdd({ terms: [], c: 0 }, linAdd(each[0], each[1]), 0.5);
|
|
384
360
|
return each.reduce((a, b) => linAtLeast(a, b));
|
|
385
361
|
}
|
|
386
|
-
/** The values held by bounds a part's place reads, up what carries it: its room may be wider than it there. */
|
|
387
|
-
function boundsUnder(m, id) {
|
|
388
|
-
const found = new Set();
|
|
389
|
-
for (let part = id; part; part = parentOf(m, part))
|
|
390
|
-
for (const node of [nodeById(m, `${part}.pose`), nodeById(m, `${part}.seat.rigid`)])
|
|
391
|
-
for (const ref of (node?.args ?? []).slice(0, 3))
|
|
392
|
-
for (const t of throughSums(m, linOf(m, ref)).terms)
|
|
393
|
-
if (isBounded(m, t.ref))
|
|
394
|
-
found.add(t.ref);
|
|
395
|
-
return [...found];
|
|
396
|
-
}
|
|
397
|
-
/**
|
|
398
|
-
* How much wider than a bounded value its room may be, at the figure's values, in mm: the greatest of its bound over
|
|
399
|
-
* the value -- (x + y) / 2 − √(x·y) for a root, r_i − |p_i| for a point of an ellipsoid (chief architect 2026-10-20).
|
|
400
|
-
*/
|
|
401
|
-
function boundedWidthOf(m, values, refs) {
|
|
402
|
-
let most = 0;
|
|
403
|
-
for (const ref of refs) {
|
|
404
|
-
const kind = boundedKind(m, ref);
|
|
405
|
-
const v = Math.abs(values[ref] ?? 0);
|
|
406
|
-
const wide = 'root' in kind ? (values[kind.root[0]] + values[kind.root[1]]) / 2 - v : Math.abs(values[kind.point.radius]) - v;
|
|
407
|
-
most = Math.max(most, wide);
|
|
408
|
-
}
|
|
409
|
-
return Math.round(most * 10) / 10;
|
|
410
|
-
}
|
|
411
362
|
/** Every low candidate bounded from below and every high one from above, so the room holds whatever they come to. */
|
|
412
363
|
function boundedSides(m, low, high) {
|
|
413
364
|
for (const axis of AXES) {
|
|
@@ -418,29 +369,38 @@ function boundedSides(m, low, high) {
|
|
|
418
369
|
const transposedTimes = (r, d) => [0, 1, 2].map(j => r[0][j] * d[0] + r[1][j] * d[1] + r[2][j] * d[2]);
|
|
419
370
|
/** A turn as `rigid@1` writes it, in degrees about X, Y and Z: Rx·Ry·Rz, at any angle (`turnMatrix` takes quarter turns). */
|
|
420
371
|
const rigidTurnOf = ([x, y, z]) => mul3(mul3(axisTurn('x', x), axisTurn('y', y)), axisTurn('z', z));
|
|
372
|
+
/** Each component's largest size, which a unit direction never passes. */
|
|
373
|
+
const largestOf = (d) => d.mid.map((v, i) => Math.min(1, Math.abs(v) + d.spread[i]));
|
|
374
|
+
/** The same directions, each component held to [−1, 1]. */
|
|
375
|
+
function heldToUnit(mid, spread) {
|
|
376
|
+
const lo = mid.map((v, i) => Math.max(-1, v - spread[i]));
|
|
377
|
+
const hi = mid.map((v, i) => Math.min(1, v + spread[i]));
|
|
378
|
+
return { mid: lo.map((l, i) => (l + hi[i]) / 2), spread: lo.map((l, i) => (hi[i] - l) / 2) };
|
|
379
|
+
}
|
|
421
380
|
/** The directions seen from a frame turned by `r` from this one (a point there is r·x here). */
|
|
422
381
|
function turnedBy(d, r) {
|
|
423
|
-
|
|
424
|
-
return { one: transposedTimes(r, d.one) };
|
|
425
|
-
return { most: [0, 1, 2].map(j => Math.min(1, d.most.reduce((sum, v, i) => sum + Math.abs(r[i][j]) * v, 0))) };
|
|
382
|
+
return heldToUnit(transposedTimes(r, d.mid), [0, 1, 2].map(j => d.spread.reduce((sum, v, i) => sum + Math.abs(r[i][j]) * v, 0)));
|
|
426
383
|
}
|
|
427
|
-
/** The
|
|
428
|
-
function
|
|
384
|
+
/** The least and the greatest of a + b cos t + c sin t for t from lo to hi, in radians; all the way round without a range. */
|
|
385
|
+
function rangeOver(a, b, c, range) {
|
|
429
386
|
if (!range)
|
|
430
|
-
return Math.
|
|
387
|
+
return [a - Math.hypot(b, c), a + Math.hypot(b, c)];
|
|
431
388
|
const [lo, hi] = range;
|
|
432
|
-
const at = (t) =>
|
|
433
|
-
let most = Math.max(at(lo), at(hi));
|
|
389
|
+
const at = (t) => a + b * Math.cos(t) + c * Math.sin(t);
|
|
390
|
+
let least = Math.min(at(lo), at(hi)), most = Math.max(at(lo), at(hi));
|
|
434
391
|
/* Where its slope is zero: t = atan2(c, b) and half a turn from it, every whole turn over. */
|
|
435
392
|
const turn = 2 * Math.PI;
|
|
436
393
|
for (const t0 of [Math.atan2(c, b), Math.atan2(c, b) + Math.PI])
|
|
437
|
-
for (let t = t0 + Math.ceil((lo - t0) / turn) * turn; t <= hi; t += turn)
|
|
394
|
+
for (let t = t0 + Math.ceil((lo - t0) / turn) * turn; t <= hi; t += turn) {
|
|
395
|
+
least = Math.min(least, at(t));
|
|
438
396
|
most = Math.max(most, at(t));
|
|
439
|
-
|
|
397
|
+
}
|
|
398
|
+
return [least, most];
|
|
440
399
|
}
|
|
441
400
|
/**
|
|
442
401
|
* The directions seen from a frame turned about the unit axis `u` by any angle in `range` (radians; null all the way
|
|
443
|
-
* round): R(t) = u uᵀ + (I − u uᵀ) cos t + [u]× sin t, each entry a + b cos t + c sin t.
|
|
402
|
+
* round): R(t) = u uᵀ + (I − u uᵀ) cos t + [u]× sin t, each entry a + b cos t + c sin t. The middle is turned through
|
|
403
|
+
* the range exactly; the spread about it by each entry's largest.
|
|
444
404
|
*/
|
|
445
405
|
function sweptBy(d, u, range) {
|
|
446
406
|
const K = [
|
|
@@ -455,18 +415,13 @@ function sweptBy(d, u, range) {
|
|
|
455
415
|
const t = range[0];
|
|
456
416
|
return turnedBy(d, [0, 1, 2].map(i => [0, 1, 2].map(j => A(i, j) + B(i, j) * Math.cos(t) + C(i, j) * Math.sin(t))));
|
|
457
417
|
}
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
const
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
return { most: parts.map(([a, b, c]) => Math.min(1, largestOver(a, b, c, range))) };
|
|
466
|
-
}
|
|
467
|
-
return {
|
|
468
|
-
most: [0, 1, 2].map(j => Math.min(1, d.most.reduce((s, v, i) => s + largestOver(A(i, j), B(i, j), C(i, j), range) * v, 0)))
|
|
469
|
-
};
|
|
418
|
+
const sum = (f, j) => [0, 1, 2].reduce((s, i) => s + f(i, j) * d.mid[i], 0);
|
|
419
|
+
const ends = [0, 1, 2].map(j => rangeOver(sum(A, j), sum(B, j), sum(C, j), range));
|
|
420
|
+
const spread = [0, 1, 2].map(j => d.spread.reduce((s, v, i) => {
|
|
421
|
+
const [l, h] = rangeOver(A(i, j), B(i, j), C(i, j), range);
|
|
422
|
+
return s + Math.max(Math.abs(l), Math.abs(h)) * v;
|
|
423
|
+
}, 0));
|
|
424
|
+
return heldToUnit(ends.map(([l, h]) => (l + h) / 2), ends.map(([l, h], j) => (h - l) / 2 + spread[j]));
|
|
470
425
|
}
|
|
471
426
|
/**
|
|
472
427
|
* The angles a turn's control can give it, in degrees: its limits, scaled and moved as the angle is written from it.
|
|
@@ -512,10 +467,10 @@ function angleRangeOf(m, ref, depth = 0) {
|
|
|
512
467
|
}
|
|
513
468
|
/**
|
|
514
469
|
* Where a part carried by a turn can reach, on each side of each axis, from the point the first turn above it turns
|
|
515
|
-
* about (ADR-0087, amendments 2026-10-21). Down the chain from there each step adds what it can add that way:
|
|
516
|
-
* the directions
|
|
517
|
-
*
|
|
518
|
-
* adds its own
|
|
470
|
+
* about (ADR-0087, amendments 2026-10-21). Down the chain from there each step adds what it can add that way: the
|
|
471
|
+
* middle of the directions times the step, sign included, and their spread -- none until a joint has turned them
|
|
472
|
+
* through its range -- times its size; no more than its length, when its coordinates are numbers. A slide from nothing
|
|
473
|
+
* to a sum of sizes adds only toward the way it goes. The part adds its own extent the same way. Each step's largest taken on its own (the triangle inequality), it holds at
|
|
519
474
|
* every angle the joints can reach and every design size: a bound, not a sample. Read by the proposal; the release
|
|
520
475
|
* gate still checks the parts against it.
|
|
521
476
|
*/
|
|
@@ -544,34 +499,29 @@ function reachOf(m, asset, id, ends) {
|
|
|
544
499
|
const constants = (refs) => refs.map(r => m.constants.find((c) => c.id === r)?.value);
|
|
545
500
|
const angles = (refs) => refs.map(r => angleOf(m, asset, r));
|
|
546
501
|
const reachToward = (e) => {
|
|
547
|
-
let d = {
|
|
502
|
+
let d = { mid: transposedTimes(frame, e), spread: [0, 0, 0] };
|
|
548
503
|
let out = { terms: [], c: 0 };
|
|
549
|
-
const
|
|
550
|
-
/* A step of three coordinates, in the frame the directions are seen from. */
|
|
504
|
+
const tiny = (v) => Math.abs(v) < 1e-12;
|
|
505
|
+
/* A step of three coordinates, in the frame the directions are seen from: the middle times it, the spread times its size. */
|
|
551
506
|
const step = (refs, what) => {
|
|
552
|
-
if ('one' in d) {
|
|
553
|
-
const v = d.one;
|
|
554
|
-
refs.forEach((ref, i) => {
|
|
555
|
-
if (Math.abs(v[i]) > 1e-12)
|
|
556
|
-
out = linAdd(out, linOf(m, ref), v[i]);
|
|
557
|
-
});
|
|
558
|
-
return null;
|
|
559
|
-
}
|
|
560
|
-
const w = d.most;
|
|
561
507
|
const numbers = constants(refs);
|
|
562
508
|
if (numbers.every(n => n !== undefined)) {
|
|
563
|
-
const across = numbers.reduce((s, n, i) => s +
|
|
509
|
+
const across = numbers.reduce((s, n, i) => s + d.mid[i] * n + d.spread[i] * Math.abs(n), 0);
|
|
510
|
+
/* No unit direction takes a step further than its length. */
|
|
511
|
+
const w = largestOf(d);
|
|
564
512
|
const length = Math.hypot(...numbers.map((n, i) => (w[i] > 0 ? n : 0)));
|
|
565
513
|
out = linAdd(out, { terms: [], c: Math.min(across, length) });
|
|
566
514
|
return null;
|
|
567
515
|
}
|
|
568
516
|
for (const [i, ref] of refs.entries()) {
|
|
569
|
-
if (!
|
|
517
|
+
if (!tiny(d.mid[i]))
|
|
518
|
+
out = linAdd(out, linOf(m, ref), d.mid[i]);
|
|
519
|
+
if (tiny(d.spread[i]))
|
|
570
520
|
continue;
|
|
571
521
|
const size = magnitudeOf(m, linOf(m, ref));
|
|
572
522
|
if (!size)
|
|
573
523
|
return `${what} is not a sum of sizes, so how far it reaches cannot be bounded`;
|
|
574
|
-
out = linAdd(out, size,
|
|
524
|
+
out = linAdd(out, size, d.spread[i]);
|
|
575
525
|
}
|
|
576
526
|
return null;
|
|
577
527
|
};
|
|
@@ -579,9 +529,13 @@ function reachOf(m, asset, id, ends) {
|
|
|
579
529
|
const a = angles(refs);
|
|
580
530
|
if (a.every(t => t === 0))
|
|
581
531
|
return;
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
532
|
+
if (a.every(t => t !== null && Number.isFinite(t)))
|
|
533
|
+
d = turnedBy(d, rigidTurnOf(a));
|
|
534
|
+
else {
|
|
535
|
+
/* A turn this command cannot read: any direction no longer than the largest it was. */
|
|
536
|
+
const reach = Math.min(1, largestOf(d).reduce((s, v) => s + v, 0));
|
|
537
|
+
d = { mid: [0, 0, 0], spread: [reach, reach, reach] };
|
|
538
|
+
}
|
|
585
539
|
};
|
|
586
540
|
for (let i = top; i >= 0; i--) {
|
|
587
541
|
const part = chain[i];
|
|
@@ -607,13 +561,29 @@ function reachOf(m, asset, id, ends) {
|
|
|
607
561
|
d = sweptBy(d, u, range && [(range[0] * Math.PI) / 180, (range[1] * Math.PI) / 180]);
|
|
608
562
|
}
|
|
609
563
|
else if (motion.op === 'axis-slide@1') {
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
564
|
+
/*
|
|
565
|
+
Its travel lies between the two ends of its control. One end at nothing and the other a sum of sizes: it
|
|
566
|
+
goes only that way, so the middle adds it only toward that side. Otherwise the further end, either way.
|
|
567
|
+
*/
|
|
568
|
+
const mid = d.mid.reduce((s, v, k) => s + v * u[k], 0);
|
|
569
|
+
const spread = d.spread.reduce((s, v, k) => s + v * Math.abs(u[k]), 0);
|
|
570
|
+
const [lo, hi] = ['min', 'max'].map(end => travelAt(m, asset, motion, end));
|
|
571
|
+
if (!lo || !hi)
|
|
572
|
+
return `${part}'s travel is not a sum of sizes, so how far it reaches cannot be bounded`;
|
|
573
|
+
const nothing = (l) => !linNorm(l).terms.length && Math.abs(l.c) < 1e-12;
|
|
574
|
+
const sizes = (l) => l.c >= 0 && linNorm(l).terms.every(t => t.k > 0 && sizeValue(m, t.ref));
|
|
575
|
+
const other = nothing(lo) ? hi : nothing(hi) ? lo : null;
|
|
576
|
+
const way = other && (sizes(other) ? 1 : sizes(linAdd({ terms: [], c: 0 }, other, -1)) ? -1 : 0);
|
|
577
|
+
if (other && way)
|
|
578
|
+
out = linAdd(out, other, way * (Math.max(way * mid, 0) + spread));
|
|
579
|
+
else {
|
|
580
|
+
const further = [lo, hi].reduce((sum, l) => {
|
|
581
|
+
const size = sum && magnitudeOf(m, l);
|
|
582
|
+
return size && sum && linAtLeast(sum, size);
|
|
583
|
+
}, { terms: [], c: 0 });
|
|
584
|
+
if (!further)
|
|
615
585
|
return `${part}'s travel is not a sum of sizes, so how far it reaches cannot be bounded`;
|
|
616
|
-
out = linAdd(out,
|
|
586
|
+
out = linAdd(out, further, Math.abs(mid) + spread);
|
|
617
587
|
}
|
|
618
588
|
}
|
|
619
589
|
else
|
|
@@ -629,27 +599,33 @@ function reachOf(m, asset, id, ends) {
|
|
|
629
599
|
}
|
|
630
600
|
/*
|
|
631
601
|
Its own extent on every axis, as far as the directions reach across it: half its size either way about its
|
|
632
|
-
origin, or from face to face where they do not sit about it (a portal stands on 0, `offCentreEndsOf`)
|
|
602
|
+
origin, or from face to face where they do not sit about it (a portal stands on 0, `offCentreEndsOf`) -- the
|
|
603
|
+
middle at the face it points to, the spread times the further face.
|
|
633
604
|
*/
|
|
634
|
-
const w = most(d);
|
|
635
605
|
for (const [i, axis] of AXES.entries()) {
|
|
636
|
-
|
|
606
|
+
const mid = d.mid[i], spread = d.spread[i];
|
|
607
|
+
if (tiny(mid) && tiny(spread))
|
|
637
608
|
continue;
|
|
638
609
|
const ends = offCentre[axis];
|
|
639
|
-
if (ends
|
|
640
|
-
const e =
|
|
641
|
-
|
|
610
|
+
if (ends) {
|
|
611
|
+
const e = mid > 0 ? ends[1] : ends[0];
|
|
612
|
+
if (!tiny(mid))
|
|
613
|
+
out = linAdd(out, { terms: [{ ref: e.ref, k: e.k * mid }], c: 0 });
|
|
614
|
+
if (tiny(spread))
|
|
615
|
+
continue;
|
|
616
|
+
const further = ends.reduce((sum, x) => {
|
|
617
|
+
const size = sum && magnitudeOf(m, { terms: [{ ref: x.ref, k: x.k }], c: 0 });
|
|
618
|
+
return size && sum && linAtLeast(sum, size);
|
|
619
|
+
}, { terms: [], c: 0 });
|
|
620
|
+
if (!further)
|
|
621
|
+
return `${id}'s size is not a sum of sizes, so how far it reaches cannot be bounded`;
|
|
622
|
+
out = linAdd(out, further, spread);
|
|
642
623
|
continue;
|
|
643
624
|
}
|
|
644
|
-
const
|
|
645
|
-
|
|
646
|
-
const size = sum && magnitudeOf(m, { terms: [{ ref: e.ref, k: e.k }], c: 0 });
|
|
647
|
-
return size && sum && linAtLeast(sum, size);
|
|
648
|
-
}, { terms: [], c: 0 })
|
|
649
|
-
: magnitudeOf(m, { terms: [{ ref: sizes[axis].ref, k: 0.5 * sizes[axis].k }], c: 0 });
|
|
650
|
-
if (!reach)
|
|
625
|
+
const half = magnitudeOf(m, { terms: [{ ref: sizes[axis].ref, k: 0.5 * sizes[axis].k }], c: 0 });
|
|
626
|
+
if (!half)
|
|
651
627
|
return `${id}'s size is not a sum of sizes, so how far it reaches cannot be bounded`;
|
|
652
|
-
out = linAdd(out,
|
|
628
|
+
out = linAdd(out, half, Math.min(1, Math.abs(mid) + spread));
|
|
653
629
|
}
|
|
654
630
|
return linNorm(out);
|
|
655
631
|
};
|
|
@@ -687,11 +663,10 @@ function reachOf(m, asset, id, ends) {
|
|
|
687
663
|
return { centres, up, down };
|
|
688
664
|
}
|
|
689
665
|
/** The bounds the parts come to, as sums, with what could not be read named. */
|
|
690
|
-
function
|
|
666
|
+
function reachLins(asset) {
|
|
691
667
|
const m = asset.document.model;
|
|
692
668
|
const parts = [];
|
|
693
669
|
const skipped = [];
|
|
694
|
-
const bounded = [];
|
|
695
670
|
const low = { x: [], y: [], z: [] };
|
|
696
671
|
const high = { x: [], y: [], z: [] };
|
|
697
672
|
/*
|
|
@@ -718,7 +693,7 @@ function occupancyLins(asset, over) {
|
|
|
718
693
|
};
|
|
719
694
|
/* A row's template stands for its copies (`repeatPart`): leaving it out left a conveyor's rollers out of its room. */
|
|
720
695
|
const rowOf = (id) => nodeById(m, `${id}.repeat`);
|
|
721
|
-
const ends =
|
|
696
|
+
const ends = ['min', 'max'];
|
|
722
697
|
/* A part's size along the figure's axes, whichever quarter turns it and what carries it stand in. */
|
|
723
698
|
const sizesOf = (id, turns) => {
|
|
724
699
|
/* A turned chain's reach is read from one size per axis (reachOf), so a part there must have one. */
|
|
@@ -951,39 +926,34 @@ function occupancyLins(asset, over) {
|
|
|
951
926
|
}
|
|
952
927
|
}
|
|
953
928
|
}
|
|
954
|
-
|
|
955
|
-
if (boundsUnder(m, part).length)
|
|
956
|
-
bounded.push(part);
|
|
957
|
-
return { parts, skipped, bounded, low, high, reaches };
|
|
929
|
+
return { parts, skipped, low, high, reaches };
|
|
958
930
|
}
|
|
959
931
|
const valueOfLin = (values, l) => l.terms.reduce((s, t) => s + t.k * (values[t.ref] ?? NaN), l.c);
|
|
960
|
-
/**
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
932
|
+
/**
|
|
933
|
+
* The room a figure sweeps (ADR-0145 2.3): every part over every joint's range, at the authored size or at `sizes`
|
|
934
|
+
* (design inputs, by id). Computed, never declared -- it holds the parts by what it is. Undefined for a figure with no
|
|
935
|
+
* part to measure. Reads the asset; changes nothing.
|
|
936
|
+
*/
|
|
937
|
+
export function figureMotionRangeOf(asset, sizes = {}) {
|
|
966
938
|
const source = structuredClone(asset);
|
|
967
|
-
const { parts, skipped,
|
|
939
|
+
const { parts, skipped, low, high, reaches } = reachLins(source);
|
|
968
940
|
for (const axis of AXES) {
|
|
969
941
|
low[axis].push(...reaches.low[axis]);
|
|
970
942
|
high[axis].push(...reaches.high[axis]);
|
|
971
943
|
}
|
|
972
944
|
boundedSides(source.document.model, low, high);
|
|
973
945
|
if (!parts.length)
|
|
974
|
-
|
|
975
|
-
const values = compileFigureGraph(source.document.model).evaluate({ ...source.designInputs, ...source.stateDefaults })
|
|
946
|
+
return undefined;
|
|
947
|
+
const values = compileFigureGraph(source.document.model).evaluate({ ...source.designInputs, ...source.stateDefaults, ...sizes })
|
|
976
948
|
.values;
|
|
977
|
-
const
|
|
949
|
+
const bounds = Object.fromEntries(AXES.map(axis => [
|
|
978
950
|
axis,
|
|
979
951
|
{
|
|
980
952
|
min: round6(Math.min(...low[axis].map(l => valueOfLin(values, l)))),
|
|
981
953
|
max: round6(Math.max(...high[axis].map(l => valueOfLin(values, l))))
|
|
982
954
|
}
|
|
983
955
|
]));
|
|
984
|
-
|
|
985
|
-
const held = bounded.map(part => ({ part, mm: boundedWidthOf(m, values, boundsUnder(m, part)) }));
|
|
986
|
-
return { over, at, parts, skipped, ...(held.length ? { bounded: held } : {}), basis: fingerprintOf(source) };
|
|
956
|
+
return { bounds, parts, skipped };
|
|
987
957
|
}
|
|
988
958
|
/**
|
|
989
959
|
* The placement says which plane the mounting plane is. A part fastened to it in a way the new plane does not take --
|
|
@@ -1007,86 +977,9 @@ export function setPlacement(asset, a) {
|
|
|
1007
977
|
asset.placement = a.placement;
|
|
1008
978
|
return asset;
|
|
1009
979
|
}
|
|
1010
|
-
|
|
1011
|
-
const m = asset.document.model;
|
|
1012
|
-
if (!a.proposal || (a.proposal.over !== 'rest' && a.proposal.over !== 'range'))
|
|
1013
|
-
fail('SCHEMA', 'occupancy', 'a proposal is required; propose first, then confirm');
|
|
1014
|
-
const now = fingerprintOf(asset);
|
|
1015
|
-
if (a.proposal.basis !== now)
|
|
1016
|
-
fail('OCCUPANCY_STALE', 'occupancy', 'the figure changed since this was proposed, so the volume it would declare is not the one that was looked at; propose again and confirm that');
|
|
1017
|
-
/* Declared with a placement, the placement is set by the same command as on its own: one value, one check. */
|
|
1018
|
-
if (a.placement !== undefined)
|
|
1019
|
-
setPlacement(asset, { kind: 'set-placement', placement: a.placement });
|
|
1020
|
-
const padding = {};
|
|
1021
|
-
for (const axis of AXES) {
|
|
1022
|
-
const pad = a.padding?.[axis] ?? 0;
|
|
1023
|
-
if (!(Number.isFinite(pad) && pad >= 0))
|
|
1024
|
-
fail('OCCUPANCY_PADDING', `occupancy.${axis}`, `padding is millimetres, zero or more; got ${String(pad)}`);
|
|
1025
|
-
padding[axis] = pad;
|
|
1026
|
-
}
|
|
1027
|
-
const { parts, low, high, reaches } = occupancyLins(asset, a.proposal.over);
|
|
1028
|
-
/* What the parts carried by a turn reach either way about their pivots, on each axis. */
|
|
1029
|
-
for (const axis of AXES) {
|
|
1030
|
-
low[axis].push(...reaches.low[axis]);
|
|
1031
|
-
high[axis].push(...reaches.high[axis]);
|
|
1032
|
-
}
|
|
1033
|
-
boundedSides(m, low, high);
|
|
1034
|
-
for (const axis of AXES) {
|
|
1035
|
-
if (!padding[axis])
|
|
1036
|
-
continue;
|
|
1037
|
-
low[axis] = low[axis].map((l) => ({ ...l, c: l.c - padding[axis] }));
|
|
1038
|
-
high[axis] = high[axis].map((l) => ({ ...l, c: l.c + padding[axis] }));
|
|
1039
|
-
}
|
|
1040
|
-
if (parts.join('|') !== a.proposal.parts.join('|'))
|
|
1041
|
-
fail('OCCUPANCY_STALE', 'occupancy', `the figure changed since the proposal was made (${a.proposal.parts.join(', ')} then, ${parts.join(', ')} now); propose again and confirm that`);
|
|
1042
|
-
/* One node for the six bounds (affine-bounds@1): each candidate its constant, then a value and a ratio per term. */
|
|
1043
|
-
const args = [];
|
|
1044
|
-
const layout = AXES.flatMap(axis => [low[axis], high[axis]]).map(side => side
|
|
1045
|
-
.map((l) => {
|
|
1046
|
-
const n = throughSums(m, l);
|
|
1047
|
-
args.push(constantOf(m, 'mm', round6(n.c), 'd'));
|
|
1048
|
-
for (const t of n.terms)
|
|
1049
|
-
args.push(t.ref, constantOf(m, 'ratio', t.k, 'k'));
|
|
1050
|
-
return n.terms.length;
|
|
1051
|
-
})
|
|
1052
|
-
.join('_'));
|
|
1053
|
-
const id = namer(m, 'occupancy')('bounds');
|
|
1054
|
-
const port = (p) => `${id}.${p}`;
|
|
1055
|
-
m.nodes.push({
|
|
1056
|
-
id,
|
|
1057
|
-
op: 'affine-bounds@1',
|
|
1058
|
-
args,
|
|
1059
|
-
params: { layout: `L${layout.join('.')}` },
|
|
1060
|
-
outputs: Object.fromEntries(['xmin', 'xmax', 'ymin', 'ymax', 'zmin', 'zmax'].map(p => [p, port(p)]))
|
|
1061
|
-
});
|
|
1062
|
-
const bounds = Object.fromEntries(AXES.map(axis => [axis, { min: port(`${axis}min`), max: port(`${axis}max`) }]));
|
|
1063
|
-
const was = stringsIn(asset.occupancy?.bounds);
|
|
1064
|
-
asset.occupancy = { ...(asset.occupancy?.contact ? { contact: asset.occupancy.contact } : {}), bounds };
|
|
1065
|
-
/*
|
|
1066
|
-
The room declared before goes with what fed only it. Left in the graph, it kept reading where parts had been
|
|
1067
|
-
fastened, and the next fastening was refused over a room no one read (the gantry, 2026-09-25).
|
|
1068
|
-
*/
|
|
1069
|
-
for (const ref of was)
|
|
1070
|
-
dropIfUnused(asset, ref);
|
|
1071
|
-
/*
|
|
1072
|
-
A part's own measure the old room alone still read -- the part follows something else now -- goes too: kept, it
|
|
1073
|
-
was a dial that changed nothing (the turntable after every part followed the one ratio, 2026-09-25). So does its
|
|
1074
|
-
own position or turn, once a fastening places it: a floor part's height position stayed as a field that moved
|
|
1075
|
-
nothing (browser check, ADR-0097, 2026-09-27). The room's refit names them before it is confirmed (figureRoomRefitOf).
|
|
1076
|
-
*/
|
|
1077
|
-
const placed = new Set(m.nodes.filter((n) => n.op === 'place@1' || n.op === 'member@1').map((n) => n.id));
|
|
1078
|
-
for (const input of [...m.inputs])
|
|
1079
|
-
if (input.role === 'design' &&
|
|
1080
|
-
placed.has(String(input.id).split('.')[0]) &&
|
|
1081
|
-
/\.(dimension|size|position|rotation)\.[a-z]+$/.test(input.id))
|
|
1082
|
-
dropIfUnused(asset, input.id, input.id);
|
|
1083
|
-
return asset;
|
|
1084
|
-
}
|
|
1085
|
-
/** "This face is what the figure is mounted on." Kept apart from how much room the figure takes up. */
|
|
980
|
+
/** "This face is what the figure is mounted on." */
|
|
1086
981
|
export function setMountingFace(asset, a) {
|
|
1087
982
|
const m = asset.document.model;
|
|
1088
|
-
if (!asset.occupancy)
|
|
1089
|
-
fail('OCCUPANCY_UNDECLARED', 'occupancy', 'declare the room the figure takes up before naming the face it stands on');
|
|
1090
983
|
if (!Object.hasOwn(FIGURE_FACES, String(a.face)))
|
|
1091
984
|
fail('SCHEMA', a.part, `${String(a.face)} is not a face`);
|
|
1092
985
|
const { place } = partOf(m, a.part, a.part);
|
|
@@ -1099,16 +992,16 @@ export function setMountingFace(asset, a) {
|
|
|
1099
992
|
outputs: { pose: `${id}.value` },
|
|
1100
993
|
params: { frame: `${id}.frame`, name: a.face }
|
|
1101
994
|
});
|
|
1102
|
-
asset.
|
|
995
|
+
asset.mountingFace = {
|
|
1103
996
|
plane: 'mounting-plane',
|
|
1104
997
|
surface: { placement: place.outputs.placed, feature: `${id}.value` }
|
|
1105
998
|
};
|
|
1106
999
|
return asset;
|
|
1107
1000
|
}
|
|
1108
1001
|
export function clearMountingFace(asset) {
|
|
1109
|
-
if (!asset.
|
|
1110
|
-
fail('EDIT_TARGET', '
|
|
1111
|
-
delete asset.
|
|
1002
|
+
if (!asset.mountingFace)
|
|
1003
|
+
fail('EDIT_TARGET', 'mountingFace', 'this figure names no mounting face');
|
|
1004
|
+
delete asset.mountingFace;
|
|
1112
1005
|
return asset;
|
|
1113
1006
|
}
|
|
1114
|
-
//# sourceMappingURL=authoring-
|
|
1007
|
+
//# sourceMappingURL=authoring-placement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authoring-placement.js","sourceRoot":"","sources":["../src/authoring-placement.ts"],"names":[],"mappings":"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"}
|