@hatiolab/figure-model 0.7.3 → 0.9.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/authoring-fastening.d.ts +53 -8
- package/dist/authoring-fastening.d.ts.map +1 -1
- package/dist/authoring-fastening.js +158 -242
- package/dist/authoring-fastening.js.map +1 -1
- package/dist/authoring-geometry.d.ts +13 -46
- package/dist/authoring-geometry.d.ts.map +1 -1
- package/dist/authoring-geometry.js +28 -180
- package/dist/authoring-geometry.js.map +1 -1
- package/dist/authoring-occupancy.d.ts +3 -3
- package/dist/authoring-occupancy.d.ts.map +1 -1
- package/dist/authoring-occupancy.js +23 -12
- package/dist/authoring-occupancy.js.map +1 -1
- package/dist/authoring-proportion.d.ts.map +1 -1
- package/dist/authoring-proportion.js +15 -3
- package/dist/authoring-proportion.js.map +1 -1
- package/dist/authoring-types.d.ts +69 -32
- package/dist/authoring-types.d.ts.map +1 -1
- package/dist/authoring-types.js +14 -0
- package/dist/authoring-types.js.map +1 -1
- package/dist/command-preview.d.ts +11 -33
- package/dist/command-preview.d.ts.map +1 -1
- package/dist/command-preview.js +2 -61
- package/dist/command-preview.js.map +1 -1
- package/dist/contract.d.ts +1 -1
- package/dist/contract.d.ts.map +1 -1
- package/dist/examples.js +4 -4
- package/dist/examples.js.map +1 -1
- package/dist/face-overhang.d.ts +105 -0
- package/dist/face-overhang.d.ts.map +1 -0
- package/dist/face-overhang.js +357 -0
- package/dist/face-overhang.js.map +1 -0
- package/dist/fasten-place.d.ts +35 -0
- package/dist/fasten-place.d.ts.map +1 -0
- package/dist/fasten-place.js +91 -0
- package/dist/fasten-place.js.map +1 -0
- package/dist/gate.d.ts.map +1 -1
- package/dist/gate.js +7 -4
- package/dist/gate.js.map +1 -1
- package/dist/graph.d.ts.map +1 -1
- package/dist/graph.js +16 -2
- package/dist/graph.js.map +1 -1
- package/dist/index.d.ts +7 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -3
- package/dist/index.js.map +1 -1
- package/dist/joint-fields.d.ts +12 -0
- package/dist/joint-fields.d.ts.map +1 -0
- package/dist/joint-fields.js +20 -0
- package/dist/joint-fields.js.map +1 -0
- package/dist/joint-writing.d.ts +7 -2
- package/dist/joint-writing.d.ts.map +1 -1
- package/dist/joint-writing.js +224 -119
- 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/proposal.js +4 -4
- package/dist/proposal.js.map +1 -1
- package/dist/recipe.js +1 -1
- package/dist/recipe.js.map +1 -1
- package/dist/resize-plan.js +1 -1
- package/dist/resize-plan.js.map +1 -1
- package/dist/robots.d.ts.map +1 -1
- package/dist/robots.js +24 -22
- package/dist/robots.js.map +1 -1
- package/dist/shape-edit.d.ts.map +1 -1
- package/dist/shape-edit.js +7 -3
- package/dist/shape-edit.js.map +1 -1
- package/dist/shape-extreme.d.ts +49 -0
- package/dist/shape-extreme.d.ts.map +1 -0
- package/dist/shape-extreme.js +262 -0
- package/dist/shape-extreme.js.map +1 -0
- package/dist/shape-ops.d.ts +6 -7
- package/dist/shape-ops.d.ts.map +1 -1
- package/dist/shape-ops.js +72 -37
- package/dist/shape-ops.js.map +1 -1
- package/dist/size-edit.d.ts.map +1 -1
- package/dist/size-edit.js +40 -11
- package/dist/size-edit.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright © HatioLab Inc. All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
/*
|
|
5
|
+
* How far a part's real shape reaches along a direction in its own frame (ADR-0140 3.2, 3.4, stage 1): the outermost
|
|
6
|
+
* point, line or face of the shape itself -- not its box. A fastening stands a part on the face it meets by this, and
|
|
7
|
+
* lines it up by the reaches across the face, whatever the part's pose.
|
|
8
|
+
*
|
|
9
|
+
* Written as a graph expression (ADR-0140 3.3, 3.11): the shape's own values times numbers fixed when the joint is
|
|
10
|
+
* written (the direction is the face's normal seen from the part, which the joint fixes), summed; the largest of such
|
|
11
|
+
* sums where which point reaches furthest turns with the sizes -- a drawn section's corners, a frustum's two ends --
|
|
12
|
+
* (`max@1`); and the root of a sum of squares where an ellipse or a spheroid of two radii is slanted (`hypot@1`). The
|
|
13
|
+
* graph is built when the joint is written; a drag runs the evaluator as it is.
|
|
14
|
+
*/
|
|
15
|
+
import { figureExtrudeLayoutOf, figureLoftLayoutOf, figureShapeBoundsOf, figureShapeDescriptionOf } from "./shape-ops.js";
|
|
16
|
+
import { FIGURE_SECTION_PLANE } from "./section.js";
|
|
17
|
+
import { partOf, constantOf } from "./authoring-nodes.js";
|
|
18
|
+
import { ownSpansOf, planeOf } from "./authoring-geometry.js";
|
|
19
|
+
import { figureShapeFaces } from "./graph.js";
|
|
20
|
+
import { AXES } from "./words.js";
|
|
21
|
+
const EPS = 1e-12;
|
|
22
|
+
const clean = (k) => (Math.abs(k) < EPS ? 0 : Math.round(k * 1e12) / 1e12);
|
|
23
|
+
/** Terms with one entry per reference, their factors added, the ones that cancel dropped. */
|
|
24
|
+
function summed(terms) {
|
|
25
|
+
const by = new Map();
|
|
26
|
+
for (const t of terms)
|
|
27
|
+
by.set(t.ref, (by.get(t.ref) ?? 0) + t.k);
|
|
28
|
+
return [...by].map(([ref, k]) => ({ ref, k: clean(k) })).filter(t => t.k !== 0);
|
|
29
|
+
}
|
|
30
|
+
export const lin = (terms, constant = 0) => ({ terms: summed(terms), constant: clean(constant) });
|
|
31
|
+
const isLin = (r) => 'terms' in r;
|
|
32
|
+
/** A reach times a number: a sum's factors times it; anything else as it is, times it. */
|
|
33
|
+
export function times(r, k) {
|
|
34
|
+
if (k === 1)
|
|
35
|
+
return r;
|
|
36
|
+
if (isLin(r))
|
|
37
|
+
return lin(r.terms.map(t => ({ ref: t.ref, k: t.k * k })), r.constant * k);
|
|
38
|
+
if ('add' in r)
|
|
39
|
+
return plus(...r.add.map(p => times(p, k)));
|
|
40
|
+
if ('scaled' in r)
|
|
41
|
+
return times(r.scaled, r.k * k);
|
|
42
|
+
return { scaled: r, k: clean(k) };
|
|
43
|
+
}
|
|
44
|
+
/** Sums fold into one; anything else stays a sum of parts. */
|
|
45
|
+
export function plus(...parts) {
|
|
46
|
+
const flat = parts.flatMap(p => ('add' in p ? p.add : [p]));
|
|
47
|
+
const sums = flat.filter(isLin);
|
|
48
|
+
const rest = flat.filter(p => !isLin(p));
|
|
49
|
+
const folded = lin(sums.flatMap(s => s.terms), sums.reduce((c, s) => c + s.constant, 0));
|
|
50
|
+
if (!rest.length)
|
|
51
|
+
return folded;
|
|
52
|
+
return { add: [...(folded.terms.length || folded.constant ? [folded] : []), ...rest] };
|
|
53
|
+
}
|
|
54
|
+
/** The largest of candidates: one candidate is itself; the same sum twice is one. */
|
|
55
|
+
function largest(candidates) {
|
|
56
|
+
const seen = new Map(candidates.map(c => [JSON.stringify(c), c]));
|
|
57
|
+
const unique = [...seen.values()];
|
|
58
|
+
return unique.length === 1 ? unique[0] : { max: unique };
|
|
59
|
+
}
|
|
60
|
+
/** √(a² + b² + …) of reaches: a zero one drops, one left is its own size. */
|
|
61
|
+
function root(parts) {
|
|
62
|
+
const live = parts.filter(p => !(isLin(p) && !p.terms.length && !p.constant));
|
|
63
|
+
if (live.length === 1 && isLin(live[0])) {
|
|
64
|
+
const only = live[0];
|
|
65
|
+
/* |k·r| for a positive radius r: the factor's size. */
|
|
66
|
+
return lin(only.terms.map(t => ({ ref: t.ref, k: Math.abs(t.k) })), Math.abs(only.constant));
|
|
67
|
+
}
|
|
68
|
+
return live.length ? { hypot: live } : lin([]);
|
|
69
|
+
}
|
|
70
|
+
/** The reach of a shape along `d` -- a unit vector in its own frame -- from its origin: the one rule (ADR-0140 3.2). */
|
|
71
|
+
function reachOf(input, d) {
|
|
72
|
+
const at = (axis) => d[AXES.indexOf(axis)];
|
|
73
|
+
if (input.kind === 'box')
|
|
74
|
+
return plus(...AXES.filter(x => Math.abs(at(x)) >= EPS).map(x => times(at(x) > 0 ? input.hi[x] : input.lo[x], at(x))));
|
|
75
|
+
if (input.kind === 'sphere') {
|
|
76
|
+
const across = Math.hypot(...AXES.filter(x => x !== input.axis).map(at));
|
|
77
|
+
return ellipseReach(input.radial, input.axial, across, at(input.axis));
|
|
78
|
+
}
|
|
79
|
+
const dl = at(input.axis);
|
|
80
|
+
/* Along the push: the end the direction goes toward. */
|
|
81
|
+
const toward = (end) => times(input.ends[end], dl);
|
|
82
|
+
if (input.kind === 'taper') {
|
|
83
|
+
const across = Math.hypot(...AXES.filter(x => x !== input.axis).map(at));
|
|
84
|
+
/* The rim that reaches further, with the sizes. */
|
|
85
|
+
return largest([plus(toward('lo'), times(input.radii[0], across)), plus(toward('hi'), times(input.radii[1], across))]);
|
|
86
|
+
}
|
|
87
|
+
const [a, b] = input.plane;
|
|
88
|
+
const da = at(a), db = at(b);
|
|
89
|
+
const corner = ([pa, pb]) => plus(times(pa, da), times(pb, db));
|
|
90
|
+
if (input.kind === 'loft') {
|
|
91
|
+
/* A pyramid: its base's corners at the start, or its apex at the end -- whichever reaches further, with the sizes. */
|
|
92
|
+
const base = input.points.map(c => plus(corner(c), toward('lo')));
|
|
93
|
+
const apex = plus(toward('hi'), corner(input.apex));
|
|
94
|
+
/* Straight along its axis the base and the apex differ by its length alone, which is positive: the end is known. */
|
|
95
|
+
if (Math.abs(da) < EPS && Math.abs(db) < EPS)
|
|
96
|
+
return dl > 0 ? apex : base[0];
|
|
97
|
+
return largest([...base, apex]);
|
|
98
|
+
}
|
|
99
|
+
const push = toward(dl > 0 ? 'hi' : 'lo');
|
|
100
|
+
if (input.kind === 'rounded') {
|
|
101
|
+
/* Rounded corners: the straight sides to where the corners start, and the corner's own quarter ellipse. */
|
|
102
|
+
const sides = plus(times(input.across[0], Math.abs(da) / 2), times(input.corner[0], -Math.abs(da)), times(input.across[1], Math.abs(db) / 2), times(input.corner[1], -Math.abs(db)));
|
|
103
|
+
return plus(push, sides, ellipseReach(input.corner[0], input.corner[1], da, db));
|
|
104
|
+
}
|
|
105
|
+
if (input.kind === 'ellipse')
|
|
106
|
+
return plus(push, ellipseReach(input.radius[0], input.radius[1], da, db));
|
|
107
|
+
/* A drawn section's corners at the start, and along the push its far end the way the direction goes. */
|
|
108
|
+
return plus(push, largest(input.points.map(corner)));
|
|
109
|
+
}
|
|
110
|
+
/** The reach of a part's shape along `d` -- a unit vector in the part's own frame -- from its origin, as graph terms. */
|
|
111
|
+
export function figureShapeExtremeAlong(m, part, d, path) {
|
|
112
|
+
return reachOf(modelReachInput(m, part, path), d);
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* How far an evaluated shape reaches along `d` (a unit vector in its own frame), in millimetres: the most and the
|
|
116
|
+
* least of it, from its origin -- the same rule a fastening stands a part by, read from the shape as evaluated.
|
|
117
|
+
*/
|
|
118
|
+
export function figureShapeReachOf(shape, d) {
|
|
119
|
+
const input = evaluatedReachInput(shape);
|
|
120
|
+
const neg = d.map(v => -v);
|
|
121
|
+
return { max: figureReachValue(reachOf(input, d), {}), min: -figureReachValue(reachOf(input, neg), {}) };
|
|
122
|
+
}
|
|
123
|
+
/** A shape's measures as graph terms: its node's arguments, and its ends along a push as the faces there lie. */
|
|
124
|
+
function modelReachInput(m, part, path) {
|
|
125
|
+
const { shape } = partOf(m, part, path);
|
|
126
|
+
const description = figureShapeDescriptionOf(shape, m);
|
|
127
|
+
const ref = (i) => lin([{ ref: shape.args[i], k: 1 }]);
|
|
128
|
+
/*
|
|
129
|
+
Its two ends along a push, as the faces there lie: a centred push's ends are ±half its length, read through the
|
|
130
|
+
graph (`figureShapeFaces`), not its start and its length -- which are one value on paper only when written so.
|
|
131
|
+
*/
|
|
132
|
+
const faces = figureShapeFaces(shape, m) ?? {};
|
|
133
|
+
const endsAlong = (axis) => {
|
|
134
|
+
const [lo, hi] = { x: ['left', 'right'], y: ['bottom', 'top'], z: ['back', 'front'] }[axis];
|
|
135
|
+
const start = [{ ref: shape.args[0], k: 1 }];
|
|
136
|
+
return {
|
|
137
|
+
lo: lin(faces[lo] ? planeOf(shape, faces[lo]) : start),
|
|
138
|
+
hi: lin(faces[hi] ? planeOf(shape, faces[hi]) : [...start, { ref: shape.args[1], k: 1 }])
|
|
139
|
+
};
|
|
140
|
+
};
|
|
141
|
+
const box = () => {
|
|
142
|
+
const spans = ownSpansOf(m, part, path);
|
|
143
|
+
return {
|
|
144
|
+
kind: 'box',
|
|
145
|
+
lo: Object.fromEntries(AXES.map(x => [x, lin(spans[x].lo)])),
|
|
146
|
+
hi: Object.fromEntries(AXES.map(x => [x, lin(spans[x].hi)]))
|
|
147
|
+
};
|
|
148
|
+
};
|
|
149
|
+
const drawn = (L) => {
|
|
150
|
+
const [a, b] = L.plane;
|
|
151
|
+
return L.points.map(q => [ref(L.arg.point[q][a]), ref(L.arg.point[q][b])]);
|
|
152
|
+
};
|
|
153
|
+
if (shape.op === 'extrude@1') {
|
|
154
|
+
const L = figureExtrudeLayoutOf(shape.params, shape.id);
|
|
155
|
+
const plane = L.plane;
|
|
156
|
+
const ends = endsAlong(L.axis);
|
|
157
|
+
if (L.section === 'portal' || (L.section === 'rectangle' && !L.rounded))
|
|
158
|
+
return box();
|
|
159
|
+
const across = () => [ref(L.arg.across[plane[0]]), ref(L.arg.across[plane[1]])];
|
|
160
|
+
if (L.section === 'rectangle')
|
|
161
|
+
return { kind: 'rounded', axis: L.axis, plane, ends, across: across(), corner: [ref(L.arg.corner[plane[0]]), ref(L.arg.corner[plane[1]])] };
|
|
162
|
+
if (L.section === 'ellipse')
|
|
163
|
+
return { kind: 'ellipse', axis: L.axis, plane, ends, radius: across() };
|
|
164
|
+
return { kind: 'polygon', axis: L.axis, plane, ends, points: drawn(L) };
|
|
165
|
+
}
|
|
166
|
+
if (shape.op === 'loft@1') {
|
|
167
|
+
const L = figureLoftLayoutOf(shape.params, shape.id);
|
|
168
|
+
const plane = L.plane;
|
|
169
|
+
return { kind: 'loft', axis: L.axis, plane, ends: endsAlong(L.axis), points: drawn(L), apex: [ref(L.apex[plane[0]]), ref(L.apex[plane[1]])] };
|
|
170
|
+
}
|
|
171
|
+
if (shape.op === 'revolve@1') {
|
|
172
|
+
const axis = shape.params.axis;
|
|
173
|
+
/* A half ellipse turned about the axis: radial arg 0, axial arg 1, centred on the origin. */
|
|
174
|
+
if (description?.kind === 'sphere')
|
|
175
|
+
return { kind: 'sphere', axis, radial: ref(0), axial: ref(1) };
|
|
176
|
+
/* A taper: start (0) and length (1) along the axis, a radius at each end (2, 3). */
|
|
177
|
+
return { kind: 'taper', axis, ends: endsAlong(axis), radii: [ref(2), ref(3)] };
|
|
178
|
+
}
|
|
179
|
+
/* A mesh: the kernel holds its bounds, not the file's points -- its reach is the box of its bounds. */
|
|
180
|
+
return box();
|
|
181
|
+
}
|
|
182
|
+
/** An evaluated shape's measures, in millimetres. */
|
|
183
|
+
function evaluatedReachInput(shape) {
|
|
184
|
+
const mm = (v) => lin([], v);
|
|
185
|
+
const box = () => {
|
|
186
|
+
const bounds = figureShapeBoundsOf(shape);
|
|
187
|
+
return {
|
|
188
|
+
kind: 'box',
|
|
189
|
+
lo: Object.fromEntries(AXES.map(x => [x, mm(bounds[x].min)])),
|
|
190
|
+
hi: Object.fromEntries(AXES.map(x => [x, mm(bounds[x].max)]))
|
|
191
|
+
};
|
|
192
|
+
};
|
|
193
|
+
if (shape.extrusion) {
|
|
194
|
+
const e = shape.extrusion;
|
|
195
|
+
const plane = [...FIGURE_SECTION_PLANE[e.axis]];
|
|
196
|
+
const ends = { lo: mm(e.start), hi: mm(e.end) };
|
|
197
|
+
const s = e.section;
|
|
198
|
+
if (s.kind === 'rectangle') {
|
|
199
|
+
const [ca, cb] = plane.map(x => s.corner?.[x] ?? 0);
|
|
200
|
+
if (!ca && !cb)
|
|
201
|
+
return box();
|
|
202
|
+
return { kind: 'rounded', axis: e.axis, plane, ends, across: [mm(s.size[plane[0]]), mm(s.size[plane[1]])], corner: [mm(ca), mm(cb)] };
|
|
203
|
+
}
|
|
204
|
+
if (s.kind === 'ellipse')
|
|
205
|
+
return { kind: 'ellipse', axis: e.axis, plane, ends, radius: [mm(s.radius[plane[0]]), mm(s.radius[plane[1]])] };
|
|
206
|
+
return { kind: 'polygon', axis: e.axis, plane, ends, points: s.points.map(q => [mm(q[plane[0]]), mm(q[plane[1]])]) };
|
|
207
|
+
}
|
|
208
|
+
if (shape.loft) {
|
|
209
|
+
const l = shape.loft;
|
|
210
|
+
const plane = [...FIGURE_SECTION_PLANE[l.axis]];
|
|
211
|
+
return { kind: 'loft', axis: l.axis, plane, ends: { lo: mm(l.start), hi: mm(l.end) }, points: l.section.points.map(q => [mm(q[plane[0]]), mm(q[plane[1]])]), apex: [mm(l.apex[plane[0]] ?? 0), mm(l.apex[plane[1]] ?? 0)] };
|
|
212
|
+
}
|
|
213
|
+
if (shape.revolution) {
|
|
214
|
+
const r = shape.revolution;
|
|
215
|
+
if (r.profile.kind === 'half-ellipse')
|
|
216
|
+
return { kind: 'sphere', axis: r.axis, radial: mm(r.profile.radial), axial: mm(r.profile.axial) };
|
|
217
|
+
return { kind: 'taper', axis: r.axis, ends: { lo: mm(r.profile.start), hi: mm(r.profile.end) }, radii: [mm(r.profile.startRadius), mm(r.profile.endRadius)] };
|
|
218
|
+
}
|
|
219
|
+
return box();
|
|
220
|
+
}
|
|
221
|
+
/** An ellipse of radii `ra`, `rb` along (da, db): √((da·ra)² + (db·rb)²) -- one radius when the two are one value. */
|
|
222
|
+
function ellipseReach(ra, rb, da, db) {
|
|
223
|
+
if (JSON.stringify(ra) === JSON.stringify(rb))
|
|
224
|
+
return times(ra, Math.hypot(da, db));
|
|
225
|
+
return root([times(ra, da), times(rb, db)]);
|
|
226
|
+
}
|
|
227
|
+
/** A reach's value at the graph's values. */
|
|
228
|
+
export function figureReachValue(reach, values) {
|
|
229
|
+
if (isLin(reach))
|
|
230
|
+
return reach.constant + reach.terms.reduce((s, t) => s + t.k * values[t.ref], 0);
|
|
231
|
+
if ('scaled' in reach)
|
|
232
|
+
return reach.k * figureReachValue(reach.scaled, values);
|
|
233
|
+
const parts = ('add' in reach ? reach.add : 'max' in reach ? reach.max : reach.hypot).map(r => figureReachValue(r, values));
|
|
234
|
+
return 'add' in reach ? parts.reduce((s, v) => s + v, 0) : 'max' in reach ? Math.max(...parts) : Math.hypot(...parts);
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Write a reach into the graph under `hint` with the joint's `name`, and give the value it is: a sum as `add@1` ·
|
|
238
|
+
* `mul@1` of its terms and a constant, the largest as `max@1`, a root as `hypot@1`, a multiple as `mul@1`. The numbers
|
|
239
|
+
* are the kernel's shared constants, so the same record writes the same nodes.
|
|
240
|
+
*/
|
|
241
|
+
export function writeFigureReach(m, name, reach, hint) {
|
|
242
|
+
const node = (op, args, h) => {
|
|
243
|
+
const id = name(h);
|
|
244
|
+
m.nodes.push({ id, op, args, outputs: { value: `${id}.value` } });
|
|
245
|
+
return `${id}.value`;
|
|
246
|
+
};
|
|
247
|
+
const write = (r, h) => {
|
|
248
|
+
if (isLin(r)) {
|
|
249
|
+
const parts = r.terms.map((t, i) => (t.k === 1 ? t.ref : node('mul@1', [t.ref, constantOf(m, 'ratio', t.k, 'k')], `${h}.t${i}`)));
|
|
250
|
+
if (r.constant || !parts.length)
|
|
251
|
+
parts.push(constantOf(m, 'mm', r.constant, 'd'));
|
|
252
|
+
return parts.length === 1 ? parts[0] : parts.slice(1).reduce((acc, p, i) => node('add@1', [acc, p], `${h}.s${i}`), parts[0]);
|
|
253
|
+
}
|
|
254
|
+
if ('scaled' in r)
|
|
255
|
+
return node('mul@1', [write(r.scaled, `${h}.x`), constantOf(m, 'ratio', r.k, 'k')], h);
|
|
256
|
+
const op = 'add' in r ? 'add@1' : 'max' in r ? 'max@1' : 'hypot@1';
|
|
257
|
+
const args = ('add' in r ? r.add : 'max' in r ? r.max : r.hypot).map((p, i) => write(p, `${h}.${i}`));
|
|
258
|
+
return op === 'add@1' ? args.slice(1).reduce((acc, p, i) => node('add@1', [acc, p], `${h}.a${i}`), args[0]) : node(op, args, h);
|
|
259
|
+
};
|
|
260
|
+
return write(reach, hint);
|
|
261
|
+
}
|
|
262
|
+
//# sourceMappingURL=shape-extreme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shape-extreme.js","sourceRoot":"","sources":["../src/shape-extreme.ts"],"names":[],"mappings":"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"}
|
package/dist/shape-ops.d.ts
CHANGED
|
@@ -211,14 +211,13 @@ export declare function figureShapeBoundsOf(shape: Pick<FigureEvaluatedShape, 'e
|
|
|
211
211
|
max: number;
|
|
212
212
|
}>;
|
|
213
213
|
/**
|
|
214
|
-
*
|
|
215
|
-
*
|
|
216
|
-
*
|
|
214
|
+
* Where an evaluated shape reaches furthest along a direction `d` (a unit vector in its own frame): the point, line or
|
|
215
|
+
* face of it that lies there, as points whose hull it is (ADR-0140 3.8 (나), stage 1). A corner is itself; a rim's
|
|
216
|
+
* furthest point is worked out, not looked for among samples, so a lying roller's line is where it is; a rim or a
|
|
217
|
+
* rounded corner lying flat against `d` is all of it, drawn as many points. Nothing for a mesh -- the kernel knows its
|
|
218
|
+
* box, not where its triangles are -- and for an end the inside opens through: the hull of a ring would cover its hole.
|
|
217
219
|
*/
|
|
218
|
-
export declare function
|
|
219
|
-
max: number;
|
|
220
|
-
min: number;
|
|
221
|
-
};
|
|
220
|
+
export declare function figureShapeContactOf(shape: FigureEvaluatedShape, d: readonly [number, number, number]): Array<[number, number, number]> | undefined;
|
|
222
221
|
/**
|
|
223
222
|
* Where a named feature of an evaluated shape sits, in its own frame: the middle of the face (of the inside, for an
|
|
224
223
|
* inside face), the middle of the shape for `centre`, and for a sphere, which has no flat face, its six extremes.
|
package/dist/shape-ops.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shape-ops.d.ts","sourceRoot":"","sources":["../src/shape-ops.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"shape-ops.d.ts","sourceRoot":"","sources":["../src/shape-ops.ts"],"names":[],"mappings":"AAeA,OAAO,EAA4C,KAAK,aAAa,EAA2B,MAAM,cAAc,CAAA;AACpH,OAAO,EAA6B,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClF,OAAO,EAAQ,KAAK,IAAI,EAAE,MAAM,YAAY,CAAA;AAE5C,KAAK,OAAO,GAAG,GAAG,CAAA;AAMlB,yFAAyF;AACzF,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAI/E,CAAA;AAEF,sHAAsH;AACtH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,IAAI,CAAA;IACV,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;IACd,KAAK,EAAE,aAAa,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAChD;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAA;CAC5B;AAED,kFAAkF;AAClF,MAAM,MAAM,eAAe,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAExD,MAAM,MAAM,eAAe,GAMzB;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,sBAAsB,CAAA;CAAE,CAAA;AAE3G;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG,iBAAiB,GAAG,YAAY,GAAG,cAAc,CAAA;AAEtF;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,wHAAwH;IACxH,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,eAAe,CAAC,GAAG,SAAS,CAAC,CAAC,CAAA;IAC3E,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAA;IAC7C,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAA;IAChD,sDAAsD;IACtD,IAAI,EAAE,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAA;CAC/F;AAID,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAA;AAC9E,eAAO,MAAM,oBAAoB,EAAE,SAAS,iBAAiB,EAAkD,CAAA;AAE/G,8EAA8E;AAC9E,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,IAAI,CAAA;IACV,mEAAmE;IACnE,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAC5B,OAAO,EAAE,iBAAiB,CAAA;IAC1B,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;IACzB,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAC;QAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAA;KAAE,CAAA;IACzE,GAAG,EAAE;QACH,KAAK,EAAE,CAAC,CAAA;QACR,MAAM,EAAE,CAAC,CAAA;QACT,2GAA2G;QAC3G,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;QACtC,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;QACtC,+CAA+C;QAC/C,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;QACrD,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAC7B,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB,CAAA;IACD,KAAK,EAAE,MAAM,CAAA;CACd;AAID,mFAAmF;AACnF,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,mBAAmB,CA6CnH;AAuID,MAAM,MAAM,oBAAoB,GAAG,cAAc,GAAG,OAAO,CAAA;AAqD3D,oCAAoC;AAGpC;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,mBAAmB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;CAAE,CAOjJ;AAmBD,uEAAuE;AACvE,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAAY,CAAA;AAe7D,qHAAqH;AACrH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE;IAAE,GAAG,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,GAAG,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAAG,MAAM,CAGvI;AAED,MAAM,WAAW,gBAAgB;IAC/B,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,mEAAmE;IACnE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,4EAA4E;IAC5E,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAClD,+DAA+D;IAC/D,IAAI,EAAE,IAAI,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,oFAAoF;AACpF,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAuB7G;AAuBD,eAAO,MAAM,2BAA2B,EAAE,SAAS,MAAM,EAAmD,CAAA;AAE5G;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG,SAAS,EACxG,KAAK,CAAC,EAAE;IAAE,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;IAAC,SAAS,EAAE,SAAS,OAAO,EAAE,CAAA;CAAE,GACnE,sBAAsB,GAAG,SAAS,CAMpC;AAID;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAA;IACjD,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,SAAS,CAAC,EAAE;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,OAAO,EAAE,aAAa,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;IAC9E,MAAM,CAAC,EAAE,YAAY,CAAA;IACrB,UAAU,CAAC,EAAE;QACX,IAAI,EAAE,IAAI,CAAA;QACV,OAAO,EACH;YAAE,IAAI,EAAE,cAAc,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,GACvD;YAAE,IAAI,EAAE,OAAO,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAE,CAAA;KAC1F,CAAA;IACD,2GAA2G;IAC3G,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC,aAAa,EAAE;YAAE,IAAI,EAAE,SAAS,CAAA;SAAE,CAAC,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;KAAE,CAAA;IAC5I;;;OAGG;IACH,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAA;IAC/K,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAClE;AA8ND,wDAAwD;AACxD,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CA4C1D,CAAA;AAID,uGAAuG;AACvG,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,IAAI,CAAC,oBAAoB,EAAE,WAAW,GAAG,MAAM,GAAG,YAAY,GAAG,MAAM,CAAC,GAC9E,MAAM,CAAC,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAsC5C;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,oBAAoB,EAC3B,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GACnC,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CA4E7C;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,oBAAoB,EAC3B,IAAI,EAAE,MAAM,GACX,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAyCtC"}
|
package/dist/shape-ops.js
CHANGED
|
@@ -674,56 +674,91 @@ export function figureShapeBoundsOf(shape) {
|
|
|
674
674
|
return out;
|
|
675
675
|
}
|
|
676
676
|
/**
|
|
677
|
-
*
|
|
678
|
-
*
|
|
679
|
-
*
|
|
677
|
+
* Where an evaluated shape reaches furthest along a direction `d` (a unit vector in its own frame): the point, line or
|
|
678
|
+
* face of it that lies there, as points whose hull it is (ADR-0140 3.8 (나), stage 1). A corner is itself; a rim's
|
|
679
|
+
* furthest point is worked out, not looked for among samples, so a lying roller's line is where it is; a rim or a
|
|
680
|
+
* rounded corner lying flat against `d` is all of it, drawn as many points. Nothing for a mesh -- the kernel knows its
|
|
681
|
+
* box, not where its triangles are -- and for an end the inside opens through: the hull of a ring would cover its hole.
|
|
680
682
|
*/
|
|
681
|
-
export function
|
|
683
|
+
export function figureShapeContactOf(shape, d) {
|
|
684
|
+
if (shape.mesh)
|
|
685
|
+
return undefined;
|
|
682
686
|
const idx = { x: 0, y: 1, z: 2 };
|
|
683
|
-
const
|
|
684
|
-
const
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
const
|
|
687
|
+
const ARC = 360;
|
|
688
|
+
const points = [];
|
|
689
|
+
/* An ellipse's arc from angle a0 to a1 about (cu, cv) in the plane (u, v), at `along` on the axis: the whole ellipse's
|
|
690
|
+
furthest point along d -- a rounded corner's whole ellipse lies inside the section, so off its arc that point is
|
|
691
|
+
never the furthest and is dropped below -- and all of the arc when d is square to it. */
|
|
692
|
+
const arc = (axis, along, cu, cv, ru, rv, a0, a1) => {
|
|
689
693
|
const [u, v] = FIGURE_SECTION_PLANE[axis];
|
|
690
|
-
const
|
|
691
|
-
|
|
694
|
+
const du = d[idx[u]], dv = d[idx[v]];
|
|
695
|
+
const h = Math.hypot(ru * du, rv * dv);
|
|
696
|
+
if (h < 1e-9 * Math.max(ru, rv, 1)) {
|
|
697
|
+
for (let i = 0; i <= ARC * ((a1 - a0) / (2 * Math.PI)); i++) {
|
|
698
|
+
const t = a0 + (i / (ARC * ((a1 - a0) / (2 * Math.PI)))) * (a1 - a0);
|
|
699
|
+
points.push({ [axis]: along, [u]: cu + ru * Math.cos(t), [v]: cv + rv * Math.sin(t) });
|
|
700
|
+
}
|
|
701
|
+
return;
|
|
702
|
+
}
|
|
703
|
+
const t = Math.atan2(rv * dv, ru * du);
|
|
704
|
+
points.push({ [axis]: along, [u]: cu + ru * Math.cos(t), [v]: cv + rv * Math.sin(t) });
|
|
692
705
|
};
|
|
693
|
-
const union = (xs) => ({
|
|
694
|
-
max: Math.max(...xs.map(x => x.max)),
|
|
695
|
-
min: Math.min(...xs.map(x => x.min))
|
|
696
|
-
});
|
|
697
706
|
if (shape.extrusion) {
|
|
698
707
|
const e = shape.extrusion;
|
|
699
708
|
const [u, v] = FIGURE_SECTION_PLANE[e.axis];
|
|
700
709
|
const s = e.section;
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
710
|
+
const c = shape.cavity;
|
|
711
|
+
const square = Math.abs(Math.abs(d[idx[e.axis]]) - 1) < 1e-9;
|
|
712
|
+
if (c && square && (d[idx[e.axis]] < 0 ? c.start === 'open' : c.end === 'open'))
|
|
713
|
+
return undefined;
|
|
714
|
+
for (const along of [e.start, e.end]) {
|
|
715
|
+
if (s.kind === 'ellipse')
|
|
716
|
+
arc(e.axis, along, 0, 0, s.radius[u], s.radius[v], 0, 2 * Math.PI);
|
|
717
|
+
else if (s.kind === 'polygon')
|
|
718
|
+
points.push(...s.points.map(q => ({ [u]: q[u], [v]: q[v], [e.axis]: along })));
|
|
719
|
+
else {
|
|
720
|
+
const hu = s.size[u] / 2, hv = s.size[v] / 2;
|
|
721
|
+
const ku = Math.min(s.corner?.[u] ?? 0, hu), kv = Math.min(s.corner?.[v] ?? 0, hv);
|
|
722
|
+
for (const [su, sv, a0] of [
|
|
723
|
+
[1, 1, 0],
|
|
724
|
+
[-1, 1, Math.PI / 2],
|
|
725
|
+
[-1, -1, Math.PI],
|
|
726
|
+
[1, -1, (3 * Math.PI) / 2]
|
|
727
|
+
]) {
|
|
728
|
+
points.push({ [u]: su * hu, [v]: sv * (hv - kv), [e.axis]: along }, { [u]: su * (hu - ku), [v]: sv * hv, [e.axis]: along });
|
|
729
|
+
if (ku > 0 && kv > 0)
|
|
730
|
+
arc(e.axis, along, su * (hu - ku), sv * (hv - kv), ku, kv, a0, a0 + Math.PI / 2);
|
|
731
|
+
}
|
|
732
|
+
}
|
|
733
|
+
}
|
|
707
734
|
}
|
|
708
|
-
if (shape.loft) {
|
|
735
|
+
else if (shape.loft) {
|
|
709
736
|
const l = shape.loft;
|
|
710
|
-
|
|
737
|
+
points.push(...l.section.points.map(p => ({ ...p, [l.axis]: l.start })), { ...l.apex, [l.axis]: l.end });
|
|
711
738
|
}
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
const b = shape.mesh.bounds;
|
|
715
|
-
return span([b.x.min, b.x.max].flatMap(x => [b.y.min, b.y.max].flatMap(y => [b.z.min, b.z.max].map(z => ({ x, y, z })))));
|
|
716
|
-
}
|
|
717
|
-
const r = shape.revolution;
|
|
718
|
-
if (r.profile.kind === 'half-ellipse') {
|
|
739
|
+
else {
|
|
740
|
+
const r = shape.revolution;
|
|
719
741
|
const [u, v] = FIGURE_SECTION_PLANE[r.axis];
|
|
720
|
-
|
|
721
|
-
|
|
742
|
+
if (r.profile.kind === 'half-ellipse') {
|
|
743
|
+
const k = { [u]: r.profile.radial, [v]: r.profile.radial, [r.axis]: r.profile.axial };
|
|
744
|
+
const m = Math.hypot(...AXES.map(x => k[x] * d[idx[x]]));
|
|
745
|
+
points.push(Object.fromEntries(AXES.map(x => [x, (k[x] * k[x] * d[idx[x]]) / m])));
|
|
746
|
+
}
|
|
747
|
+
else
|
|
748
|
+
for (const [along, radius] of [
|
|
749
|
+
[r.profile.start, r.profile.startRadius],
|
|
750
|
+
[r.profile.end, r.profile.endRadius]
|
|
751
|
+
])
|
|
752
|
+
if (radius > 0)
|
|
753
|
+
arc(r.axis, along, 0, 0, radius, radius, 0, 2 * Math.PI);
|
|
754
|
+
else
|
|
755
|
+
points.push({ [r.axis]: along, [u]: 0, [v]: 0 });
|
|
722
756
|
}
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
757
|
+
const at = points.map(p => AXES.map(x => p[x] ?? 0));
|
|
758
|
+
const dot = (p) => p[0] * d[0] + p[1] * d[1] + p[2] * d[2];
|
|
759
|
+
const most = Math.max(...at.map(dot));
|
|
760
|
+
const size = Math.max(1, ...at.map(p => Math.hypot(...p)));
|
|
761
|
+
return at.filter(p => dot(p) >= most - 1e-6 * size);
|
|
727
762
|
}
|
|
728
763
|
/**
|
|
729
764
|
* Where a named feature of an evaluated shape sits, in its own frame: the middle of the face (of the inside, for an
|