@hatiolab/figure-model 0.9.3 → 0.9.5

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 (52) hide show
  1. package/dist/asset.d.ts +9 -0
  2. package/dist/asset.d.ts.map +1 -1
  3. package/dist/asset.js +9 -0
  4. package/dist/asset.js.map +1 -1
  5. package/dist/authoring-actions.js +3 -3
  6. package/dist/authoring-actions.js.map +1 -1
  7. package/dist/authoring-fastening.d.ts.map +1 -1
  8. package/dist/authoring-fastening.js +182 -13
  9. package/dist/authoring-fastening.js.map +1 -1
  10. package/dist/authoring-geometry.d.ts +10 -1
  11. package/dist/authoring-geometry.d.ts.map +1 -1
  12. package/dist/authoring-geometry.js +41 -3
  13. package/dist/authoring-geometry.js.map +1 -1
  14. package/dist/authoring-nodes.d.ts +20 -0
  15. package/dist/authoring-nodes.d.ts.map +1 -1
  16. package/dist/authoring-nodes.js +34 -0
  17. package/dist/authoring-nodes.js.map +1 -1
  18. package/dist/authoring-occupancy.d.ts.map +1 -1
  19. package/dist/authoring-occupancy.js +137 -36
  20. package/dist/authoring-occupancy.js.map +1 -1
  21. package/dist/authoring-types.d.ts +33 -1
  22. package/dist/authoring-types.d.ts.map +1 -1
  23. package/dist/face-overhang.d.ts +22 -2
  24. package/dist/face-overhang.d.ts.map +1 -1
  25. package/dist/face-overhang.js +139 -1
  26. package/dist/face-overhang.js.map +1 -1
  27. package/dist/fasten-place.d.ts +77 -0
  28. package/dist/fasten-place.d.ts.map +1 -1
  29. package/dist/fasten-place.js +214 -2
  30. package/dist/fasten-place.js.map +1 -1
  31. package/dist/index.d.ts +5 -4
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +4 -3
  34. package/dist/index.js.map +1 -1
  35. package/dist/joint-writing.d.ts.map +1 -1
  36. package/dist/joint-writing.js +67 -6
  37. package/dist/joint-writing.js.map +1 -1
  38. package/dist/kernel-version.d.ts +1 -1
  39. package/dist/kernel-version.js +1 -1
  40. package/dist/proposal.js +2 -2
  41. package/dist/proposal.js.map +1 -1
  42. package/dist/shape-edit.d.ts +1 -1
  43. package/dist/shape-edit.js +1 -1
  44. package/dist/shape-extreme.d.ts +55 -4
  45. package/dist/shape-extreme.d.ts.map +1 -1
  46. package/dist/shape-extreme.js +118 -4
  47. package/dist/shape-extreme.js.map +1 -1
  48. package/dist/size-edit.d.ts +32 -8
  49. package/dist/size-edit.d.ts.map +1 -1
  50. package/dist/size-edit.js +68 -125
  51. package/dist/size-edit.js.map +1 -1
  52. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"face-overhang.d.ts","sourceRoot":"","sources":["../src/face-overhang.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"face-overhang.d.ts","sourceRoot":"","sources":["../src/face-overhang.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,7 @@ import { figurePlacementOf, upgradeFigurePlacement } from "./asset.js";
11
11
  import { evaluate, figureBodyOwnerOf, figurePartFaceOf } from "./command-preview.js";
12
12
  import { compileFigureGraph, figureShapeFaces } from "./graph.js";
13
13
  import { ownSpansOf, mul3, mv3, transpose3, IDENTITY } from "./authoring-geometry.js";
14
- import { figureReachValue, figureShapeExtremeAlong } from "./shape-extreme.js";
14
+ import { figureDiscOf, figureReachValue, figureRoundAbout, figureShapeExtremeAlong } from "./shape-extreme.js";
15
15
  import { figureShapeContactOf } from "./shape-ops.js";
16
16
  import { figureFastenAxesOf, figureFastenPlaceOf } from "./fasten-place.js";
17
17
  import { AXES } from "./words.js";
@@ -86,6 +86,8 @@ export function figureFaceMeasureOf(source, part, values = {}, place = {}) {
86
86
  let known = true;
87
87
  let exact = true;
88
88
  const sign = on === 'plane' ? 1 : faceSignOf(m, on);
89
+ const discRadius = on === 'plane' ? undefined : figureDiscOf(m, on.part, on.face, on.part);
90
+ const covers = [];
89
91
  for (const body of bodies) {
90
92
  const R = mul3(toTheirs, body.pose.r);
91
93
  const o = mv3(toTheirs, body.pose.t.map((v, i) => v - theirs.t[i]));
@@ -100,6 +102,18 @@ export function figureFaceMeasureOf(source, part, values = {}, place = {}) {
100
102
  const square = R.every(row => row.filter(v => Math.abs(v) > 1e-9).length === 1);
101
103
  if (body.shape.mesh && !square)
102
104
  exact = false;
105
+ if (discRadius) {
106
+ const middle = Object.fromEntries(axes.map(a => [a, (own[a].lo + own[a].hi) / 2]));
107
+ const half = Object.fromEntries(axes.map(a => [a, (own[a].hi - own[a].lo) / 2]));
108
+ const n = AXES.indexOf(normal);
109
+ if (figureRoundAbout(m, part, mv3(back, AXES.map((_, i) => (i === n ? 1 : 0))), part))
110
+ covers.push({ middle, half, round: half[axes[0]], exact: true });
111
+ else {
112
+ /* A rectangle while one of its own axes lies across the disc; a mesh's is its box. */
113
+ const across = [0, 1, 2].some(c => axes.some(a => Math.abs(Math.abs(R[AXES.indexOf(a)][c]) - 1) < 1e-9));
114
+ covers.push({ middle, half, exact: across && !body.shape.mesh });
115
+ }
116
+ }
103
117
  if (!known)
104
118
  continue;
105
119
  if (facing === 'centre') {
@@ -127,6 +141,15 @@ export function figureFaceMeasureOf(source, part, values = {}, place = {}) {
127
141
  ...(outline ? { outline } : {}),
128
142
  extent,
129
143
  ...(known ? { contact } : {}),
144
+ ...(discRadius
145
+ ? {
146
+ disc: {
147
+ centre: Object.fromEntries(axes.map(a => [a, edges[a] ? (edges[a].lo + edges[a].hi) / 2 : 0])),
148
+ radius: Object.fromEntries(axes.map(a => [a, figureReachValue(discRadius[a], graph)])),
149
+ covers
150
+ }
151
+ }
152
+ : {}),
130
153
  exact
131
154
  };
132
155
  }
@@ -171,6 +194,8 @@ export function figureFaceOverhangAt(measure, align) {
171
194
  }
172
195
  else if (measure.on === 'plane' && edges[a])
173
196
  judged[a] = edges[a];
197
+ if (measure.disc)
198
+ return onDisc(measure, measure.disc, shift, at, judged);
174
199
  const sides = [];
175
200
  const wider = [];
176
201
  const lopsided = [];
@@ -220,6 +245,85 @@ export function figureFaceOverhangAt(measure, align) {
220
245
  contact: contactOf(measure, judged, shift)
221
246
  };
222
247
  }
248
+ /**
249
+ * How a part lies on an end disc (ADR-0140 3.9, chief architect 10-20), by the rule min and max line it up with: along an
250
+ * axis u, with e its middle off the axis across, a round part of radius r on a disc of radius R is within while its
251
+ * middle is within √((R − r)² − e²); a rectangle while its edge is within a·√(1 − (E/b)²), E = e + its half depth -- a
252
+ * and b the disc's radii along u and across. Past that is how far it would move along u alone; where no move along u
253
+ * would do, it is measured where it lies nearest the axis across.
254
+ */
255
+ function onDisc(measure, disc, shift, at, judged) {
256
+ const [u0, w0] = measure.axes;
257
+ const past = {};
258
+ const widerOn = new Set();
259
+ let exact = measure.exact;
260
+ let over = false;
261
+ const one = Math.abs(disc.radius[u0] - disc.radius[w0]) < 1e-9;
262
+ for (const cover of disc.covers) {
263
+ const c = (x) => cover.middle[x] + shift[x] - disc.centre[x];
264
+ const round = cover.round !== undefined && one ? cover.round : undefined;
265
+ if (cover.round !== undefined && !one)
266
+ exact = false;
267
+ if (!cover.exact)
268
+ exact = false;
269
+ for (const [u, w] of [[u0, w0], [w0, u0]]) {
270
+ const a = disc.radius[u], b = disc.radius[w];
271
+ let reach;
272
+ if (round !== undefined) {
273
+ if (round > a + TOUCH)
274
+ widerOn.add(u);
275
+ const D = Math.max(0, a - round);
276
+ const e = Math.abs(c(w));
277
+ /* Within along u alone: its middle within the chord at e; else its side within the rim where it lies nearest. */
278
+ reach = e <= D ? Math.sqrt(D * D - e * e) + round : Math.sqrt(Math.max(0, a * a - Math.max(0, e - round) ** 2));
279
+ reach -= round;
280
+ past[`${u}.high`] = Math.max(past[`${u}.high`] ?? -Infinity, c(u) - reach);
281
+ past[`${u}.low`] = Math.max(past[`${u}.low`] ?? -Infinity, -c(u) - reach);
282
+ over ||= Math.hypot(c(u), c(w)) < a + round;
283
+ }
284
+ else {
285
+ const h = cover.half[u], d = cover.half[w];
286
+ if (2 * h > 2 * a + TOUCH)
287
+ widerOn.add(u);
288
+ const E = Math.abs(c(w)) + d;
289
+ const near = Math.max(0, Math.abs(c(w)) - d);
290
+ const rim = a * Math.sqrt(Math.max(0, 1 - ((E <= b ? E : near) / b) ** 2));
291
+ past[`${u}.high`] = Math.max(past[`${u}.high`] ?? -Infinity, c(u) + h - rim);
292
+ past[`${u}.low`] = Math.max(past[`${u}.low`] ?? -Infinity, -(c(u) - h) - rim);
293
+ const q = (x, half) => Math.max(0, Math.abs(c(x)) - half);
294
+ over ||= (q(u, h) / a) ** 2 + (q(w, d) / b) ** 2 < 1;
295
+ }
296
+ }
297
+ }
298
+ const sides = [];
299
+ const wider = measure.axes.filter(x => widerOn.has(x));
300
+ const lopsided = [];
301
+ let pastWhereItFits = false;
302
+ for (const u of measure.axes) {
303
+ const [low, high] = [past[`${u}.low`], past[`${u}.high`]];
304
+ if (low > TOUCH)
305
+ sides.push({ axis: u, side: 'low', mm: round1(low) });
306
+ if (high > TOUCH)
307
+ sides.push({ axis: u, side: 'high', mm: round1(high) });
308
+ if (wider.includes(u)) {
309
+ if (Math.abs(low - high) > 0.5)
310
+ lopsided.push(u);
311
+ }
312
+ else if (low > TOUCH || high > TOUCH)
313
+ pastWhereItFits = true;
314
+ }
315
+ return {
316
+ part: measure.part,
317
+ on: measure.on,
318
+ state: pastWhereItFits ? (exact ? 'out' : 'possible') : sides.length ? 'larger' : 'inside',
319
+ sides,
320
+ wider,
321
+ lopsided,
322
+ at,
323
+ over,
324
+ contact: contactOf(measure, judged, shift)
325
+ };
326
+ }
223
327
  /** (나): every copy's touching hull over the face's outline; the plane's declared size, or none, on the plane. */
224
328
  function contactOf(measure, judged, shift) {
225
329
  const [a, b] = measure.axes;
@@ -352,6 +456,40 @@ export function figureFaceInsideAlignOf(measure, align, lineUp = {}) {
352
456
  next.align[a] =
353
457
  level && (lineUp[a] ?? true) ? (low ? 'min' : 'max') : { mm: Math.round(middle - (e.lo + e.hi) / 2) };
354
458
  }
459
+ /*
460
+ On a disc one point touches the rim (ADR-0140 3.9): it is brought in along the one axis it is furthest past along,
461
+ the middle on the other -- lined up with the rim, or, where an edge is not offered, the distance that puts it there,
462
+ by the rule the rim is measured by (a whole millimetre in).
463
+ */
464
+ const disc = measure.disc;
465
+ const past = next.moved.filter(a => !now.wider.includes(a));
466
+ if (disc && past.length) {
467
+ const most = (a) => Math.max(...now.sides.filter(s => s.axis === a).map(s => s.mm));
468
+ const u = past.reduce((x, y) => (most(y) > most(x) ? y : x));
469
+ const w = measure.axes.find(a => a !== u);
470
+ const high = now.sides.some(s => s.axis === u && s.side === 'high' && s.mm === most(u));
471
+ if (next.moved.includes(w))
472
+ next.align[w] = 'centre';
473
+ if (lineUp[u] ?? true)
474
+ next.align[u] = high ? 'max' : 'min';
475
+ else {
476
+ const mid = (x) => (measure.extent[x].lo + measure.extent[x].hi) / 2;
477
+ /* Where its middle stands across: on the disc's middle when centred, else where it is. */
478
+ const across = next.align[w] === 'centre' ? 0 : mid(w) - disc.centre[w];
479
+ const [ra, rb] = [disc.radius[u], disc.radius[w]];
480
+ let room = Infinity;
481
+ for (const c of disc.covers) {
482
+ const off = c.middle[u] - mid(u);
483
+ const cw = c.middle[w] - mid(w) + across;
484
+ const reach = c.round !== undefined && Math.abs(ra - rb) < 1e-9
485
+ ? Math.sqrt(Math.max(0, (ra - c.round) ** 2 - cw ** 2))
486
+ : ra * Math.sqrt(Math.max(0, 1 - ((Math.abs(cw) + c.half[w]) / rb) ** 2)) - c.half[u];
487
+ room = Math.min(room, reach - (high ? off : -off));
488
+ }
489
+ const e = measure.edges[u];
490
+ next.align[u] = { mm: (high ? 1 : -1) * Math.floor(room) + disc.centre[u] - (e ? (e.lo + e.hi) / 2 : 0) };
491
+ }
492
+ }
355
493
  return next.moved.length ? next : { cannot: 'inside' };
356
494
  }
357
495
  //# sourceMappingURL=face-overhang.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"face-overhang.js","sourceRoot":"","sources":["../src/face-overhang.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"face-overhang.js","sourceRoot":"","sources":["../src/face-overhang.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { FigureAsset } from './asset-types.ts';
2
+ import type { FigureFacing, FigureSurfacePlace } from './authoring-types.ts';
2
3
  import { type Axis } from './words.ts';
3
4
  /** What a part is fastened to: a face of another part, or the plane the figure is mounted on. */
4
5
  export type FigureFastenTarget = {
@@ -32,4 +33,80 @@ export declare function figureFastenPlaceOf(a: {
32
33
  face: Partial<Record<Axis, number | undefined>>;
33
34
  part: Partial<Record<Axis, number>>;
34
35
  }): Partial<Record<Axis, number>>;
36
+ /**
37
+ * The curved surface a part can be fastened to at a point (ADR-0140 3.9): `around` -- a cylinder's side, `axis` its
38
+ * push -- or `toward` -- a sphere's or an ellipsoid's, `axis` the one it is turned about. Nothing for a part with flat
39
+ * faces only, a frustum, or rounded corners.
40
+ */
41
+ export declare function figureSurfaceOf(source: FigureAsset, part: string): {
42
+ form: 'around' | 'toward';
43
+ axis: Axis;
44
+ } | undefined;
45
+ /**
46
+ * The point on `target`'s curved surface on the side `part` stands on now (ADR-0140 3.9, its default): the direction
47
+ * from the target's middle to the middle of the part's real extent, in the target's own frame. On a sphere that
48
+ * direction is `toward`; on a cylinder's side its angle round the push is `around`, and how far along the push the
49
+ * part's middle is from the side's middle is `along` -- to a tenth of a millimetre, the centre when nearer than half one.
50
+ * Nothing when the target has no such surface, or the part stands on its axis, or beyond a cylinder's end -- an end
51
+ * disc faces it there, not the side.
52
+ */
53
+ export declare function figureSurfaceKeptPlaceOf(source: FigureAsset, part: string, target: string, values?: Record<string, number>): FigureSurfacePlace | undefined;
54
+ /**
55
+ * An angle chosen round a curved surface (ADR-0140 3.9, stage 4): caught at every 45° within 5°, else to a whole degree
56
+ * -- one rule for an angle dragged in the fastening window and one pressed on the canvas (chief architect 2026-10-20).
57
+ */
58
+ export declare function figureCaughtAngleOf(degrees: number): number;
59
+ /** The angles a point of a curved surface is chosen by: `around` a cylinder's side; a sphere's azimuth (the same rule round its axis) and elevation. */
60
+ export type FigureSurfaceAngles = {
61
+ around: number;
62
+ } | {
63
+ azimuth: number;
64
+ elevation: number;
65
+ };
66
+ /** A point of a curved surface as the angles it is chosen by (`figureSurfacePlaceOf` is the way back). */
67
+ export declare function figureSurfaceAnglesOf(surface: {
68
+ form: 'around' | 'toward';
69
+ axis: Axis;
70
+ }, place: FigureSurfacePlace): FigureSurfaceAngles;
71
+ /**
72
+ * The point the angles choose, `along` a cylinder's side kept from `place`: a sphere's direction is its azimuth's
73
+ * direction across its axis, raised by its elevation, written as the record keeps it (to a millionth).
74
+ */
75
+ export declare function figureSurfacePlaceOf(surface: {
76
+ form: 'around' | 'toward';
77
+ axis: Axis;
78
+ }, place: FigureSurfacePlace, angles: FigureSurfaceAngles): FigureSurfacePlace;
79
+ /**
80
+ * What a press on a part lands on, for a fastening (ADR-0140 stage 4, chief architect 2026-10-20): `point` and `normal`
81
+ * in the part's own frame, as the scene tells them -- the normal of the drawn triangle.
82
+ * - A flat face: the triangle's normal within 1° of the face's outward one, the point on its plane within the larger
83
+ * of 0.5 mm and a ten-thousandth of the part's diagonal. `at` is where on it, from its middle on each axis across
84
+ * it -- the place a part pressed there is put, as a point of a curved surface is -- to a tenth of a millimetre,
85
+ * an axis nearer the middle than half a millimetre left out (as `figureFastenKeptPlaceOf` says a place).
86
+ * - Else a point of its curved surface, from the point alone -- the drawn triangles of a side or a sphere lean off the
87
+ * true normal by up to half their angle: round a cylinder's push the point's angle, and how far along it from the
88
+ * middle; on a sphere or an ellipsoid the normal there, n_i ∝ p_i / r_i². The angles caught as the window catches
89
+ * them (`figureCaughtAngleOf`).
90
+ * - Else -- rounded corners, a frustum's side, a mesh -- nothing to fasten to there: `not`.
91
+ */
92
+ export declare function figureFastenTargetAt(source: FigureAsset, part: string, point: readonly number[], normal: readonly number[], values?: Record<string, number>): {
93
+ face: string;
94
+ at: Partial<Record<Axis, number>>;
95
+ } | {
96
+ surface: FigureSurfacePlace;
97
+ } | {
98
+ not: 'curved';
99
+ };
100
+ /**
101
+ * The gap that keeps a part where it stands when it is fastened to `to` (ADR-0140 3.6, user 2026-10-20: 「현재 상태로
102
+ * 붙이기」): how far it is now from where the fastening would put it with no gap, along the face's outward normal -- the
103
+ * plane's, a face's, or a curved surface's at its point -- in the direction a gap moves it (out for meet and centre, in
104
+ * for flush). With its pose kept (3.6) and its place across the face kept (`figureFastenKeptPlaceOf`,
105
+ * `figureSurfaceKeptPlaceOf`), the part does not move. The fastening itself works it out, so the rule is the one rule;
106
+ * to a tenth of a millimetre, none nearer than half one, and none where the fastening is refused.
107
+ */
108
+ export declare function figureFastenKeptGapOf(source: FigureAsset, part: string, to: FigureFastenTarget | {
109
+ part: string;
110
+ surface: FigureSurfacePlace;
111
+ }, facing?: FigureFacing, values?: Record<string, number>): number;
35
112
  //# sourceMappingURL=fasten-place.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fasten-place.d.ts","sourceRoot":"","sources":["../src/fasten-place.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAQ,KAAK,IAAI,EAAE,MAAM,YAAY,CAAA;AAI5C,iGAAiG;AACjG,MAAM,MAAM,kBAAkB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAA;AAEzE,2HAA2H;AAC3H,MAAM,MAAM,qBAAqB,GAAG,QAAQ,GAAG,KAAK,GAAG,KAAK,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAA;AAE7E;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,kBAAkB,GAAG,IAAI,EAAE,CAStF;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,kBAAkB,EACtB,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAClC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CA2B/B;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE;IACrC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,qBAAqB,GAAG,SAAS,CAAC,CAAC,CAAA;IAC/D,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAA;IAC/C,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;CACpC,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAiBhC"}
1
+ {"version":3,"file":"fasten-place.d.ts","sourceRoot":"","sources":["../src/fasten-place.ts"],"names":[],"mappings":"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"}