@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.
Files changed (95) hide show
  1. package/README.md +1 -1
  2. package/dist/authoring-actions.d.ts.map +1 -1
  3. package/dist/authoring-actions.js +16 -23
  4. package/dist/authoring-actions.js.map +1 -1
  5. package/dist/authoring-fastening.d.ts.map +1 -1
  6. package/dist/authoring-fastening.js +182 -13
  7. package/dist/authoring-fastening.js.map +1 -1
  8. package/dist/authoring-geometry.d.ts +17 -1
  9. package/dist/authoring-geometry.d.ts.map +1 -1
  10. package/dist/authoring-geometry.js +66 -5
  11. package/dist/authoring-geometry.js.map +1 -1
  12. package/dist/authoring-nodes.d.ts +20 -0
  13. package/dist/authoring-nodes.d.ts.map +1 -1
  14. package/dist/authoring-nodes.js +34 -0
  15. package/dist/authoring-nodes.js.map +1 -1
  16. package/dist/authoring-occupancy.d.ts.map +1 -1
  17. package/dist/authoring-occupancy.js +419 -109
  18. package/dist/authoring-occupancy.js.map +1 -1
  19. package/dist/authoring-size.d.ts +5 -10
  20. package/dist/authoring-size.d.ts.map +1 -1
  21. package/dist/authoring-size.js +28 -98
  22. package/dist/authoring-size.js.map +1 -1
  23. package/dist/authoring-types.d.ts +43 -23
  24. package/dist/authoring-types.d.ts.map +1 -1
  25. package/dist/contract.d.ts +4 -16
  26. package/dist/contract.d.ts.map +1 -1
  27. package/dist/contract.js.map +1 -1
  28. package/dist/create.d.ts +5 -3
  29. package/dist/create.d.ts.map +1 -1
  30. package/dist/create.js +3 -7
  31. package/dist/create.js.map +1 -1
  32. package/dist/face-overhang.d.ts +22 -2
  33. package/dist/face-overhang.d.ts.map +1 -1
  34. package/dist/face-overhang.js +139 -1
  35. package/dist/face-overhang.js.map +1 -1
  36. package/dist/fasten-place.d.ts +77 -0
  37. package/dist/fasten-place.d.ts.map +1 -1
  38. package/dist/fasten-place.js +214 -2
  39. package/dist/fasten-place.js.map +1 -1
  40. package/dist/gate.d.ts.map +1 -1
  41. package/dist/gate.js +28 -8
  42. package/dist/gate.js.map +1 -1
  43. package/dist/graph-types.d.ts +15 -2
  44. package/dist/graph-types.d.ts.map +1 -1
  45. package/dist/graph.js +15 -6
  46. package/dist/graph.js.map +1 -1
  47. package/dist/index.d.ts +6 -5
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +4 -3
  50. package/dist/index.js.map +1 -1
  51. package/dist/instance-size.d.ts +58 -32
  52. package/dist/instance-size.d.ts.map +1 -1
  53. package/dist/instance-size.js +155 -41
  54. package/dist/instance-size.js.map +1 -1
  55. package/dist/joint-list.d.ts.map +1 -1
  56. package/dist/joint-list.js +3 -3
  57. package/dist/joint-list.js.map +1 -1
  58. package/dist/joint-writing.d.ts.map +1 -1
  59. package/dist/joint-writing.js +69 -8
  60. package/dist/joint-writing.js.map +1 -1
  61. package/dist/kernel-version.d.ts +1 -1
  62. package/dist/kernel-version.js +1 -1
  63. package/dist/part-edit.d.ts.map +1 -1
  64. package/dist/part-edit.js +2 -2
  65. package/dist/part-edit.js.map +1 -1
  66. package/dist/proposal.js +9 -9
  67. package/dist/proposal.js.map +1 -1
  68. package/dist/recipe-from-parts.js +5 -5
  69. package/dist/recipe-from-parts.js.map +1 -1
  70. package/dist/release-contract.d.ts.map +1 -1
  71. package/dist/release-contract.js +7 -2
  72. package/dist/release-contract.js.map +1 -1
  73. package/dist/release-metrics.d.ts.map +1 -1
  74. package/dist/release-metrics.js +6 -2
  75. package/dist/release-metrics.js.map +1 -1
  76. package/dist/resize-plan.d.ts.map +1 -1
  77. package/dist/resize-plan.js +4 -9
  78. package/dist/resize-plan.js.map +1 -1
  79. package/dist/room.d.ts.map +1 -1
  80. package/dist/room.js +13 -4
  81. package/dist/room.js.map +1 -1
  82. package/dist/shape-edit.d.ts +1 -1
  83. package/dist/shape-edit.js +1 -1
  84. package/dist/shape-extreme.d.ts +55 -4
  85. package/dist/shape-extreme.d.ts.map +1 -1
  86. package/dist/shape-extreme.js +118 -4
  87. package/dist/shape-extreme.js.map +1 -1
  88. package/dist/shape-provider.d.ts.map +1 -1
  89. package/dist/shape-provider.js +4 -3
  90. package/dist/shape-provider.js.map +1 -1
  91. package/dist/size-edit.d.ts +32 -8
  92. package/dist/size-edit.d.ts.map +1 -1
  93. package/dist/size-edit.js +68 -125
  94. package/dist/size-edit.js.map +1 -1
  95. 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`, `FIGURE_INSTANCE_SIZE_DEFAULT`, `defaultInstanceSizeRange`, `foldInstanceSizeRange`, `figureInstanceSizeLimitsOf` |
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;AAoBnG,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"}
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 { figureSizeEditChanges } from "./size-edit.js";
31
+ import { figureSizeEditOf } from "./size-edit.js";
32
32
  import { isDetailLevel, AXES } from "./words.js";
33
- import { defaultInstanceSizeRange, foldInstanceSizeRange, figureInstanceSizeLimitsOf, FIGURE_INSTANCE_SIZE_INPUTS } from "./instance-size.js";
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, narrowDeclaredSize, holdsOverDeclaredSize } from "./authoring-size.js";
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
- /* The face the part's placement or fastening keeps stays where it is: its own position moves by what the size moves. */
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 figureSizeEditChanges(asset, action.part, sizes))
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
- A compiled asset is not changed afterwards (ADR-0119 decision 4): what is compiled last is what is returned. Narrowing the
294
- declared size range changes the asset, so it is done on a copy of the asset that has already been refused or accepted as
295
- it is (the refusals keep their order), and the narrowed copy is compiled in its turn. Only a command that asks to narrow
296
- pays for the second compile.
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 ((action.kind === 'link-dimension' || action.kind === 'make-repeat' || action.kind === 'set-joint') &&
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
- result = clone(asset);
303
- narrowDeclaredSize(result);
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
- range,
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;AAkC7B,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,CA2GnF;AAED;;;;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"}
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
- if (onPlane) {
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
- const C = rpyMatrix(rotate);
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
- for (const u of AXES.filter(x => x !== axis)) {
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 = o.align?.[u] ?? 'centre';
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' || (typeof how === 'object' && how && Object.hasOwn(how, 'mm'))) {
148
+ else if (how === 'centre' || isOffset(how)) {
106
149
  const mid = edge ? lin([...half(edge.lo), ...half(edge.hi)]) : lin([]);
107
- const off = typeof how === 'object' ? lin([{ ref: measureRef(m, asset, name, how.mm, `align.${u}`, path), k: 1 }]) : lin([]);
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 pose = AXES.map(x => plus(at[x], times(seat[x], -1)));
175
+ const from = AXES.map(x => plus(at[x], times(seat[x], -1)));
134
176
  const shift = frame.offset ?? {};
135
- const seatAt = AXES.map(x => (shift[x] === undefined || shift[x] === 0 ? seat[x] : plus(seat[x], lin([{ ref: measureRef(m, asset, name, shift[x], `offset.${x}`, `${path}.origin.offset.${x}`), k: 1 }]))));
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
- node.args = [...node.args.slice(0, 3), ...eulerOfAny(C, true).map(t => constantOf(m, 'deg', t, 'a'))];
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