@hatiolab/figure-model 0.1.30 → 0.1.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -1
- package/dist/release-contract.d.ts +2 -2
- package/dist/release-contract.d.ts.map +1 -1
- package/dist/release-contract.js +45 -3
- package/dist/release-contract.js.map +1 -1
- package/dist/types.d.ts +15 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +15 -4
- package/dist/types.js.map +1 -1
- package/dist/v3-asset-types.d.ts +116 -0
- package/dist/v3-asset-types.d.ts.map +1 -0
- package/dist/v3-asset-types.js +2 -0
- package/dist/v3-asset-types.js.map +1 -0
- package/dist/v3-asset.d.ts +8 -0
- package/dist/v3-asset.d.ts.map +1 -0
- package/dist/v3-asset.js +135 -0
- package/dist/v3-asset.js.map +1 -0
- package/dist/v3-authoring-session.d.ts +119 -0
- package/dist/v3-authoring-session.d.ts.map +1 -0
- package/dist/v3-authoring-session.js +132 -0
- package/dist/v3-authoring-session.js.map +1 -0
- package/dist/v3-capabilities.d.ts +3 -0
- package/dist/v3-capabilities.d.ts.map +1 -0
- package/dist/v3-capabilities.js +221 -0
- package/dist/v3-capabilities.js.map +1 -0
- package/dist/v3-contract.d.ts +7 -0
- package/dist/v3-contract.d.ts.map +1 -0
- package/dist/v3-contract.js +12 -0
- package/dist/v3-contract.js.map +1 -0
- package/dist/v3-create.d.ts +25 -0
- package/dist/v3-create.d.ts.map +1 -0
- package/dist/v3-create.js +50 -0
- package/dist/v3-create.js.map +1 -0
- package/dist/v3-document.d.ts +5 -0
- package/dist/v3-document.d.ts.map +1 -0
- package/dist/v3-document.js +31 -0
- package/dist/v3-document.js.map +1 -0
- package/dist/v3-editor-workspace.d.ts +334 -0
- package/dist/v3-editor-workspace.d.ts.map +1 -0
- package/dist/v3-editor-workspace.js +130 -0
- package/dist/v3-editor-workspace.js.map +1 -0
- package/dist/v3-graph-types.d.ts +91 -0
- package/dist/v3-graph-types.d.ts.map +1 -0
- package/dist/v3-graph-types.js +2 -0
- package/dist/v3-graph-types.js.map +1 -0
- package/dist/v3-graph.d.ts +5 -0
- package/dist/v3-graph.d.ts.map +1 -0
- package/dist/v3-graph.js +631 -0
- package/dist/v3-graph.js.map +1 -0
- package/dist/v3-json.d.ts +13 -0
- package/dist/v3-json.d.ts.map +1 -0
- package/dist/v3-json.js +94 -0
- package/dist/v3-json.js.map +1 -0
- package/dist/v3-part-edit.d.ts +12 -0
- package/dist/v3-part-edit.d.ts.map +1 -0
- package/dist/v3-part-edit.js +53 -0
- package/dist/v3-part-edit.js.map +1 -0
- package/docs/assembly-constraints-v3.md +141 -0
- package/docs/prototypes/README.md +73 -0
- package/docs/prototypes/render-dryroom.py +60 -0
- package/docs/prototypes/render-full-dryroom.mjs +86 -0
- package/docs/prototypes/shapeassembly-probe-results.json +325 -0
- package/docs/prototypes/shapeassembly-probe.py +84 -0
- package/docs/prototypes/v3-asset-samples.mjs +15 -0
- package/docs/prototypes/v3-asset-store.mjs +52 -0
- package/docs/prototypes/v3-asset-store.test.mjs +59 -0
- package/docs/prototypes/v3-asset.mjs +1 -0
- package/docs/prototypes/v3-asset.schema.json +44 -0
- package/docs/prototypes/v3-asset.test.mjs +68 -0
- package/docs/prototypes/v3-authoring-session.mjs +1 -0
- package/docs/prototypes/v3-authoring-session.test.mjs +65 -0
- package/docs/prototypes/v3-capability-plan.mjs +1 -0
- package/docs/prototypes/v3-capability-plan.test.mjs +56 -0
- package/docs/prototypes/v3-capability-samples.mjs +23 -0
- package/docs/prototypes/v3-document.mjs +2 -0
- package/docs/prototypes/v3-document.schema.json +66 -0
- package/docs/prototypes/v3-document.test.mjs +55 -0
- package/docs/prototypes/v3-dryroom-mesh.mjs +60 -0
- package/docs/prototypes/v3-dryroom-mesh.test.mjs +30 -0
- package/docs/prototypes/v3-editor-browser.mjs +97 -0
- package/docs/prototypes/v3-editor-workspace.mjs +1 -0
- package/docs/prototypes/v3-editor-workspace.test.mjs +35 -0
- package/docs/prototypes/v3-feature-pattern.test.mjs +131 -0
- package/docs/prototypes/v3-full-conveyor.mjs +60 -0
- package/docs/prototypes/v3-full-conveyor.test.mjs +61 -0
- package/docs/prototypes/v3-full-dryroom.mjs +67 -0
- package/docs/prototypes/v3-full-dryroom.test.mjs +54 -0
- package/docs/prototypes/v3-full-forklift.mjs +40 -0
- package/docs/prototypes/v3-full-forklift.test.mjs +37 -0
- package/docs/prototypes/v3-full-robot.mjs +35 -0
- package/docs/prototypes/v3-full-robot.test.mjs +68 -0
- package/docs/prototypes/v3-kernel.mjs +147 -0
- package/docs/prototypes/v3-kernel.test.mjs +144 -0
- package/docs/prototypes/v3-layout.test.mjs +281 -0
- package/docs/prototypes/v3-linear-comparison.py +183 -0
- package/docs/prototypes/v3-more-samples.test.mjs +182 -0
- package/docs/prototypes/v3-payload-collision.mjs +54 -0
- package/docs/prototypes/v3-payload-collision.test.mjs +68 -0
- package/docs/prototypes/v3-payload-fit.mjs +58 -0
- package/docs/prototypes/v3-payload-fit.test.mjs +59 -0
- package/docs/prototypes/v3-repeated-binding.mjs +13 -0
- package/docs/prototypes/v3-repeated-binding.test.mjs +46 -0
- package/docs/prototypes/v3-runtime-browser.mjs +76 -0
- package/docs/prototypes/v3-samples.test.mjs +144 -0
- package/docs/prototypes/v3-semantics.test.mjs +55 -0
- package/docs/prototypes/v3-spatial-plan.test.mjs +102 -0
- package/docs/prototypes/v3-typed-plan.mjs +3 -0
- package/docs/prototypes/v3-typed-plan.test.mjs +70 -0
- package/docs/prototypes/v3-typed-repeat.test.mjs +96 -0
- package/docs/v3-asset-persistence.md +66 -0
- package/docs/v3-authoring-transactions.md +57 -0
- package/docs/v3-capability-bindings.md +109 -0
- package/docs/v3-common-kernel-experiment.md +116 -0
- package/docs/v3-core-semantics.md +303 -0
- package/docs/v3-cutover.md +27 -0
- package/docs/v3-design.md +388 -0
- package/docs/v3-document-contract.md +55 -0
- package/docs/v3-dryroom-profile-validation.md +87 -0
- package/docs/v3-editor-integration.md +59 -0
- package/docs/v3-full-conveyor-validation.md +69 -0
- package/docs/v3-full-dryroom-validation.md +55 -0
- package/docs/v3-full-forklift-validation.md +41 -0
- package/docs/v3-full-robot-validation.md +64 -0
- package/docs/v3-layout-system.md +318 -0
- package/docs/v3-minimal-model.md +255 -0
- package/docs/v3-operator-contracts.md +148 -0
- package/docs/v3-payload-collision-validation.md +42 -0
- package/docs/v3-payload-contact-validation.md +56 -0
- package/docs/v3-repeated-binding-validation.md +42 -0
- package/docs/v3-research-review.md +160 -0
- package/docs/v3-runtime-extraction.md +107 -0
- package/docs/v3-sample-validation-expanded.md +106 -0
- package/docs/v3-sample-validation.md +97 -0
- package/docs/v3-shapeassembly-reproduction.md +99 -0
- package/docs/v3-spatial-contracts.md +84 -0
- package/docs/v3-status.md +41 -0
- package/docs/v3-storage-integration.md +58 -0
- package/docs/v3-typed-repeat-contracts.md +79 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v3-graph.js","sourceRoot":"","sources":["../src/v3-graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export type V3JsonValue = null | boolean | number | string | V3JsonValue[] | {
|
|
2
|
+
[key: string]: V3JsonValue;
|
|
3
|
+
};
|
|
4
|
+
/** Experimental resource limits, not a product storage quota. */
|
|
5
|
+
export declare const V3_JSON_MAX_BYTES: number;
|
|
6
|
+
export declare const V3_JSON_MAX_DEPTH = 64;
|
|
7
|
+
/** Identical UTF-8 accounting in browsers and Node, including lone surrogates. */
|
|
8
|
+
export declare function v3Utf8ByteLength(text: string): number;
|
|
9
|
+
/** Reject values JSON.stringify would silently discard or transform. Does not invoke getters. */
|
|
10
|
+
export declare function assertV3Json(value: unknown): asserts value is V3JsonValue;
|
|
11
|
+
/** Strict JSON transport only; this is NOT V3 model/asset semantic validation. */
|
|
12
|
+
export declare function parseV3Json(text: string): V3JsonValue;
|
|
13
|
+
//# sourceMappingURL=v3-json.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v3-json.d.ts","sourceRoot":"","sources":["../src/v3-json.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW,EAAE,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAA;CAAE,CAAA;AAE3G,iEAAiE;AACjE,eAAO,MAAM,iBAAiB,QAAc,CAAA;AAC5C,eAAO,MAAM,iBAAiB,KAAK,CAAA;AAMnC,kFAAkF;AAClF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,iGAAiG;AACjG,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,WAAW,CA+BzE;AAED,kFAAkF;AAClF,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CA0BrD"}
|
package/dist/v3-json.js
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { V3ContractError } from "./v3-contract.js";
|
|
2
|
+
/** Experimental resource limits, not a product storage quota. */
|
|
3
|
+
export const V3_JSON_MAX_BYTES = 1024 * 1024;
|
|
4
|
+
export const V3_JSON_MAX_DEPTH = 64;
|
|
5
|
+
function fail(code, detail) {
|
|
6
|
+
throw new V3ContractError(code, 'document', detail);
|
|
7
|
+
}
|
|
8
|
+
/** Identical UTF-8 accounting in browsers and Node, including lone surrogates. */
|
|
9
|
+
export function v3Utf8ByteLength(text) {
|
|
10
|
+
return new TextEncoder().encode(text).byteLength;
|
|
11
|
+
}
|
|
12
|
+
/** Reject values JSON.stringify would silently discard or transform. Does not invoke getters. */
|
|
13
|
+
export function assertV3Json(value) {
|
|
14
|
+
const active = new Set();
|
|
15
|
+
function visit(current, depth) {
|
|
16
|
+
if (depth > V3_JSON_MAX_DEPTH)
|
|
17
|
+
fail('DOCUMENT_LIMIT', 'nesting exceeds 64');
|
|
18
|
+
if (current === null || typeof current === 'string' || typeof current === 'boolean')
|
|
19
|
+
return;
|
|
20
|
+
if (typeof current === 'number') {
|
|
21
|
+
if (!Number.isFinite(current))
|
|
22
|
+
fail('JSON_VALUE', 'nonfinite number');
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
if (typeof current !== 'object')
|
|
26
|
+
fail('JSON_VALUE', 'only JSON values are allowed');
|
|
27
|
+
if (active.has(current))
|
|
28
|
+
fail('JSON_VALUE', 'cycle');
|
|
29
|
+
const array = Array.isArray(current);
|
|
30
|
+
if (!array && Object.getPrototypeOf(current) !== Object.prototype)
|
|
31
|
+
fail('JSON_VALUE', 'plain objects required');
|
|
32
|
+
active.add(current);
|
|
33
|
+
const descriptors = Object.getOwnPropertyDescriptors(current);
|
|
34
|
+
for (const key of Reflect.ownKeys(descriptors)) {
|
|
35
|
+
if (array && key === 'length')
|
|
36
|
+
continue;
|
|
37
|
+
if (typeof key !== 'string')
|
|
38
|
+
fail('JSON_VALUE', 'symbols unsupported');
|
|
39
|
+
const descriptor = descriptors[key];
|
|
40
|
+
if (!descriptor.enumerable || !Object.hasOwn(descriptor, 'value')) {
|
|
41
|
+
fail('JSON_VALUE', 'hidden properties and accessors unsupported');
|
|
42
|
+
}
|
|
43
|
+
if (array && !(/^(0|[1-9][0-9]*)$/.test(key) && Number(key) < current.length)) {
|
|
44
|
+
fail('JSON_VALUE', 'extra array property');
|
|
45
|
+
}
|
|
46
|
+
visit(descriptor.value, depth + 1);
|
|
47
|
+
}
|
|
48
|
+
if (array && Object.keys(current).length !== current.length)
|
|
49
|
+
fail('JSON_VALUE', 'sparse array');
|
|
50
|
+
active.delete(current);
|
|
51
|
+
}
|
|
52
|
+
visit(value, 0);
|
|
53
|
+
}
|
|
54
|
+
/** Strict JSON transport only; this is NOT V3 model/asset semantic validation. */
|
|
55
|
+
export function parseV3Json(text) {
|
|
56
|
+
if (typeof text !== 'string')
|
|
57
|
+
fail('JSON_VALUE', 'text required');
|
|
58
|
+
// Cheap UTF-16 length bound avoids allocating an encoded copy of huge requests.
|
|
59
|
+
if (text.length > V3_JSON_MAX_BYTES || v3Utf8ByteLength(text) > V3_JSON_MAX_BYTES) {
|
|
60
|
+
fail('DOCUMENT_LIMIT', 'over 1 MiB');
|
|
61
|
+
}
|
|
62
|
+
let parsed;
|
|
63
|
+
try {
|
|
64
|
+
parsed = JSON.parse(text);
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
fail('JSON_SYNTAX', 'invalid JSON');
|
|
68
|
+
}
|
|
69
|
+
// Syntax is checked above. Scan tokens to reject duplicate decoded keys, including escaped aliases.
|
|
70
|
+
const stack = [];
|
|
71
|
+
for (const token of text.matchAll(/"(?:\\.|[^"\\])*"|[{}\[\],:]|[^\s{}\[\],:"]+/g)) {
|
|
72
|
+
const value = token[0], top = stack.at(-1);
|
|
73
|
+
if (value === '{')
|
|
74
|
+
stack.push({ keys: new Set(), expectingKey: true });
|
|
75
|
+
else if (value === '[')
|
|
76
|
+
stack.push({});
|
|
77
|
+
else if (value === '}' || value === ']')
|
|
78
|
+
stack.pop();
|
|
79
|
+
else if (value === ',' && top?.keys)
|
|
80
|
+
top.expectingKey = true;
|
|
81
|
+
else if (value.startsWith('"') && top?.expectingKey && top.keys) {
|
|
82
|
+
const key = JSON.parse(value);
|
|
83
|
+
if (top.keys.has(key))
|
|
84
|
+
fail('JSON_DUPLICATE_KEY', key);
|
|
85
|
+
top.keys.add(key);
|
|
86
|
+
top.expectingKey = false;
|
|
87
|
+
}
|
|
88
|
+
if (stack.length > V3_JSON_MAX_DEPTH + 1)
|
|
89
|
+
fail('DOCUMENT_LIMIT', 'nesting exceeds 64');
|
|
90
|
+
}
|
|
91
|
+
assertV3Json(parsed);
|
|
92
|
+
return parsed;
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=v3-json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v3-json.js","sourceRoot":"","sources":["../src/v3-json.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { V3Asset, V3Material } from './v3-asset-types.ts';
|
|
2
|
+
export type V3PartEdit = {
|
|
3
|
+
kind: 'set-material';
|
|
4
|
+
target: string;
|
|
5
|
+
material: V3Material;
|
|
6
|
+
} | {
|
|
7
|
+
kind: 'remove-part';
|
|
8
|
+
target: string;
|
|
9
|
+
};
|
|
10
|
+
/** Pure, validated structural edit. References are never silently retargeted or cascaded. */
|
|
11
|
+
export declare function editV3Part(source: V3Asset, edit: V3PartEdit): V3Asset;
|
|
12
|
+
//# sourceMappingURL=v3-part-edit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v3-part-edit.d.ts","sourceRoot":"","sources":["../src/v3-part-edit.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAG9D,MAAM,MAAM,UAAU,GAAG;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,UAAU,CAAA;CAAE,GACnF;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAE3C,6FAA6F;AAC7F,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAsCrE"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { compileV3Asset } from "./v3-asset.js";
|
|
2
|
+
import { V3ContractError } from "./v3-contract.js";
|
|
3
|
+
/** Pure, validated structural edit. References are never silently retargeted or cascaded. */
|
|
4
|
+
export function editV3Part(source, edit) {
|
|
5
|
+
compileV3Asset(source);
|
|
6
|
+
const asset = structuredClone(source), model = asset.document.model;
|
|
7
|
+
const look = asset.appearance.find(a => a.target === edit.target);
|
|
8
|
+
if (!look)
|
|
9
|
+
throw new V3ContractError('TARGET_ABSENT', 'part', edit.target);
|
|
10
|
+
if (edit.kind === 'set-material')
|
|
11
|
+
look.material = structuredClone(edit.material);
|
|
12
|
+
else if (edit.kind === 'remove-part') {
|
|
13
|
+
const part = model.nodes.find(n => n.id === edit.target);
|
|
14
|
+
if (!part || part.op !== 'place@1')
|
|
15
|
+
throw new V3ContractError('EDIT_TARGET', edit.target, 'remove an explicit placement, not a repeated template');
|
|
16
|
+
const outputs = new Set(Object.values(part.outputs));
|
|
17
|
+
// Other graph nodes and capability declarations are roots. Deletion must not invalidate them.
|
|
18
|
+
const references = (value) => typeof value === 'string' ? [value] :
|
|
19
|
+
Array.isArray(value) ? value.flatMap(references) : value && typeof value === 'object' ? Object.values(value).flatMap(references) : [];
|
|
20
|
+
const bound = new Set(references(asset.document.capabilities));
|
|
21
|
+
if (model.nodes.some(n => n.id !== part.id && n.args.some(ref => outputs.has(ref))) || [...outputs].some(ref => bound.has(ref))) {
|
|
22
|
+
throw new V3ContractError('PART_REFERENCED', part.id, 'another graph node or capability references this placement');
|
|
23
|
+
}
|
|
24
|
+
model.nodes = model.nodes.filter(n => n.id !== part.id);
|
|
25
|
+
asset.appearance = asset.appearance.filter(a => a.target !== part.id);
|
|
26
|
+
// Prune only upstream values belonging exclusively to the removed placement.
|
|
27
|
+
const pending = [...part.args];
|
|
28
|
+
while (pending.length) {
|
|
29
|
+
const ref = pending.pop();
|
|
30
|
+
if (bound.has(ref) || model.nodes.some(n => n.args.includes(ref) || Object.values(n.params ?? {}).includes(ref)))
|
|
31
|
+
continue;
|
|
32
|
+
const writer = model.nodes.find(n => Object.values(n.outputs).includes(ref));
|
|
33
|
+
if (writer) {
|
|
34
|
+
const refs = Object.values(writer.outputs);
|
|
35
|
+
if (asset.appearance.some(a => a.target === writer.id) || refs.some(r => bound.has(r) || model.nodes.some(n => n.id !== writer.id && (n.args.includes(r) || Object.values(n.params ?? {}).includes(r)))))
|
|
36
|
+
continue;
|
|
37
|
+
model.nodes = model.nodes.filter(n => n.id !== writer.id);
|
|
38
|
+
pending.push(...writer.args);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
model.inputs = model.inputs.filter(i => i.id !== ref);
|
|
42
|
+
model.constants = model.constants.filter(c => c.id !== ref);
|
|
43
|
+
delete asset.designInputs[ref];
|
|
44
|
+
delete asset.stateDefaults[ref];
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
else
|
|
49
|
+
throw new V3ContractError('EDIT_KIND', 'part', 'unsupported operation');
|
|
50
|
+
compileV3Asset(asset);
|
|
51
|
+
return asset;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=v3-part-edit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v3-part-edit.js","sourceRoot":"","sources":["../src/v3-part-edit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAE9C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAKlD,6FAA6F;AAC7F,MAAM,UAAU,UAAU,CAAC,MAAe,EAAE,IAAgB;IAC1D,cAAc,CAAC,MAAM,CAAC,CAAA;IACtB,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAA;IACnE,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,CAAA;IACjE,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,eAAe,CAAC,eAAe,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IAC1E,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc;QAAE,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;SAC3E,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,CAAA;QACxD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,SAAS;YAAE,MAAM,IAAI,eAAe,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,EAAE,uDAAuD,CAAC,CAAA;QAClJ,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;QACpD,8FAA8F;QAC9F,MAAM,UAAU,GAAG,CAAC,KAAc,EAAY,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YACpF,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;QACvI,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAA;QAC9D,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAChI,MAAM,IAAI,eAAe,CAAC,iBAAiB,EAAE,IAAI,CAAC,EAAE,EAAE,4DAA4D,CAAC,CAAA;QACrH,CAAC;QACD,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAA;QACvD,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,EAAE,CAAC,CAAA;QACrE,6EAA6E;QAC7E,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAA;QAC9B,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAG,CAAA;YAC1B,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAAE,SAAQ;YAC1H,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAA;YAC5E,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;gBAC1C,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAAE,SAAQ;gBAClN,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC;gBAAC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;YACzF,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAA;gBACrD,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAA;gBAC3D,OAAO,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;gBAAC,OAAO,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;YACjE,CAAC;QACH,CAAC;IACH,CAAC;;QAAM,MAAM,IAAI,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,uBAAuB,CAAC,CAAA;IAC9E,cAAc,CAAC,KAAK,CAAC,CAAA;IACrB,OAAO,KAAK,CAAA;AACd,CAAC"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
# Figure v3 — 조립 관계와 반응형 제약
|
|
2
|
+
|
|
3
|
+
> 상태: 아래 내용은 **폐기된 초기 초안**이다. 구현 계약으로 사용하지 않는다.
|
|
4
|
+
> [재설계 상세안](v3-design.md)이 이 문서를 대체한다. 특히 병렬 `fit/relative/face` 제약,
|
|
5
|
+
> 관계 없는 초안의 저장 금지, 2배 검사 통과를 안전성으로 간주하는 조건은 철회한다.
|
|
6
|
+
|
|
7
|
+
## 결정 요약
|
|
8
|
+
|
|
9
|
+
Figure v2는 독립 부품의 기하·재질·축별 크기 반응을 잘 표현한다. 그러나 부품들이 **어떤
|
|
10
|
+
조립 의도로 붙어 있는지**는 표현하지 못한다. `anchor`는 항상 기준 상자 면을 기준으로 하고,
|
|
11
|
+
`parent`는 관절 운동 계층일 뿐 크기·배치 종속성이 아니다. 따라서 게이트는 갈라짐을 측정할 수
|
|
12
|
+
있어도 portal·gate·lamp 중 무엇을 어떤 관계로 복구해야 하는지는 알 수 없다.
|
|
13
|
+
|
|
14
|
+
v3는 `anchor`가 기준 상자에만 매달리는 한계를 교정하고, `assemblies`를 정본 계약으로
|
|
15
|
+
도입한다. 조립체는 기준 부품, 멤버, 그리고 검증·수정 가능한 관계 제약을 선언한다. v2의
|
|
16
|
+
독립 부품 해석은 과거 데이터 읽기용 이행 경로일 뿐, 새 모델의 품질 기준은 아니다.
|
|
17
|
+
|
|
18
|
+
## 사용자 약속
|
|
19
|
+
|
|
20
|
+
저작자는 `anchor.max`를 조합해서 장비를 맞추지 않는다. 모델러는 다음처럼 의도를 입력한다.
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
portal-in 에 붙이기
|
|
24
|
+
gate-in-left, gate-in-right: 개구부 좌/우 면에 맞춤
|
|
25
|
+
lamp-in: portal 상단에서 60 mm 위
|
|
26
|
+
readout: portal 전면의 상대 좌표 (0.5, 0.82)
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
그 뒤 기준 부품의 크기·비율·위치가 바뀌면 종속 부품이 함께 계산된다. AI도 같은 제약을
|
|
30
|
+
읽고 후보를 만들며, 발행 게이트는 깨진 제약을 보여 주고 안전한 복합 수정을 초안에 적용한다.
|
|
31
|
+
|
|
32
|
+
## 데이터 계약
|
|
33
|
+
|
|
34
|
+
```ts
|
|
35
|
+
interface FigureAssembly {
|
|
36
|
+
name: string // 저장 식별자, 예: 'portal-in-system'
|
|
37
|
+
root: string // parts[].name — 조립체 기준 부품
|
|
38
|
+
members: string[] // root를 제외한 종속 부품, 중복 금지
|
|
39
|
+
constraints: AssemblyConstraint[]
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
type AssemblyConstraint =
|
|
43
|
+
| { kind: 'face'; subject: string; subjectFace: Face; target: string; targetFace: Face; offset?: number }
|
|
44
|
+
| { kind: 'relative'; subject: string; target: string; position: Partial<Vec3>; size?: Partial<Vec3> }
|
|
45
|
+
| { kind: 'fit'; subject: string; target: string; axes: Axis[]; inset?: Partial<Vec3> }
|
|
46
|
+
| { kind: 'ratio'; subject: string; target: string; axis: Axis; targetAxis: Axis; ratio: number }
|
|
47
|
+
|
|
48
|
+
type Face = 'min-x' | 'max-x' | 'min-y' | 'max-y' | 'min-z' | 'max-z'
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### 의미
|
|
52
|
+
|
|
53
|
+
- `face`: 두 면의 간격을 고정한다. lamp 하단 ↔ portal 상단 `offset: 60`이 이 경우다.
|
|
54
|
+
- `relative`: 기준 부품의 국소 상자 안 상대 위치·크기를 유지한다. HMI와 라벨에 쓴다.
|
|
55
|
+
- `fit`: gate처럼 목표 부품의 개구부/외곽을 여러 축에서 채운다. 절대 `span`의 조립체 버전이다.
|
|
56
|
+
- `ratio`: 한 축이 다른 부품 축의 비율을 따른다. 현재 `aspect-y`가 기준 상자 축만 보던 한계를
|
|
57
|
+
보완한다.
|
|
58
|
+
|
|
59
|
+
제약은 **계산 가능한 기하 계약**이다. 설명 문자열이나 AI의 추론 결과를 저장하지 않는다.
|
|
60
|
+
|
|
61
|
+
## 해석 순서
|
|
62
|
+
|
|
63
|
+
```text
|
|
64
|
+
FigureSource v3
|
|
65
|
+
→ 부품의 기본 transform·sizing 계산
|
|
66
|
+
→ assembly root의 최종 상자 계산
|
|
67
|
+
→ assembly constraint를 위상 순서로 적용
|
|
68
|
+
→ 최종 blueprint / scene transform
|
|
69
|
+
→ 제약 검사 + 1×·2× 크기 반응 검사
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
제약 대상은 같은 조립체 안에서만 참조할 수 있다. 조립체끼리 순환 참조하거나, root가 자기
|
|
73
|
+
후손을 참조하는 것은 검증 오류다. 관절의 `parent` 계층은 운동 변환을 담당하고, 조립 제약은
|
|
74
|
+
rest pose와 인스턴스 크기 반응을 담당한다. 두 역할을 섞지 않는다.
|
|
75
|
+
|
|
76
|
+
## 검증과 자동 수정
|
|
77
|
+
|
|
78
|
+
발행 게이트는 기존의 덩어리 검사에 더해 다음을 낸다.
|
|
79
|
+
|
|
80
|
+
| 코드 | 의미 | 처리 |
|
|
81
|
+
|---|---|---|
|
|
82
|
+
| `assembly-target-missing` | root/member/target 이름이 없음 | 저장 차단 |
|
|
83
|
+
| `assembly-cycle` | 관계 계산 순환 | 저장 차단 |
|
|
84
|
+
| `assembly-constraint-broken` | 기준 크기에서 면·상대치수 불일치 | 발행 차단 |
|
|
85
|
+
| `assembly-scales-apart` | 확대 시 선언한 관계가 깨짐 | 발행 차단 |
|
|
86
|
+
| `assembly-ambiguous` | 이행된 부품이 물리적으로 닿지만 관계가 선언되지 않음 | 전환 검토 |
|
|
87
|
+
|
|
88
|
+
자동 수정은 anchor 후보를 무작위 조합하지 않는다.
|
|
89
|
+
|
|
90
|
+
1. 깨진 제약과 root를 찾는다.
|
|
91
|
+
2. 제약 해석기로 멤버의 transform/반응 규칙을 다시 계산한다.
|
|
92
|
+
3. 1×와 일곱 가지 2× 배율을 모두 재검사한다.
|
|
93
|
+
4. 모든 차단 항목이 사라질 때만 `recommendedRepair`를 만든다.
|
|
94
|
+
5. 모델러의 **권장 수정 적용**은 초안에만 반영한다. 저장·발행은 별도다.
|
|
95
|
+
|
|
96
|
+
## 드라이룸 예시
|
|
97
|
+
|
|
98
|
+
```json
|
|
99
|
+
{
|
|
100
|
+
"name": "portal-in-system",
|
|
101
|
+
"root": "portal-in",
|
|
102
|
+
"members": ["gate-in-left", "gate-in-right", "lamp-in", "lamp-in-glow", "readout"],
|
|
103
|
+
"constraints": [
|
|
104
|
+
{ "kind": "fit", "subject": "gate-in-left", "target": "portal-in", "axes": ["x", "y"], "inset": { "x": 20 } },
|
|
105
|
+
{ "kind": "fit", "subject": "gate-in-right", "target": "portal-in", "axes": ["x", "y"], "inset": { "x": 20 } },
|
|
106
|
+
{ "kind": "face", "subject": "lamp-in", "subjectFace": "min-y", "target": "portal-in", "targetFace": "max-y", "offset": 60 },
|
|
107
|
+
{ "kind": "relative", "subject": "readout", "target": "portal-in", "position": { "x": 0.5, "y": 0.82, "z": 1 } }
|
|
108
|
+
]
|
|
109
|
+
}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
이 계약은 “lamp의 `anchor.y`를 max로 바꿔 본다”가 아니라 “lamp가 portal 상단에서 60mm를
|
|
113
|
+
유지한다”를 보존한다. 따라서 기준 상자의 비율 변화에도 수정을 설명하고 검증할 수 있다.
|
|
114
|
+
|
|
115
|
+
## 이행 원칙
|
|
116
|
+
|
|
117
|
+
1. `version: 3`은 새 저작·AI·발행의 기준 계약이다. 새 모델은 기준 상자 anchor만으로
|
|
118
|
+
조립 의도를 표현하지 않는다.
|
|
119
|
+
2. v2는 읽을 수 있어야 하지만, v2 해석을 영구 표준으로 보존하지 않는다. 전환기는 물리적
|
|
120
|
+
근접·이름·기존 anchor를 근거로 조립 관계 후보를 만들고, 사용자가 의도를 확인한다.
|
|
121
|
+
3. 확인된 v3 전환 결과가 기존 동작보다 조립·확대 품질이 낮으면 전환을 거절한다. “깨지지
|
|
122
|
+
않음”보다 “의도를 더 정확히 보존함”이 기준이다.
|
|
123
|
+
4. 과거에 이미 발행된 판은 당시 원본과 해석기를 함께 보관해 재현성을 유지한다. 이는 v2
|
|
124
|
+
설계를 계속 발전시키겠다는 뜻이 아니라 과거 화면을 거짓으로 바꾸지 않기 위한 기록 보존이다.
|
|
125
|
+
5. 새 Figure와 새 AI 후보는 v3 제약이 없는 상태로 저장되지 않는다. 독립 부품뿐인 단순
|
|
126
|
+
Figure는 빈 조립체 목록을 명시한다.
|
|
127
|
+
|
|
128
|
+
## 완료 기준
|
|
129
|
+
|
|
130
|
+
- 드라이룸의 portal/gate/lamp/readout을 조립체로 선언할 수 있다.
|
|
131
|
+
- portal의 X·Y·Z 및 복합 배율 7종에서 선언한 면·상대치수가 유지된다.
|
|
132
|
+
- 의도적으로 독립인 port/slot은 조립체에 넣지 않아도 거짓 차단되지 않는다.
|
|
133
|
+
- AI가 새 Figure와 편집 후보 모두에서 유효한 assembly 제약을 생성한다.
|
|
134
|
+
- 게이트는 깨진 조립 제약에 대해 검증된 복합 초안 수정안을 제시한다.
|
|
135
|
+
- v2 전환 표본은 새 관계 계약 아래에서 기존보다 낮은 조립·확대 품질을 내지 않는다.
|
|
136
|
+
|
|
137
|
+
## 명시적 비목표
|
|
138
|
+
|
|
139
|
+
- 물리 시뮬레이션·충돌 해석을 Figure 모델에 넣지 않는다.
|
|
140
|
+
- 모든 근접 부품을 자동으로 조립체로 확정하지 않는다. 근접은 증거일 뿐 의도가 아니다.
|
|
141
|
+
- AI가 관계를 추측한 결과를 사용자 확인 없이 정본에 저장하지 않는다.
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# v3 레이아웃 설계 검증 예제
|
|
2
|
+
|
|
3
|
+
`node --test docs/prototypes/v3-typed-repeat.test.mjs`: 단위/좌표계 그래프와 반복 조립체 통합.
|
|
4
|
+
[배치 의도 변경과 검증 한계](../v3-typed-repeat-contracts.md)를 함께 확인한다.
|
|
5
|
+
|
|
6
|
+
`node --test docs/prototypes/v3-typed-plan.test.mjs`: 단위가 있는 scalar 컴파일러.
|
|
7
|
+
[연산·형상 계약과 미지원 범위](../v3-operator-contracts.md)를 참조한다.
|
|
8
|
+
|
|
9
|
+
현재 설계 방향: [r3 핵심 의미론](../v3-core-semantics.md).
|
|
10
|
+
`node --test docs/prototypes/v3-semantics.test.mjs`는 부착식과 반복식을 독립 검사한다.
|
|
11
|
+
기존 커널을 r3에 맞게 구현했다는 의미가 아니다.
|
|
12
|
+
|
|
13
|
+
## 공통 커널 실험
|
|
14
|
+
|
|
15
|
+
`node --test docs/prototypes/v3-kernel.test.mjs`
|
|
16
|
+
|
|
17
|
+
모델별 분기 없는 실행기와 실제 샘플에서 유도한 선언을 분리했다.
|
|
18
|
+
범위·213개 크기/상태 조합·반례·미지원 항목은
|
|
19
|
+
[공통 커널 실험 기록](../v3-common-kernel-experiment.md)을 따른다.
|
|
20
|
+
제품 v3 구현이나 전체 샘플 변환 완료가 아니다.
|
|
21
|
+
|
|
22
|
+
## 외부 연구 구현 probe
|
|
23
|
+
|
|
24
|
+
`shapeassembly-probe.py`는 제품 코드가 아니라 외부 고정 revision의 interpreter 호출기다.
|
|
25
|
+
외부 소스/라이브러리를 이 저장소에 포함하지 않는다. 단독 실행에는 별도의 연구용 checkout과
|
|
26
|
+
가상환경이 필요하다. 입력·출력은 `shapeassembly-probe-results.json`, 해석·라이선스 경계·
|
|
27
|
+
재현 명령은 [실행 기록](../v3-shapeassembly-reproduction.md)을 따른다.
|
|
28
|
+
|
|
29
|
+
아래 내용은 그와 별개인 자체 r1 수치 예제다.
|
|
30
|
+
|
|
31
|
+
이 폴더는 제품 모듈에 포함되지 않는 실행 가능한 설계 예제다.
|
|
32
|
+
package.json, 의존성, 서버, 소비자 runtime을 변경하지 않는다.
|
|
33
|
+
|
|
34
|
+
```sh
|
|
35
|
+
node --test docs/prototypes/v3-layout.test.mjs
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
2026-09-20 실행 결과: 18개 테스트 통과.
|
|
39
|
+
|
|
40
|
+
## 확인한 것
|
|
41
|
+
|
|
42
|
+
- capped grow/shrink의 제한·가중 배분·공간 보존: seed 고정 800개 조합.
|
|
43
|
+
- 100개 문 폭에서 외곽 여백·중앙 간격·완전 개방 시 내측 끝점.
|
|
44
|
+
- 고정 크기, gap 초과, 단일/빈 목록, fr 최소/최대, auto 다중 span.
|
|
45
|
+
- 회전한 정렬 기준점의 일치와 전역 강체 변환에 대한 일관성.
|
|
46
|
+
- min/max 전환의 구간별 동작, 비율 합계와 gap의 overflow.
|
|
47
|
+
- 값 DAG의 순서 불변성, 순환/중복 writer/알 수 없는 참조 거절.
|
|
48
|
+
|
|
49
|
+
초기 문 이동량 W/2는 중앙 gap/2만큼 더 이동하는 오류였다.
|
|
50
|
+
열린 문 안쪽 끝이 정확히 개구부 끝에 놓이는 독립 기대값으로 오류를 검출했고,
|
|
51
|
+
정확한 이동량 (W-gap)/2로 문서와 예제를 함께 수정했다.
|
|
52
|
+
|
|
53
|
+
## 확인하지 않은 것
|
|
54
|
+
|
|
55
|
+
- production schema/compiler 또는 실제 3D 엔진의 실행.
|
|
56
|
+
- 모든 축·모든 shape·중첩 컨테이너 전체 조합의 올바름.
|
|
57
|
+
- 실제 드라이룸/롤 프레스 자산의 수정 결과.
|
|
58
|
+
- 전체 지원 치수 범위의 형식 증명, float 오차의 보수적 인증.
|
|
59
|
+
- 모든 회전의 geometry 포함, 면 접촉, 관절 충돌, 미적 품질.
|
|
60
|
+
- 실제 CPU/GPU/메모리 성능이나 사용자 작업 시간 개선.
|
|
61
|
+
|
|
62
|
+
autoTracks는 intrinsic 기여 단계만, gridFr는 fr 배분 단계만 검증한다.
|
|
63
|
+
완전한 Grid evaluator나 validator로 재사용해서는 안 된다.
|
|
64
|
+
evaluateValues도 최소 DAG 예제이며 제품 수준 schema·오류 보고·깊이 제한을 갖추지 않았다.
|
|
65
|
+
wall-clock test 실행 시간은 제품 레이아웃 성능으로 보고하지 않는다.
|
|
66
|
+
|
|
67
|
+
## 다음 검증 순서
|
|
68
|
+
|
|
69
|
+
1. 정본 schema와 실제 geometry provider의 intrinsic/feature 계약 고정.
|
|
70
|
+
2. 중첩 Measure/Allocate/Arrange 통합 evaluator 및 독립 기준 결과 비교.
|
|
71
|
+
3. v2 자산의 고정 revision fixture를 확보해 외형·관절·발행 계약 비교.
|
|
72
|
+
4. renderer에서 중복 scale/shear/장면 잔류 없이 전체 layout 원자 교체 검증.
|
|
73
|
+
5. UI/AI 동일 transaction의 preview·apply·undo·저장 E2E와 비용 실측.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"""Software orthographic rendering of the actual generated triangle meshes.
|
|
2
|
+
Input: JSON from v3-dryroom-mesh.mjs on stdin. Requires Pillow, no product changes.
|
|
3
|
+
Output path must be explicitly supplied. Not a screenshot of the product renderer.
|
|
4
|
+
"""
|
|
5
|
+
import json,sys,math
|
|
6
|
+
import numpy as np
|
|
7
|
+
from PIL import Image,ImageDraw,ImageFont
|
|
8
|
+
data=json.load(sys.stdin)
|
|
9
|
+
im=Image.new('RGB',(1440,1000),'#101923');draw=ImageDraw.Draw(im)
|
|
10
|
+
font=ImageFont.truetype('/System/Library/Fonts/Helvetica.ttc',22)
|
|
11
|
+
small=ImageFont.truetype('/System/Library/Fonts/Helvetica.ttc',17)
|
|
12
|
+
title=ImageFont.truetype('/System/Library/Fonts/Helvetica.ttc',29)
|
|
13
|
+
draw.text((30,20),'DRY ROOM / actual seed portal mesh',font=title,fill='white')
|
|
14
|
+
draw.text((30,62),'Orthographic mesh render, not the application viewport. Original asset unchanged.',font=small,fill='#a9bdcc')
|
|
15
|
+
for col,panel in enumerate(data['panels']):
|
|
16
|
+
x0=25+col*720
|
|
17
|
+
draw.text((x0,108),'BEFORE | bottom -60 mm' if col==0 else 'AFTER | bottom 0 mm',font=font,fill='#ffd189' if col==0 else '#85dfc7')
|
|
18
|
+
for zoom in [False,True]:
|
|
19
|
+
y0=155 if not zoom else 715
|
|
20
|
+
w,h=675,520 if not zoom else 215
|
|
21
|
+
canvas=Image.new('RGB',(w,h),'#192733');d=ImageDraw.Draw(canvas)
|
|
22
|
+
scale=.151 if not zoom else .235
|
|
23
|
+
def project(v):
|
|
24
|
+
x,y,z=v;z-=3050
|
|
25
|
+
return (w/2+(x+.40*z)*scale, (h-50 if not zoom else h-70)-y*scale+.16*z*scale)
|
|
26
|
+
pixels=np.full((h,w,3),(25,39,51),dtype=np.uint8)
|
|
27
|
+
zbuffer=np.full((h,w),-np.inf)
|
|
28
|
+
for part in panel['parts']:
|
|
29
|
+
for tri in part['triangles']:
|
|
30
|
+
a,b,c=tri
|
|
31
|
+
u=[b[i]-a[i] for i in range(3)];v=[c[i]-a[i] for i in range(3)]
|
|
32
|
+
normal=[u[1]*v[2]-u[2]*v[1],u[2]*v[0]-u[0]*v[2],u[0]*v[1]-u[1]*v[0]]
|
|
33
|
+
norm=math.sqrt(sum(x*x for x in normal))
|
|
34
|
+
illumination=.58+.42*abs(sum(x*y for x,y in zip(normal,[.3,.4,.866]))/norm)
|
|
35
|
+
base=(51,184,176) if part['id']=='placedPortal' else (245,185,60)
|
|
36
|
+
color=tuple(int(x*illumination) for x in base)
|
|
37
|
+
poly=[project(v) for v in tri]
|
|
38
|
+
(ax,ay),(bx,by),(cx,cy)=poly
|
|
39
|
+
den=(by-cy)*(ax-cx)+(cx-bx)*(ay-cy)
|
|
40
|
+
if abs(den)<1e-9:continue
|
|
41
|
+
loX=max(0,math.floor(min(v[0] for v in poly)));hiX=min(w-1,math.ceil(max(v[0] for v in poly)))
|
|
42
|
+
loY=max(0,math.floor(min(v[1] for v in poly)));hiY=min(h-1,math.ceil(max(v[1] for v in poly)))
|
|
43
|
+
if loX>hiX or loY>hiY:continue
|
|
44
|
+
yy,xx=np.mgrid[loY:hiY+1,loX:hiX+1];xx=xx+.5;yy=yy+.5
|
|
45
|
+
wa=((by-cy)*(xx-cx)+(cx-bx)*(yy-cy))/den
|
|
46
|
+
wb=((cy-ay)*(xx-cx)+(ax-cx)*(yy-cy))/den;wc=1-wa-wb
|
|
47
|
+
depths=[v[2]-.40*v[0]+.16*v[1] for v in tri]
|
|
48
|
+
zz=wa*depths[0]+wb*depths[1]+wc*depths[2]
|
|
49
|
+
region=zbuffer[loY:hiY+1,loX:hiX+1]
|
|
50
|
+
mask=(wa>=-1e-8)&(wb>=-1e-8)&(wc>=-1e-8)&(zz>region)
|
|
51
|
+
region[mask]=zz[mask];pixels[loY:hiY+1,loX:hiX+1][mask]=color
|
|
52
|
+
canvas=Image.fromarray(pixels);d=ImageDraw.Draw(canvas)
|
|
53
|
+
# Reference line on front face plane; no opaque floor hiding the original protrusion.
|
|
54
|
+
a=project([-2000,0,3200]);b=project([2000,0,3200]);d.line([a,b],fill='#ff6b73',width=3)
|
|
55
|
+
d.text((12,h-28),'Y = 0 / floor reference',font=small,fill='#ff9ba1')
|
|
56
|
+
if zoom:d.text((12,10),'BOTTOM DETAIL',font=small,fill='white')
|
|
57
|
+
im.paste(canvas,(x0,y0))
|
|
58
|
+
draw.text((x0,682),'Top 2900 mm / opening top 2200 mm / lamp unchanged',font=small,fill='#a9bdcc')
|
|
59
|
+
draw.text((30,954),'Mesh checks: closed, oriented edges; 28 triangles per portal. Both inlet and outlet tested.',font=small,fill='#a9bdcc')
|
|
60
|
+
im.save(sys.argv[1])
|