Files
editor/packages/mcp/examples/coordinate-conventions-demo.json
T
c986ced14d docs(mcp): document plan↔world coordinate convention (#356)
Adds a Coordinate conventions section to packages/mcp/README.md and a 71-node MCP demo scene that exercises every claim it makes. Closes #337.

Covers: right-handed scene with X/Z ground plane and Y up; metres for lengths and radians for rotations as Euler [x, y, z]; the [x, z] → (x, y, z) plan-to-world mapping with no sign flip in the stored contract; level/building-local framing (world only under identity transform); rotation-not-reflection caveat for the 2-D plan panel and the iso-default top-down azimuth offset; a worked 30° rotated slab example; and the wall-local-metres trap for door/window/place_item coordinates.

Companion: examples/coordinate-conventions-demo.{json,md} with a reference compass at the origin and Demos A/B/C/D illustrating axis-aligned baseline, the rotated example, and the page-intent vs world-result L pair.

Co-authored-by: Marcel Gruber <marcel@grubertech.com>
2026-06-03 13:41:52 -04:00

2124 lines
39 KiB
JSON

{
"nodes": {
"slab_demo_a": {
"id": "slab_demo_a",
"name": "DEMO A -- 6x4 m axis-aligned (baseline)",
"type": "slab",
"holes": [],
"object": "node",
"polygon": [
[
18,
0
],
[
24,
0
],
[
24,
4
],
[
18,
4
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo",
"elevation": 0.01,
"holeMetadata": [],
"autoFromWalls": false
},
"slab_demo_b": {
"id": "slab_demo_b",
"name": "DEMO B -- 6x4 m rotated 30 deg from +X (verbatim)",
"type": "slab",
"holes": [],
"object": "node",
"polygon": [
[
18,
10
],
[
23.195999999999998,
13
],
[
21.196,
16.464
],
[
16,
13.464
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo",
"elevation": 0.01,
"holeMetadata": [],
"autoFromWalls": false
},
"slab_origin": {
"id": "slab_origin",
"name": "Origin",
"type": "slab",
"holes": [],
"object": "node",
"polygon": [
[
-0.3,
-0.3
],
[
0.3,
-0.3
],
[
0.3,
0.3
],
[
-0.3,
0.3
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo",
"elevation": 0.01,
"holeMetadata": [],
"autoFromWalls": false
},
"site_conv_demo": {
"id": "site_conv_demo",
"name": "Coords conv demo site",
"type": "site",
"object": "node",
"polygon": {
"type": "polygon",
"points": [
[
-6,
-12
],
[
44,
-12
],
[
44,
40
],
[
-6,
40
]
]
},
"visible": true,
"children": [
"building_conv_demo"
],
"metadata": {},
"parentId": null
},
"level_conv_demo": {
"id": "level_conv_demo",
"name": "Coords conv demo ground level",
"type": "level",
"level": 0,
"object": "node",
"visible": true,
"children": [
"slab_axis_x_bar",
"slab_axis_x_tip",
"slab_axis_z_bar",
"slab_axis_z_tip",
"slab_axis_neg_x",
"slab_axis_neg_z",
"slab_origin",
"zone_lbl_compass_a",
"zone_lbl_compass_b",
"zone_lbl_axis_x",
"zone_lbl_axis_z",
"zone_lbl_axis_neg_x",
"zone_lbl_axis_neg_z",
"zone_lbl_origin",
"zone_lbl_caveat_1",
"zone_lbl_caveat_2",
"zone_lbl_caveat_3",
"zone_lbl_caveat_4",
"slab_demo_a",
"zone_lbl_a_title",
"zone_lbl_a_long",
"zone_lbl_a_short",
"zone_lbl_a_origin",
"zone_lbl_a_baseline",
"slab_demo_b",
"zone_lbl_b_title_1",
"zone_lbl_b_title_2",
"zone_lbl_b_verified_1",
"zone_lbl_b_verified_2",
"zone_lbl_b_verified_3",
"zone_lbl_b_origin",
"slab_demo_c_page",
"slab_demo_c_page_ax_x",
"slab_demo_c_page_ax_y",
"zone_lbl_c_p_title",
"zone_lbl_c_p_axx",
"zone_lbl_c_p_axy",
"zone_lbl_c_p_stem",
"zone_lbl_c_p_foot",
"zone_lbl_c_arrow",
"slab_demo_c_world",
"zone_lbl_c_w_title",
"zone_lbl_c_w_stem",
"zone_lbl_c_w_foot",
"zone_lbl_c_w_screen_1",
"zone_lbl_c_w_screen_2",
"slab_demo_d_page",
"slab_demo_d_page_ax_x",
"slab_demo_d_page_ax_y",
"zone_lbl_d_p_title_1",
"zone_lbl_d_p_title_2",
"zone_lbl_d_p_axx",
"zone_lbl_d_p_axy",
"zone_lbl_d_p_hope",
"zone_lbl_d_arrow",
"slab_demo_d_world",
"zone_lbl_d_w_title",
"zone_lbl_d_w_note_1",
"zone_lbl_d_w_note_2",
"zone_lbl_d_w_note_3",
"zone_lbl_d_w_note_4",
"zone_lbl_d_w_note_5",
"zone_takeaway_band",
"zone_lbl_take_1",
"zone_lbl_take_2",
"zone_lbl_take_3",
"zone_lbl_take_4",
"zone_lbl_take_5"
],
"metadata": {
"label": "Coords conv demo"
},
"parentId": "building_conv_demo"
},
"slab_axis_neg_x": {
"id": "slab_axis_neg_x",
"name": "-X stub",
"type": "slab",
"holes": [],
"object": "node",
"polygon": [
[
-2.5,
-0.06
],
[
0,
-0.06
],
[
0,
0.06
],
[
-2.5,
0.06
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo",
"elevation": 0.01,
"holeMetadata": [],
"autoFromWalls": false
},
"slab_axis_neg_z": {
"id": "slab_axis_neg_z",
"name": "-Z stub",
"type": "slab",
"holes": [],
"object": "node",
"polygon": [
[
-0.06,
-2.5
],
[
0.06,
-2.5
],
[
0.06,
0
],
[
-0.06,
0
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo",
"elevation": 0.01,
"holeMetadata": [],
"autoFromWalls": false
},
"slab_axis_x_bar": {
"id": "slab_axis_x_bar",
"name": "+X axis bar",
"type": "slab",
"holes": [],
"object": "node",
"polygon": [
[
0,
-0.06
],
[
12,
-0.06
],
[
12,
0.06
],
[
0,
0.06
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo",
"elevation": 0.01,
"holeMetadata": [],
"autoFromWalls": false
},
"slab_axis_x_tip": {
"id": "slab_axis_x_tip",
"name": "+X tip",
"type": "slab",
"holes": [],
"object": "node",
"polygon": [
[
12,
-0.4
],
[
12.9,
0
],
[
12,
0.4
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo",
"elevation": 0.01,
"holeMetadata": [],
"autoFromWalls": false
},
"slab_axis_z_bar": {
"id": "slab_axis_z_bar",
"name": "+Z axis bar",
"type": "slab",
"holes": [],
"object": "node",
"polygon": [
[
-0.06,
0
],
[
0.06,
0
],
[
0.06,
12
],
[
-0.06,
12
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo",
"elevation": 0.01,
"holeMetadata": [],
"autoFromWalls": false
},
"slab_axis_z_tip": {
"id": "slab_axis_z_tip",
"name": "+Z tip",
"type": "slab",
"holes": [],
"object": "node",
"polygon": [
[
-0.4,
12
],
[
0.4,
12
],
[
0,
12.9
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo",
"elevation": 0.01,
"holeMetadata": [],
"autoFromWalls": false
},
"zone_lbl_a_long": {
"id": "zone_lbl_a_long",
"name": "Long edge: 6 m along world +X",
"type": "zone",
"color": "#f0f0f0",
"object": "node",
"polygon": [
[
20.7,
1.3
],
[
21.3,
1.3
],
[
21.3,
1.9000000000000001
],
[
20.7,
1.9000000000000001
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"zone_lbl_axis_x": {
"id": "zone_lbl_axis_x",
"name": "+X axis = plan first component (12 m long)",
"type": "zone",
"color": "#f0f0f0",
"object": "node",
"polygon": [
[
13.299999999999999,
-1.3
],
[
13.9,
-1.3
],
[
13.9,
-0.7
],
[
13.299999999999999,
-0.7
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"zone_lbl_axis_z": {
"id": "zone_lbl_axis_z",
"name": "+Z axis = plan second component (12 m long)",
"type": "zone",
"color": "#f0f0f0",
"object": "node",
"polygon": [
[
-1.3,
13.299999999999999
],
[
-0.7,
13.299999999999999
],
[
-0.7,
13.9
],
[
-1.3,
13.9
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"zone_lbl_origin": {
"id": "zone_lbl_origin",
"name": "Origin (0, 0) -- all demo coords are world space, metres",
"type": "zone",
"color": "#f0f0f0",
"object": "node",
"polygon": [
[
1.2,
1.2
],
[
1.8,
1.2
],
[
1.8,
1.8
],
[
1.2,
1.8
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"zone_lbl_take_1": {
"id": "zone_lbl_take_1",
"name": "TAKEAWAY (1/5): [x,z] -> world (x, 0, z) exactly, no sign flip",
"type": "zone",
"color": "#f0f0f0",
"object": "node",
"polygon": [
[
2.7,
32.7
],
[
3.3,
32.7
],
[
3.3,
33.3
],
[
2.7,
33.3
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"zone_lbl_take_2": {
"id": "zone_lbl_take_2",
"name": "(2/5): Demo B verified: 6x4 m, 30 deg, AB perp AD",
"type": "zone",
"color": "#f0f0f0",
"object": "node",
"polygon": [
[
2.7,
33.5
],
[
3.3,
33.5
],
[
3.3,
34.099999999999994
],
[
2.7,
34.099999999999994
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"zone_lbl_take_3": {
"id": "zone_lbl_take_3",
"name": "(3/5): On-screen orientation is viewport-dependent",
"type": "zone",
"color": "#f0f0f0",
"object": "node",
"polygon": [
[
2.7,
34.300000000000004
],
[
3.3,
34.300000000000004
],
[
3.3,
34.9
],
[
2.7,
34.9
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"zone_lbl_take_4": {
"id": "zone_lbl_take_4",
"name": "(4/5): 2D plan rotates +90 deg; 3D top-down ~45 deg offset",
"type": "zone",
"color": "#f0f0f0",
"object": "node",
"polygon": [
[
2.7,
35.1
],
[
3.3,
35.1
],
[
3.3,
35.699999999999996
],
[
2.7,
35.699999999999996
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"zone_lbl_take_5": {
"id": "zone_lbl_take_5",
"name": "(5/5): Verify with a scaled guide image at known anchors",
"type": "zone",
"color": "#f0f0f0",
"object": "node",
"polygon": [
[
21.7,
32.7
],
[
22.3,
32.7
],
[
22.3,
33.3
],
[
21.7,
33.3
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"slab_demo_c_page": {
"id": "slab_demo_c_page",
"name": "DEMO C -- PAGE INTENT (1/2 scale)",
"type": "slab",
"holes": [],
"object": "node",
"polygon": [
[
0,
22
],
[
2,
22
],
[
2,
22.5
],
[
0.5,
22.5
],
[
0.5,
24.5
],
[
0,
24.5
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo",
"elevation": 0.01,
"holeMetadata": [],
"autoFromWalls": false
},
"slab_demo_d_page": {
"id": "slab_demo_d_page",
"name": "DEMO D -- PAGE INTENT (z reflected, 1/2 scale)",
"type": "slab",
"holes": [],
"object": "node",
"polygon": [
[
22,
24.5
],
[
24,
24.5
],
[
24,
24
],
[
22.5,
24
],
[
22.5,
22
],
[
22,
22
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo",
"elevation": 0.01,
"holeMetadata": [],
"autoFromWalls": false
},
"zone_lbl_a_short": {
"id": "zone_lbl_a_short",
"name": "Short edge: 4 m along world +Z",
"type": "zone",
"color": "#f0f0f0",
"object": "node",
"polygon": [
[
24.5,
1.7
],
[
25.1,
1.7
],
[
25.1,
2.3
],
[
24.5,
2.3
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"zone_lbl_a_title": {
"id": "zone_lbl_a_title",
"name": "DEMO A -- axis-aligned 6x4 m rectangle",
"type": "zone",
"color": "#f0f0f0",
"object": "node",
"polygon": [
[
20.7,
-1.3
],
[
21.3,
-1.3
],
[
21.3,
-0.7
],
[
20.7,
-0.7
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"zone_lbl_c_arrow": {
"id": "zone_lbl_c_arrow",
"name": "pasted [x,z] UNCORRECTED -->",
"type": "zone",
"color": "#ffe9c2",
"object": "node",
"polygon": [
[
6.2,
24.2
],
[
6.8,
24.2
],
[
6.8,
24.8
],
[
6.2,
24.8
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"zone_lbl_c_p_axx": {
"id": "zone_lbl_c_p_axx",
"name": "page +x = author's 'east'",
"type": "zone",
"color": "#f0f0f0",
"object": "node",
"polygon": [
[
2.1,
21.5
],
[
2.6999999999999997,
21.5
],
[
2.6999999999999997,
22.1
],
[
2.1,
22.1
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"zone_lbl_c_p_axy": {
"id": "zone_lbl_c_p_axy",
"name": "page +y = author's 'north'",
"type": "zone",
"color": "#f0f0f0",
"object": "node",
"polygon": [
[
-0.7,
24.099999999999998
],
[
-0.10000000000000003,
24.099999999999998
],
[
-0.10000000000000003,
24.7
],
[
-0.7,
24.7
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"zone_lbl_d_arrow": {
"id": "zone_lbl_d_arrow",
"name": "pasted as [x,z] -->",
"type": "zone",
"color": "#ffe9c2",
"object": "node",
"polygon": [
[
28.2,
24.2
],
[
28.8,
24.2
],
[
28.8,
24.8
],
[
28.2,
24.8
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"zone_lbl_d_p_axx": {
"id": "zone_lbl_d_p_axx",
"name": "page +x",
"type": "zone",
"color": "#f0f0f0",
"object": "node",
"polygon": [
[
24.099999999999998,
21.5
],
[
24.7,
21.5
],
[
24.7,
22.1
],
[
24.099999999999998,
22.1
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"zone_lbl_d_p_axy": {
"id": "zone_lbl_d_p_axy",
"name": "page +y",
"type": "zone",
"color": "#f0f0f0",
"object": "node",
"polygon": [
[
21.3,
24.099999999999998
],
[
21.900000000000002,
24.099999999999998
],
[
21.900000000000002,
24.7
],
[
21.3,
24.7
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"slab_demo_c_world": {
"id": "slab_demo_c_world",
"name": "DEMO C -- WORLD RESULT (uncorrected)",
"type": "slab",
"holes": [],
"object": "node",
"polygon": [
[
10,
22
],
[
14,
22
],
[
14,
23
],
[
11,
23
],
[
11,
27
],
[
10,
27
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo",
"elevation": 0.01,
"holeMetadata": [],
"autoFromWalls": false
},
"slab_demo_d_world": {
"id": "slab_demo_d_world",
"name": "DEMO D -- WORLD RESULT (mirror image of Demo C)",
"type": "slab",
"holes": [],
"object": "node",
"polygon": [
[
32,
27
],
[
36,
27
],
[
36,
26
],
[
33,
26
],
[
33,
22
],
[
32,
22
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo",
"elevation": 0.01,
"holeMetadata": [],
"autoFromWalls": false
},
"zone_lbl_a_origin": {
"id": "zone_lbl_a_origin",
"name": "First corner at world (18, 0)",
"type": "zone",
"color": "#f0f0f0",
"object": "node",
"polygon": [
[
18.2,
0.2
],
[
18.8,
0.2
],
[
18.8,
0.8
],
[
18.2,
0.8
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"zone_lbl_b_origin": {
"id": "zone_lbl_b_origin",
"name": "First vertex (18, 10) -- canonical [[0,0],[5.196,3],...] + offset",
"type": "zone",
"color": "#f0f0f0",
"object": "node",
"polygon": [
[
18.2,
10.2
],
[
18.8,
10.2
],
[
18.8,
10.8
],
[
18.2,
10.8
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"zone_lbl_c_p_foot": {
"id": "zone_lbl_c_p_foot",
"name": "foot: 4 m along page +x",
"type": "zone",
"color": "#f0f0f0",
"object": "node",
"polygon": [
[
1.2,
21.2
],
[
1.8,
21.2
],
[
1.8,
21.8
],
[
1.2,
21.8
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"zone_lbl_c_p_stem": {
"id": "zone_lbl_c_p_stem",
"name": "stem: 5 m along page +y",
"type": "zone",
"color": "#f0f0f0",
"object": "node",
"polygon": [
[
-1.1,
23.099999999999998
],
[
-0.5,
23.099999999999998
],
[
-0.5,
23.7
],
[
-1.1,
23.7
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"zone_lbl_c_w_foot": {
"id": "zone_lbl_c_w_foot",
"name": "foot along world +X (was author's east)",
"type": "zone",
"color": "#f0f0f0",
"object": "node",
"polygon": [
[
12.2,
22.2
],
[
12.8,
22.2
],
[
12.8,
22.8
],
[
12.2,
22.8
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"zone_lbl_c_w_stem": {
"id": "zone_lbl_c_w_stem",
"name": "stem along world +Z (was author's north)",
"type": "zone",
"color": "#f0f0f0",
"object": "node",
"polygon": [
[
10.2,
24.2
],
[
10.8,
24.2
],
[
10.8,
24.8
],
[
10.2,
24.8
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"zone_lbl_caveat_1": {
"id": "zone_lbl_caveat_1",
"name": "Viewports may rotate world axes on screen",
"type": "zone",
"color": "#f0f0f0",
"object": "node",
"polygon": [
[
4.7,
-6.3
],
[
5.3,
-6.3
],
[
5.3,
-5.7
],
[
4.7,
-5.7
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"zone_lbl_caveat_2": {
"id": "zone_lbl_caveat_2",
"name": "2D plan panel applies +90 deg rotation",
"type": "zone",
"color": "#f0f0f0",
"object": "node",
"polygon": [
[
4.7,
-7.3
],
[
5.3,
-7.3
],
[
5.3,
-6.7
],
[
4.7,
-6.7
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"zone_lbl_caveat_3": {
"id": "zone_lbl_caveat_3",
"name": "3D 'top-down' camera defaults to ~45 deg offset",
"type": "zone",
"color": "#f0f0f0",
"object": "node",
"polygon": [
[
4.7,
-8.3
],
[
5.3,
-8.3
],
[
5.3,
-7.7
],
[
4.7,
-7.7
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"zone_lbl_caveat_4": {
"id": "zone_lbl_caveat_4",
"name": "World axes themselves are stable; only display rotates",
"type": "zone",
"color": "#f0f0f0",
"object": "node",
"polygon": [
[
4.7,
-9.3
],
[
5.3,
-9.3
],
[
5.3,
-8.7
],
[
4.7,
-8.7
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"zone_lbl_d_p_hope": {
"id": "zone_lbl_d_p_hope",
"name": "Hope: 'reflecting z will un-mirror the result'",
"type": "zone",
"color": "#f0f0f0",
"object": "node",
"polygon": [
[
22.7,
25.2
],
[
23.3,
25.2
],
[
23.3,
25.8
],
[
22.7,
25.8
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"building_conv_demo": {
"id": "building_conv_demo",
"name": "Demo bld",
"type": "building",
"object": "node",
"visible": true,
"children": [
"level_conv_demo"
],
"metadata": {},
"parentId": "site_conv_demo",
"position": [
0,
0,
0
],
"rotation": [
0,
0,
0
]
},
"zone_lbl_b_title_1": {
"id": "zone_lbl_b_title_1",
"name": "DEMO B -- 6x4 m rectangle",
"type": "zone",
"color": "#f0f0f0",
"object": "node",
"polygon": [
[
21.7,
8.2
],
[
22.3,
8.2
],
[
22.3,
8.8
],
[
21.7,
8.8
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"zone_lbl_b_title_2": {
"id": "zone_lbl_b_title_2",
"name": "Rotated 30 deg CCW from world +X",
"type": "zone",
"color": "#f0f0f0",
"object": "node",
"polygon": [
[
21.7,
9
],
[
22.3,
9
],
[
22.3,
9.600000000000001
],
[
21.7,
9.600000000000001
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"zone_lbl_c_p_title": {
"id": "zone_lbl_c_p_title",
"name": "DEMO C -- PAGE INTENT (north-up, 1/2 scale)",
"type": "zone",
"color": "#f0f0f0",
"object": "node",
"polygon": [
[
0.7,
20.7
],
[
1.3,
20.7
],
[
1.3,
21.3
],
[
0.7,
21.3
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"zone_lbl_c_w_title": {
"id": "zone_lbl_c_w_title",
"name": "DEMO C -- WORLD RESULT (full scale)",
"type": "zone",
"color": "#f0f0f0",
"object": "node",
"polygon": [
[
11.7,
20.7
],
[
12.3,
20.7
],
[
12.3,
21.3
],
[
11.7,
21.3
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"zone_lbl_compass_a": {
"id": "zone_lbl_compass_a",
"name": "WORLD AXES (authoritative)",
"type": "zone",
"color": "#f0f0f0",
"object": "node",
"polygon": [
[
4.7,
-3.8
],
[
5.3,
-3.8
],
[
5.3,
-3.2
],
[
4.7,
-3.2
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"zone_lbl_compass_b": {
"id": "zone_lbl_compass_b",
"name": "Plan [x,z] maps to world (x, 0, z) -- no sign flip",
"type": "zone",
"color": "#f0f0f0",
"object": "node",
"polygon": [
[
4.7,
-4.8
],
[
5.3,
-4.8
],
[
5.3,
-4.2
],
[
4.7,
-4.2
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"zone_lbl_d_w_title": {
"id": "zone_lbl_d_w_title",
"name": "DEMO D -- WORLD RESULT (full scale)",
"type": "zone",
"color": "#f0f0f0",
"object": "node",
"polygon": [
[
33.7,
20.7
],
[
34.3,
20.7
],
[
34.3,
21.3
],
[
33.7,
21.3
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"zone_takeaway_band": {
"id": "zone_takeaway_band",
"name": "TAKEAWAY band",
"type": "zone",
"color": "#fff5d6",
"object": "node",
"polygon": [
[
0,
32
],
[
40,
32
],
[
40,
36
],
[
0,
36
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"zone_lbl_a_baseline": {
"id": "zone_lbl_a_baseline",
"name": "Baseline -- matches generate-apartment.md style",
"type": "zone",
"color": "#f0f0f0",
"object": "node",
"polygon": [
[
20.7,
5.2
],
[
21.3,
5.2
],
[
21.3,
5.8
],
[
20.7,
5.8
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"zone_lbl_axis_neg_x": {
"id": "zone_lbl_axis_neg_x",
"name": "-X (negative first component)",
"type": "zone",
"color": "#f0f0f0",
"object": "node",
"polygon": [
[
-2.3,
0.7
],
[
-1.7,
0.7
],
[
-1.7,
1.3
],
[
-2.3,
1.3
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"zone_lbl_axis_neg_z": {
"id": "zone_lbl_axis_neg_z",
"name": "-Z (negative second component)",
"type": "zone",
"color": "#f0f0f0",
"object": "node",
"polygon": [
[
0.7,
-2.3
],
[
1.3,
-2.3
],
[
1.3,
-1.7
],
[
0.7,
-1.7
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"zone_lbl_d_w_note_1": {
"id": "zone_lbl_d_w_note_1",
"name": "Note: z-reflection only helps against a true MIRROR",
"type": "zone",
"color": "#f0f0f0",
"object": "node",
"polygon": [
[
33.7,
27.3
],
[
34.3,
27.3
],
[
34.3,
27.900000000000002
],
[
33.7,
27.900000000000002
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"zone_lbl_d_w_note_2": {
"id": "zone_lbl_d_w_note_2",
"name": "Pascal's view rotates, not mirrors",
"type": "zone",
"color": "#f0f0f0",
"object": "node",
"polygon": [
[
33.7,
28.099999999999998
],
[
34.3,
28.099999999999998
],
[
34.3,
28.7
],
[
33.7,
28.7
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"zone_lbl_d_w_note_3": {
"id": "zone_lbl_d_w_note_3",
"name": "So this 'fix' doesn't correct on-screen orientation",
"type": "zone",
"color": "#f0f0f0",
"object": "node",
"polygon": [
[
33.7,
28.9
],
[
34.3,
28.9
],
[
34.3,
29.5
],
[
33.7,
29.5
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"zone_lbl_d_w_note_4": {
"id": "zone_lbl_d_w_note_4",
"name": "Real fix: apply whatever rotation matches your viewport",
"type": "zone",
"color": "#f0f0f0",
"object": "node",
"polygon": [
[
33.7,
29.7
],
[
34.3,
29.7
],
[
34.3,
30.3
],
[
33.7,
30.3
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"zone_lbl_d_w_note_5": {
"id": "zone_lbl_d_w_note_5",
"name": "Or verify against a scaled guide image",
"type": "zone",
"color": "#f0f0f0",
"object": "node",
"polygon": [
[
33.7,
30.5
],
[
34.3,
30.5
],
[
34.3,
31.1
],
[
33.7,
31.1
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"zone_lbl_d_p_title_1": {
"id": "zone_lbl_d_p_title_1",
"name": "DEMO D -- PAGE INTENT (1/2 scale)",
"type": "zone",
"color": "#f0f0f0",
"object": "node",
"polygon": [
[
22.7,
20.7
],
[
23.3,
20.7
],
[
23.3,
21.3
],
[
22.7,
21.3
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"zone_lbl_d_p_title_2": {
"id": "zone_lbl_d_p_title_2",
"name": "Author applied z -> 5-z before paste",
"type": "zone",
"color": "#f0f0f0",
"object": "node",
"polygon": [
[
22.7,
19.9
],
[
23.3,
19.9
],
[
23.3,
20.5
],
[
22.7,
20.5
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"slab_demo_c_page_ax_x": {
"id": "slab_demo_c_page_ax_x",
"name": "C page +x stub",
"type": "slab",
"holes": [],
"object": "node",
"polygon": [
[
0.1,
21.95
],
[
1.9,
21.95
],
[
1.9,
22.05
],
[
0.1,
22.05
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo",
"elevation": 0.01,
"holeMetadata": [],
"autoFromWalls": false
},
"slab_demo_c_page_ax_y": {
"id": "slab_demo_c_page_ax_y",
"name": "C page +y stub",
"type": "slab",
"holes": [],
"object": "node",
"polygon": [
[
-0.05,
22.1
],
[
0.05,
22.1
],
[
0.05,
23.9
],
[
-0.05,
23.9
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo",
"elevation": 0.01,
"holeMetadata": [],
"autoFromWalls": false
},
"slab_demo_d_page_ax_x": {
"id": "slab_demo_d_page_ax_x",
"name": "D page +x stub",
"type": "slab",
"holes": [],
"object": "node",
"polygon": [
[
22.1,
21.95
],
[
23.9,
21.95
],
[
23.9,
22.05
],
[
22.1,
22.05
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo",
"elevation": 0.01,
"holeMetadata": [],
"autoFromWalls": false
},
"slab_demo_d_page_ax_y": {
"id": "slab_demo_d_page_ax_y",
"name": "D page +y stub",
"type": "slab",
"holes": [],
"object": "node",
"polygon": [
[
21.95,
22.1
],
[
22.05,
22.1
],
[
22.05,
23.9
],
[
21.95,
23.9
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo",
"elevation": 0.01,
"holeMetadata": [],
"autoFromWalls": false
},
"zone_lbl_b_verified_1": {
"id": "zone_lbl_b_verified_1",
"name": "Verified: side lengths 6/4/6/4 m",
"type": "zone",
"color": "#f0f0f0",
"object": "node",
"polygon": [
[
21.7,
16.7
],
[
22.3,
16.7
],
[
22.3,
17.3
],
[
21.7,
17.3
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"zone_lbl_b_verified_2": {
"id": "zone_lbl_b_verified_2",
"name": "Verified: AB perpendicular to AD (dot=0)",
"type": "zone",
"color": "#f0f0f0",
"object": "node",
"polygon": [
[
21.7,
17.5
],
[
22.3,
17.5
],
[
22.3,
18.1
],
[
21.7,
18.1
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"zone_lbl_b_verified_3": {
"id": "zone_lbl_b_verified_3",
"name": "Verified: first edge heading = 30.0 deg from +X",
"type": "zone",
"color": "#f0f0f0",
"object": "node",
"polygon": [
[
21.7,
18.3
],
[
22.3,
18.3
],
[
22.3,
18.900000000000002
],
[
21.7,
18.900000000000002
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"zone_lbl_c_w_screen_1": {
"id": "zone_lbl_c_w_screen_1",
"name": "On-screen orientation depends on viewport",
"type": "zone",
"color": "#f0f0f0",
"object": "node",
"polygon": [
[
11.7,
27.3
],
[
12.3,
27.3
],
[
12.3,
27.900000000000002
],
[
11.7,
27.900000000000002
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
},
"zone_lbl_c_w_screen_2": {
"id": "zone_lbl_c_w_screen_2",
"name": "2D plan: rotated 90 deg; 3D top-down: ~45 deg offset",
"type": "zone",
"color": "#f0f0f0",
"object": "node",
"polygon": [
[
11.7,
28.099999999999998
],
[
12.3,
28.099999999999998
],
[
12.3,
28.7
],
[
11.7,
28.7
]
],
"visible": true,
"metadata": {},
"parentId": "level_conv_demo"
}
},
"rootNodeIds": [
"site_conv_demo"
],
"collections": {}
}