{
  "bounds": {
    "demihull_gltf_m": {
      "max": [
        1.1430000066757202,
        1.965000033378601,
        -0.05000000074505806
      ],
      "min": [
        -1.1430000066757202,
        -0.675000011920929,
        -15.0
      ]
    },
    "scene_gltf_m": {
      "max": [
        3.64300000667572,
        1.965000033378601,
        -0.05000000074505806
      ],
      "min": [
        -3.64300000667572,
        -0.675000011920929,
        -15.0
      ]
    },
    "scene_source_m": {
      "x": [
        0.05000000074505806,
        15.0
      ],
      "y": [
        -3.64300000667572,
        3.64300000667572
      ],
      "z": [
        -0.675000011920929,
        1.965000033378601
      ]
    },
    "tunnel_gap_between_demihull_bounding_boxes_m": 2.7139999866485596
  },
  "counts": {
    "edges_per_demihull": 7508,
    "max_panel_vertex_deviation_m": 8.855479956500261e-08,
    "max_seam_chord_sagitta_m": 8.066721892241446e-05,
    "max_seam_vertex_deviation_m": 8.855479956500261e-08,
    "model_interpenetrations": 834,
    "model_length_mm": 1039.9999804794788,
    "model_parts": 28,
    "model_triangles": 6285,
    "panels_per_demihull": 8,
    "seam_line_segments_per_demihull": 3316,
    "self_intersections": 0,
    "triangles_per_demihull": 4800,
    "triangles_scene": 9600,
    "vertices_welded_per_demihull": 2709
  },
  "datum": "Design waterline (z = 0), station 0 (x = 0), boat centreline (X = 0) at half load, 12.7 t",
  "document": "SW15-PANEL-ASSET",
  "file": "SW15-PANEL-ASSET-R0-preliminary.glb",
  "format": "glTF 2.0 binary (.glb), one buffer, KHR_materials_unlit on line materials",
  "generator": "hydro/hull_panel_asset.py 1.1.0",
  "gltf_frame": "glTF 2.0 right-handed: +Y up, +Z forward towards the bow, +X to port; X = -y_starboard, Y = z, Z = -x; origin at the boat centreline, station 0, DWL",
  "hashes": {
    "asset_geometry_sha256": "32e22d12d52fa9a85f8c143dace7d142b444f26546870e8648bfe698eb2f9de9",
    "asset_geometry_sha256_definition": "SHA-256 of the GLB BIN chunk: every vertex position, normal and index, float32/uint16 little-endian",
    "glb_sha256": "3d572f0bea896d9042a50450c7c6b1c001e8e916904d3abe7d2f311471aad304"
  },
  "line_instances": [
    {
      "hull": "port",
      "mesh": "seam_keel",
      "mesh_index": 8,
      "node": "hull_port/seam_keel",
      "node_index": 10
    },
    {
      "hull": "port",
      "mesh": "seam_chine1_starboard",
      "mesh_index": 9,
      "node": "hull_port/seam_chine1_starboard",
      "node_index": 11
    },
    {
      "hull": "port",
      "mesh": "seam_chine1_port",
      "mesh_index": 10,
      "node": "hull_port/seam_chine1_port",
      "node_index": 12
    },
    {
      "hull": "port",
      "mesh": "seam_chine2_starboard",
      "mesh_index": 11,
      "node": "hull_port/seam_chine2_starboard",
      "node_index": 13
    },
    {
      "hull": "port",
      "mesh": "seam_chine2_port",
      "mesh_index": 12,
      "node": "hull_port/seam_chine2_port",
      "node_index": 14
    },
    {
      "hull": "port",
      "mesh": "seam_boot_starboard",
      "mesh_index": 13,
      "node": "hull_port/seam_boot_starboard",
      "node_index": 15
    },
    {
      "hull": "port",
      "mesh": "seam_boot_port",
      "mesh_index": 14,
      "node": "hull_port/seam_boot_port",
      "node_index": 16
    },
    {
      "hull": "port",
      "mesh": "edge_sheer_starboard",
      "mesh_index": 15,
      "node": "hull_port/edge_sheer_starboard",
      "node_index": 17
    },
    {
      "hull": "port",
      "mesh": "edge_sheer_port",
      "mesh_index": 16,
      "node": "hull_port/edge_sheer_port",
      "node_index": 18
    },
    {
      "hull": "port",
      "mesh": "edge_station0",
      "mesh_index": 17,
      "node": "hull_port/edge_station0",
      "node_index": 19
    },
    {
      "hull": "port",
      "mesh": "edge_station10",
      "mesh_index": 18,
      "node": "hull_port/edge_station10",
      "node_index": 20
    },
    {
      "hull": "port",
      "mesh": "line_dwl_starboard",
      "mesh_index": 19,
      "node": "hull_port/line_dwl_starboard",
      "node_index": 21
    },
    {
      "hull": "port",
      "mesh": "line_dwl_port",
      "mesh_index": 20,
      "node": "hull_port/line_dwl_port",
      "node_index": 22
    },
    {
      "hull": "starboard",
      "mesh": "seam_keel",
      "mesh_index": 8,
      "node": "hull_starboard/seam_keel",
      "node_index": 32
    },
    {
      "hull": "starboard",
      "mesh": "seam_chine1_starboard",
      "mesh_index": 9,
      "node": "hull_starboard/seam_chine1_starboard",
      "node_index": 33
    },
    {
      "hull": "starboard",
      "mesh": "seam_chine1_port",
      "mesh_index": 10,
      "node": "hull_starboard/seam_chine1_port",
      "node_index": 34
    },
    {
      "hull": "starboard",
      "mesh": "seam_chine2_starboard",
      "mesh_index": 11,
      "node": "hull_starboard/seam_chine2_starboard",
      "node_index": 35
    },
    {
      "hull": "starboard",
      "mesh": "seam_chine2_port",
      "mesh_index": 12,
      "node": "hull_starboard/seam_chine2_port",
      "node_index": 36
    },
    {
      "hull": "starboard",
      "mesh": "seam_boot_starboard",
      "mesh_index": 13,
      "node": "hull_starboard/seam_boot_starboard",
      "node_index": 37
    },
    {
      "hull": "starboard",
      "mesh": "seam_boot_port",
      "mesh_index": 14,
      "node": "hull_starboard/seam_boot_port",
      "node_index": 38
    },
    {
      "hull": "starboard",
      "mesh": "edge_sheer_starboard",
      "mesh_index": 15,
      "node": "hull_starboard/edge_sheer_starboard",
      "node_index": 39
    },
    {
      "hull": "starboard",
      "mesh": "edge_sheer_port",
      "mesh_index": 16,
      "node": "hull_starboard/edge_sheer_port",
      "node_index": 40
    },
    {
      "hull": "starboard",
      "mesh": "edge_station0",
      "mesh_index": 17,
      "node": "hull_starboard/edge_station0",
      "node_index": 41
    },
    {
      "hull": "starboard",
      "mesh": "edge_station10",
      "mesh_index": 18,
      "node": "hull_starboard/edge_station10",
      "node_index": 42
    },
    {
      "hull": "starboard",
      "mesh": "line_dwl_starboard",
      "mesh_index": 19,
      "node": "hull_starboard/line_dwl_starboard",
      "node_index": 43
    },
    {
      "hull": "starboard",
      "mesh": "line_dwl_port",
      "mesh_index": 20,
      "node": "hull_starboard/line_dwl_port",
      "node_index": 44
    }
  ],
  "line_meshes": [
    {
      "kind": "seam",
      "mesh": "seam_keel",
      "mesh_index": 8,
      "segments": 300,
      "source_curve": "keel",
      "vertices": 301
    },
    {
      "kind": "seam",
      "mesh": "seam_chine1_starboard",
      "mesh_index": 9,
      "segments": 300,
      "source_curve": "chine1",
      "vertices": 301
    },
    {
      "kind": "seam",
      "mesh": "seam_chine1_port",
      "mesh_index": 10,
      "segments": 300,
      "source_curve": "chine1",
      "vertices": 301
    },
    {
      "kind": "seam",
      "mesh": "seam_chine2_starboard",
      "mesh_index": 11,
      "segments": 300,
      "source_curve": "chine2",
      "vertices": 301
    },
    {
      "kind": "seam",
      "mesh": "seam_chine2_port",
      "mesh_index": 12,
      "segments": 300,
      "source_curve": "chine2",
      "vertices": 301
    },
    {
      "kind": "seam",
      "mesh": "seam_boot_starboard",
      "mesh_index": 13,
      "segments": 300,
      "source_curve": "boot",
      "vertices": 301
    },
    {
      "kind": "seam",
      "mesh": "seam_boot_port",
      "mesh_index": 14,
      "segments": 300,
      "source_curve": "boot",
      "vertices": 301
    },
    {
      "kind": "edge",
      "mesh": "edge_sheer_starboard",
      "mesh_index": 15,
      "segments": 300,
      "source_curve": "sheer",
      "vertices": 301
    },
    {
      "kind": "edge",
      "mesh": "edge_sheer_port",
      "mesh_index": 16,
      "segments": 300,
      "source_curve": "sheer",
      "vertices": 301
    },
    {
      "kind": "edge",
      "mesh": "edge_station0",
      "mesh_index": 17,
      "segments": 8,
      "source_curve": "station 0 section",
      "vertices": 9
    },
    {
      "kind": "edge",
      "mesh": "edge_station10",
      "mesh_index": 18,
      "segments": 8,
      "source_curve": "station 10 section",
      "vertices": 9
    },
    {
      "kind": "waterline",
      "mesh": "line_dwl_starboard",
      "mesh_index": 19,
      "segments": 300,
      "source_curve": "dwl",
      "vertices": 301
    },
    {
      "kind": "waterline",
      "mesh": "line_dwl_port",
      "mesh_index": 20,
      "segments": 300,
      "source_curve": "dwl",
      "vertices": 301
    }
  ],
  "model_scene": {
    "assembly_findings": {
      "crossing_triangle_pairs_by_part_pair": {
        "END-ST-BKG-01-P x END-ST-BKG-01-S": 58,
        "END-ST-BKG-01-P x END-ST-BKG-02-P": 98,
        "END-ST-BKG-01-S x END-ST-BKG-02-S": 98,
        "END-ST-BKG-02-P x END-ST-BKG-03-P": 110,
        "END-ST-BKG-02-S x END-ST-BKG-03-S": 110,
        "END-ST-BKG-03-P x END-ST-BKG-04-P": 110,
        "END-ST-BKG-03-S x END-ST-BKG-04-S": 110,
        "END-ST-BKG-04-P x END-ST-SOLE": 27,
        "END-ST-BKG-04-P x END-ST-TR": 30,
        "END-ST-BKG-04-S x END-ST-SOLE": 53,
        "END-ST-BKG-04-S x END-ST-TR": 30
      },
      "documented_overlaps": {
        "adjacent backing strips at a chine": [
          "END-ST-BKG-01-S x END-ST-BKG-02-S",
          "END-ST-BKG-01-P x END-ST-BKG-02-P",
          "END-ST-BKG-02-S x END-ST-BKG-03-S",
          "END-ST-BKG-02-P x END-ST-BKG-03-P",
          "END-ST-BKG-03-S x END-ST-BKG-04-S",
          "END-ST-BKG-03-P x END-ST-BKG-04-P"
        ],
        "the two bottom backing strips at the keel": [
          "END-ST-BKG-01-P x END-ST-BKG-01-S"
        ],
        "topside backing strip through the sole and transom plates aft of station 10": [
          "END-ST-BKG-04-S x END-ST-SOLE",
          "END-ST-BKG-04-S x END-ST-TR",
          "END-ST-BKG-04-P x END-ST-SOLE",
          "END-ST-BKG-04-P x END-ST-TR"
        ]
      },
      "estimated_overlap_mm": {
        "END-ST-BKG-04 through the sole plate": "0.87 mm plate thickness over 2.33 mm aft of the transom foot",
        "boot seam (turn about 4 deg amidships, 28 deg at station 10)": 0.217,
        "chine 1 (turn about 39 deg)": 0.308,
        "chine 2 (turn about 18 deg)": 0.138,
        "keel (twice the deadrise, about 20 deg at station 10)": 0.153
      },
      "unexplained_pairs": {},
      "what": "The accepted SW15-ENDS R0 backing strips are full-width inner offsets of their strakes, so adjacent strips overlap each other at every chine and the two bottom strips overlap at the keel, each by up to one skin thickness times tan(half the panel turn); the topside strip END-ST-BKG-04 keeps its full height to the transom crossing over its whole 10 mm span, so aft of station 10 it passes through the sole plate and the transom plate. The record defines no mitre, notch or trim for these, and this asset reproduces the record as accepted. Resolution belongs to an SW15-ENDS R1, not to this visualization."
    },
    "frame": "same axes as the full-size scene; coordinates are model millimetres / 1000, so the scene is a 1:15 model in metres; datum: design waterline, station 0, demihull centreline of the one modelled demihull",
    "inspection": [
      {
        "check": "length stem tip to trailing edge (mm)",
        "difference_mm_or_deg": -1.952052116394043e-05,
        "measured": 1039.9999804794788,
        "pass": true,
        "record": 1040.0,
        "tolerance": 0.001
      },
      {
        "check": "stem tip x (mm)",
        "difference_mm_or_deg": 4.470348358154297e-07,
        "measured": -19.999999552965164,
        "pass": true,
        "record": -20.0,
        "tolerance": 0.001
      },
      {
        "check": "stem tip z (mm)",
        "difference_mm_or_deg": 3.234092702086855e-06,
        "measured": 131.3333362340927,
        "pass": true,
        "record": 131.333333,
        "tolerance": 0.001
      },
      {
        "check": "trailing edge x (mm)",
        "difference_mm_or_deg": -1.9073486328125e-05,
        "measured": 1019.9999809265137,
        "pass": true,
        "record": 1020.0,
        "tolerance": 0.001
      },
      {
        "check": "trailing edge keel z (mm)",
        "difference_mm_or_deg": 1.1175870895385742e-07,
        "measured": -4.999999888241291,
        "pass": true,
        "record": -5.0,
        "tolerance": 0.001
      },
      {
        "check": "keel at station 10 z (mm)",
        "difference_mm_or_deg": 2.598209380977323e-07,
        "measured": -7.266666740179062,
        "pass": true,
        "record": -7.266667,
        "tolerance": 0.001
      },
      {
        "check": "keel run-out angle (deg)",
        "difference_mm_or_deg": 6.7371492074030925e-06,
        "measured": 6.465938737149207,
        "pass": true,
        "record": 6.465932,
        "tolerance": 0.001
      },
      {
        "check": "station 0 joint line x (mm)",
        "difference_mm_or_deg": 4.140479563652377e-07,
        "measured": 3.3333334140479565,
        "pass": true,
        "record": 3.333333,
        "tolerance": 1e-06
      },
      {
        "check": "station 10 joint line x (mm)",
        "difference_mm_or_deg": 0.0,
        "measured": 1000.0,
        "pass": true,
        "record": 1000.0,
        "tolerance": 1e-06
      },
      {
        "check": "sole top z (mm)",
        "difference_mm_or_deg": 4.326744083016365e-07,
        "measured": 23.333333432674408,
        "pass": true,
        "record": 23.333333,
        "tolerance": 0.001
      },
      {
        "check": "transom foot x at the sole (mm)",
        "difference_mm_or_deg": 4.48072510152997e-05,
        "measured": 1002.666711807251,
        "pass": true,
        "record": 1002.666667,
        "tolerance": 0.001
      },
      {
        "check": "platform sole length along the side skin (mm)",
        "difference_mm_or_deg": -6.388073730434485e-05,
        "measured": 17.333269119262695,
        "pass": true,
        "record": 17.333333,
        "tolerance": 0.001
      },
      {
        "check": "trailing-edge plate x (mm)",
        "difference_mm_or_deg": -1.9073486328125e-05,
        "measured": 1019.9999809265137,
        "pass": true,
        "record": 1020.0,
        "tolerance": 0.001
      },
      {
        "check": "transom rake from vertical (deg)",
        "difference_mm_or_deg": 6.554315218565421e-06,
        "measured": 12.000006554315219,
        "pass": true,
        "record": 12.0,
        "tolerance": 0.001
      },
      {
        "check": "transom sheer corner on H1-S-STR-04 (mm)",
        "difference_mm_or_deg": 2.4067425993769253e-05,
        "measured": 2.4067425993769253e-05,
        "pass": true,
        "record": 0.0,
        "tolerance": 0.001
      },
      {
        "check": "transom sheer corner on H1-P-STR-04 (mm)",
        "difference_mm_or_deg": 2.4067425993769253e-05,
        "measured": 2.4067425993769253e-05,
        "pass": true,
        "record": 0.0,
        "tolerance": 0.001
      },
      {
        "check": "transom plane crosses the station 10 plane at z (mm)",
        "difference_mm_or_deg": -1.8027439097068054e-06,
        "measured": 35.87901219725609,
        "pass": true,
        "record": 35.879014,
        "tolerance": 0.001
      },
      {
        "check": "stem profile x at z = 0.0 mm (mm)",
        "difference_mm_or_deg": -0.0019265096659366598,
        "measured": 3.3267864903340634,
        "pass": true,
        "record": 3.328713,
        "tolerance": 0.05
      },
      {
        "check": "stem profile x at z = 23.3 mm (mm)",
        "difference_mm_or_deg": -0.013756361153507424,
        "measured": 2.8761416388464927,
        "pass": true,
        "record": 2.889898,
        "tolerance": 0.05
      },
      {
        "check": "stem profile x at z = 66.7 mm (mm)",
        "difference_mm_or_deg": -0.000912674751740547,
        "measured": -0.033742674751740545,
        "pass": true,
        "record": -0.03283,
        "tolerance": 0.05
      },
      {
        "check": "stem profile x at z = 100.0 mm (mm)",
        "difference_mm_or_deg": -9.578952152633491e-05,
        "measured": -5.0051867895215265,
        "pass": true,
        "record": -5.005091,
        "tolerance": 0.05
      },
      {
        "check": "stem profile x at z = 131.0 mm (mm)",
        "difference_mm_or_deg": -0.002289291956113715,
        "measured": -18.357506291956113,
        "pass": true,
        "record": -18.355217,
        "tolerance": 0.05
      },
      {
        "check": "stem profile x at z = 131.3 mm (mm)",
        "difference_mm_or_deg": 2.6716258133774318e-05,
        "measured": -19.999973283741866,
        "pass": true,
        "record": -20.0,
        "tolerance": 0.05
      },
      {
        "check": "sheer extension maximum z (mm)",
        "difference_mm_or_deg": -2.6509819036846238e-05,
        "measured": 131.43928349018097,
        "pass": true,
        "record": 131.43931,
        "tolerance": 0.05
      }
    ],
    "lines": [
      {
        "kind": "model_line",
        "line_kind": "joint",
        "mesh_index": 49,
        "node": "model/joint_station0",
        "node_index": 74,
        "scene": "model_1_15",
        "source": "station 0 butt joint, keel to sheer, x = 3.333 mm model (IF-S0-04, IF-S0-LOW)",
        "vertices": 9
      },
      {
        "kind": "model_line",
        "line_kind": "joint",
        "mesh_index": 50,
        "node": "model/joint_station10",
        "node_index": 75,
        "scene": "model_1_15",
        "source": "station 10 butt joint, keel to the transom crossing at z = 35.879 mm model (IF-S10-01..04)",
        "vertices": 9
      },
      {
        "kind": "model_line",
        "line_kind": "seam",
        "mesh_index": 51,
        "node": "model/seam_keel",
        "node_index": 76,
        "scene": "model_1_15",
        "source": "keel, station 0 to the trailing edge",
        "vertices": 331
      },
      {
        "kind": "model_line",
        "line_kind": "seam",
        "mesh_index": 52,
        "node": "model/stem_line",
        "node_index": 77,
        "scene": "model_1_15",
        "source": "stem profile from the keel at station 0 to the stem tip",
        "vertices": 70
      },
      {
        "kind": "model_line",
        "line_kind": "seam",
        "mesh_index": 53,
        "node": "model/seam_chine1_S",
        "node_index": 78,
        "scene": "model_1_15",
        "source": "chine1 seam, station 0 to the trailing edge",
        "vertices": 331
      },
      {
        "kind": "model_line",
        "line_kind": "seam",
        "mesh_index": 54,
        "node": "model/seam_chine2_S",
        "node_index": 79,
        "scene": "model_1_15",
        "source": "chine2 seam, station 0 to the trailing edge",
        "vertices": 331
      },
      {
        "kind": "model_line",
        "line_kind": "seam",
        "mesh_index": 55,
        "node": "model/seam_boot_S",
        "node_index": 80,
        "scene": "model_1_15",
        "source": "boot seam, station 0 to the trailing edge",
        "vertices": 331
      },
      {
        "kind": "model_line",
        "line_kind": "edge",
        "mesh_index": 56,
        "node": "model/seam_sheer_S",
        "node_index": 81,
        "scene": "model_1_15",
        "source": "sheer from the stem tip to the transom corner",
        "vertices": 366
      },
      {
        "kind": "model_line",
        "line_kind": "joint",
        "mesh_index": 57,
        "node": "model/trim_line_S",
        "node_index": 82,
        "scene": "model_1_15",
        "source": "transom trim line on the released topside, IF-TRIM-04",
        "vertices": 13
      },
      {
        "kind": "model_line",
        "line_kind": "seam",
        "mesh_index": 58,
        "node": "model/seam_chine1_P",
        "node_index": 83,
        "scene": "model_1_15",
        "source": "chine1 seam, station 0 to the trailing edge",
        "vertices": 331
      },
      {
        "kind": "model_line",
        "line_kind": "seam",
        "mesh_index": 59,
        "node": "model/seam_chine2_P",
        "node_index": 84,
        "scene": "model_1_15",
        "source": "chine2 seam, station 0 to the trailing edge",
        "vertices": 331
      },
      {
        "kind": "model_line",
        "line_kind": "seam",
        "mesh_index": 60,
        "node": "model/seam_boot_P",
        "node_index": 85,
        "scene": "model_1_15",
        "source": "boot seam, station 0 to the trailing edge",
        "vertices": 331
      },
      {
        "kind": "model_line",
        "line_kind": "edge",
        "mesh_index": 61,
        "node": "model/seam_sheer_P",
        "node_index": 86,
        "scene": "model_1_15",
        "source": "sheer from the stem tip to the transom corner",
        "vertices": 366
      },
      {
        "kind": "model_line",
        "line_kind": "joint",
        "mesh_index": 62,
        "node": "model/trim_line_P",
        "node_index": 87,
        "scene": "model_1_15",
        "source": "transom trim line on the released topside, IF-TRIM-04",
        "vertices": 13
      }
    ],
    "name": "model_1_15",
    "parts": [
      {
        "description": "released bottom strake, stations 0 to 10, starboard",
        "group": "released canoe-body strake",
        "kind": "model_skin",
        "mesh_index": 21,
        "node": "model/H1-S-STR-01",
        "node_index": 46,
        "part_id": "H1-S-STR-01",
        "primitives": [
          {
            "bbox_model_mm": {
              "max": [
                1000.0000000000001,
                22.933333333333334,
                1.111111111111111
              ],
              "min": [
                3.333333333333334,
                0.0,
                -45.00000000000001
              ]
            },
            "closed": false,
            "flat_shaded": false,
            "part_id": "H1-S-STR-01",
            "triangles": 600,
            "vertices": 602
          }
        ],
        "scene": "model_1_15",
        "side": "symmetric",
        "source": "SW15-CNC-RELEASE R0 strakes at 1:15, from offsets.py"
      },
      {
        "description": "released bottom strake, stations 0 to 10, port",
        "group": "released canoe-body strake",
        "kind": "model_skin",
        "mesh_index": 22,
        "node": "model/H1-P-STR-01",
        "node_index": 47,
        "part_id": "H1-P-STR-01",
        "primitives": [
          {
            "bbox_model_mm": {
              "max": [
                1000.0000000000001,
                -0.0,
                1.111111111111111
              ],
              "min": [
                3.333333333333334,
                -22.933333333333334,
                -45.00000000000001
              ]
            },
            "closed": false,
            "flat_shaded": false,
            "part_id": "H1-P-STR-01",
            "triangles": 600,
            "vertices": 602
          }
        ],
        "scene": "model_1_15",
        "side": "symmetric",
        "source": "SW15-CNC-RELEASE R0 strakes at 1:15, from offsets.py"
      },
      {
        "description": "released bilge strake, stations 0 to 10, starboard",
        "group": "released canoe-body strake",
        "kind": "model_skin",
        "mesh_index": 23,
        "node": "model/H1-S-STR-02",
        "node_index": 48,
        "part_id": "H1-S-STR-02",
        "primitives": [
          {
            "bbox_model_mm": {
              "max": [
                1000.0000000000001,
                38.13333333333333,
                4.888888888888889
              ],
              "min": [
                3.333333333333334,
                0.10174563591022445,
                -40.333333333333336
              ]
            },
            "closed": false,
            "flat_shaded": false,
            "part_id": "H1-S-STR-02",
            "triangles": 600,
            "vertices": 602
          }
        ],
        "scene": "model_1_15",
        "side": "symmetric",
        "source": "SW15-CNC-RELEASE R0 strakes at 1:15, from offsets.py"
      },
      {
        "description": "released bilge strake, stations 0 to 10, port",
        "group": "released canoe-body strake",
        "kind": "model_skin",
        "mesh_index": 24,
        "node": "model/H1-P-STR-02",
        "node_index": 49,
        "part_id": "H1-P-STR-02",
        "primitives": [
          {
            "bbox_model_mm": {
              "max": [
                1000.0000000000001,
                -0.10174563591022445,
                4.888888888888889
              ],
              "min": [
                3.333333333333334,
                -38.13333333333333,
                -40.333333333333336
              ]
            },
            "closed": false,
            "flat_shaded": false,
            "part_id": "H1-P-STR-02",
            "triangles": 600,
            "vertices": 602
          }
        ],
        "scene": "model_1_15",
        "side": "symmetric",
        "source": "SW15-CNC-RELEASE R0 strakes at 1:15, from offsets.py"
      },
      {
        "description": "released upper_bilge strake, stations 0 to 10, starboard",
        "group": "released canoe-body strake",
        "kind": "model_skin",
        "mesh_index": 25,
        "node": "model/H1-S-STR-03",
        "node_index": 50,
        "part_id": "H1-S-STR-03",
        "primitives": [
          {
            "bbox_model_mm": {
              "max": [
                1000.0000000000001,
                50.13333333333334,
                8.666666666666668
              ],
              "min": [
                3.333333333333334,
                0.2034912718204489,
                -22.000000000000004
              ]
            },
            "closed": false,
            "flat_shaded": false,
            "part_id": "H1-S-STR-03",
            "triangles": 600,
            "vertices": 602
          }
        ],
        "scene": "model_1_15",
        "side": "symmetric",
        "source": "SW15-CNC-RELEASE R0 strakes at 1:15, from offsets.py"
      },
      {
        "description": "released upper_bilge strake, stations 0 to 10, port",
        "group": "released canoe-body strake",
        "kind": "model_skin",
        "mesh_index": 26,
        "node": "model/H1-P-STR-03",
        "node_index": 51,
        "part_id": "H1-P-STR-03",
        "primitives": [
          {
            "bbox_model_mm": {
              "max": [
                1000.0000000000001,
                -0.2034912718204489,
                8.666666666666668
              ],
              "min": [
                3.333333333333334,
                -50.13333333333334,
                -22.000000000000004
              ]
            },
            "closed": false,
            "flat_shaded": false,
            "part_id": "H1-P-STR-03",
            "triangles": 600,
            "vertices": 602
          }
        ],
        "scene": "model_1_15",
        "side": "symmetric",
        "source": "SW15-CNC-RELEASE R0 strakes at 1:15, from offsets.py"
      },
      {
        "description": "released topside strake, stations 0 to 10, starboard; aft-upper corner trimmed at the transom plane per IF-TRIM-04",
        "group": "released canoe-body strake",
        "kind": "model_skin",
        "mesh_index": 27,
        "node": "model/H1-S-STR-04",
        "node_index": 52,
        "part_id": "H1-S-STR-04",
        "primitives": [
          {
            "bbox_model_mm": {
              "max": [
                1000.0000000000001,
                76.2,
                131.00000000000003
              ],
              "min": [
                3.333333333333334,
                0.30523690773067336,
                8.666666666666668
              ]
            },
            "closed": false,
            "flat_shaded": false,
            "part_id": "H1-S-STR-04",
            "triangles": 618,
            "vertices": 620
          }
        ],
        "scene": "model_1_15",
        "side": "symmetric",
        "source": "SW15-CNC-RELEASE R0 strakes at 1:15, from offsets.py; trim per SW15-ENDS R0 released_topside_trim"
      },
      {
        "description": "released topside strake, stations 0 to 10, port; aft-upper corner trimmed at the transom plane per IF-TRIM-04",
        "group": "released canoe-body strake",
        "kind": "model_skin",
        "mesh_index": 28,
        "node": "model/H1-P-STR-04",
        "node_index": 53,
        "part_id": "H1-P-STR-04",
        "primitives": [
          {
            "bbox_model_mm": {
              "max": [
                1000.0000000000001,
                -0.30523690773067336,
                131.00000000000003
              ],
              "min": [
                3.333333333333334,
                -76.2,
                8.666666666666668
              ]
            },
            "closed": false,
            "flat_shaded": false,
            "part_id": "H1-P-STR-04",
            "triangles": 618,
            "vertices": 620
          }
        ],
        "scene": "model_1_15",
        "side": "symmetric",
        "source": "SW15-CNC-RELEASE R0 strakes at 1:15, from offsets.py; trim per SW15-ENDS R0 released_topside_trim"
      },
      {
        "description": "solid stem block: the spoon's outer surface from station 0 to the stem tip on both sides, closed by the station 0 face; open at the sheer like the hull",
        "group": "spoon-stem block",
        "kind": "model_block",
        "mesh_index": 29,
        "node": "model/END-SP-BLOCK",
        "node_index": 54,
        "part_id": "END-SP-BLOCK",
        "primitives": [
          {
            "bbox_model_mm": {
              "max": [
                3.333333333333334,
                3.6,
                131.43927732653117
              ],
              "min": [
                -20.0,
                -3.6,
                -2.666666666666667
              ]
            },
            "closed": false,
            "flat_shaded": true,
            "part_id": "END-SP-BLOCK",
            "triangles": 291,
            "vertices": 873
          },
          {
            "bbox_model_mm": {
              "max": [
                13.333333333333336,
                6.329010878781745,
                131.00000000000003
              ],
              "min": [
                3.333333333333334,
                -6.329010878781745,
                4.123214284650074
              ]
            },
            "closed": true,
            "flat_shaded": true,
            "part_id": "END-SP-BLOCK/tongue",
            "triangles": 22,
            "vertices": 66
          }
        ],
        "scene": "model_1_15",
        "side": "symmetric",
        "source": "SW15-ENDS R0 stem_block outer_surface_rulings and station_0_face"
      },
      {
        "description": "stern run-out of the bottom strake, station 10 to the trailing edge, starboard",
        "group": "stern run-out skin",
        "kind": "model_skin",
        "mesh_index": 30,
        "node": "model/END-ST-STR-01-S",
        "node_index": 55,
        "part_id": "END-ST-STR-01-S",
        "primitives": [
          {
            "bbox_model_mm": {
              "max": [
                1020.0000000000001,
                9.200000000000001,
                -3.333333333333329
              ],
              "min": [
                1000.0000000000001,
                0.0,
                -7.266666666666667
              ]
            },
            "closed": false,
            "flat_shaded": false,
            "part_id": "END-ST-STR-01-S",
            "triangles": 60,
            "vertices": 62
          }
        ],
        "scene": "model_1_15",
        "side": "starboard",
        "source": "SW15-ENDS R0 stern_skin_parts"
      },
      {
        "description": "stern run-out of the bottom strake, station 10 to the trailing edge, port",
        "group": "stern run-out skin",
        "kind": "model_skin",
        "mesh_index": 31,
        "node": "model/END-ST-STR-01-P",
        "node_index": 56,
        "part_id": "END-ST-STR-01-P",
        "primitives": [
          {
            "bbox_model_mm": {
              "max": [
                1020.0000000000001,
                -0.0,
                -3.333333333333329
              ],
              "min": [
                1000.0000000000001,
                -9.200000000000001,
                -7.266666666666667
              ]
            },
            "closed": false,
            "flat_shaded": false,
            "part_id": "END-ST-STR-01-P",
            "triangles": 60,
            "vertices": 62
          }
        ],
        "scene": "model_1_15",
        "side": "port",
        "source": "SW15-ENDS R0 stern_skin_parts"
      },
      {
        "description": "stern run-out of the bilge strake, station 10 to the trailing edge, starboard",
        "group": "stern run-out skin",
        "kind": "model_skin",
        "mesh_index": 32,
        "node": "model/END-ST-STR-02-S",
        "node_index": 57,
        "part_id": "END-ST-STR-02-S",
        "primitives": [
          {
            "bbox_model_mm": {
              "max": [
                1020.0000000000001,
                18.200000000000003,
                -1.619999999999997
              ],
              "min": [
                1000.0000000000001,
                7.953333333333332,
                -5.600000000000001
              ]
            },
            "closed": false,
            "flat_shaded": false,
            "part_id": "END-ST-STR-02-S",
            "triangles": 60,
            "vertices": 62
          }
        ],
        "scene": "model_1_15",
        "side": "starboard",
        "source": "SW15-ENDS R0 stern_skin_parts"
      },
      {
        "description": "stern run-out of the bilge strake, station 10 to the trailing edge, port",
        "group": "stern run-out skin",
        "kind": "model_skin",
        "mesh_index": 33,
        "node": "model/END-ST-STR-02-P",
        "node_index": 58,
        "part_id": "END-ST-STR-02-P",
        "primitives": [
          {
            "bbox_model_mm": {
              "max": [
                1020.0000000000001,
                -7.953333333333332,
                -1.619999999999997
              ],
              "min": [
                1000.0000000000001,
                -18.200000000000003,
                -5.600000000000001
              ]
            },
            "closed": false,
            "flat_shaded": false,
            "part_id": "END-ST-STR-02-P",
            "triangles": 60,
            "vertices": 62
          }
        ],
        "scene": "model_1_15",
        "side": "port",
        "source": "SW15-ENDS R0 stern_skin_parts"
      },
      {
        "description": "stern run-out of the upper_bilge strake, station 10 to the trailing edge, starboard",
        "group": "stern run-out skin",
        "kind": "model_skin",
        "mesh_index": 34,
        "node": "model/END-ST-STR-03-S",
        "node_index": 59,
        "part_id": "END-ST-STR-03-S",
        "primitives": [
          {
            "bbox_model_mm": {
              "max": [
                1020.0000000000001,
                31.133333333333336,
                8.666666666666668
              ],
              "min": [
                1000.0000000000001,
                15.846666666666666,
                -3.066666666666667
              ]
            },
            "closed": false,
            "flat_shaded": false,
            "part_id": "END-ST-STR-03-S",
            "triangles": 60,
            "vertices": 62
          }
        ],
        "scene": "model_1_15",
        "side": "starboard",
        "source": "SW15-ENDS R0 stern_skin_parts"
      },
      {
        "description": "stern run-out of the upper_bilge strake, station 10 to the trailing edge, port",
        "group": "stern run-out skin",
        "kind": "model_skin",
        "mesh_index": 35,
        "node": "model/END-ST-STR-03-P",
        "node_index": 60,
        "part_id": "END-ST-STR-03-P",
        "primitives": [
          {
            "bbox_model_mm": {
              "max": [
                1020.0000000000001,
                -15.846666666666666,
                8.666666666666668
              ],
              "min": [
                1000.0000000000001,
                -31.133333333333336,
                -3.066666666666667
              ]
            },
            "closed": false,
            "flat_shaded": false,
            "part_id": "END-ST-STR-03-P",
            "triangles": 60,
            "vertices": 62
          }
        ],
        "scene": "model_1_15",
        "side": "port",
        "source": "SW15-ENDS R0 stern_skin_parts"
      },
      {
        "description": "stern run-out of the topside strake, station 10 to the trailing edge, starboard; below the transom plane and the sole, with the ear at the transom foot",
        "group": "stern run-out skin",
        "kind": "model_skin",
        "mesh_index": 36,
        "node": "model/END-ST-STR-04-S",
        "node_index": 61,
        "part_id": "END-ST-STR-04-S",
        "primitives": [
          {
            "bbox_model_mm": {
              "max": [
                1020.0000000000001,
                40.73264942581901,
                35.87901362527562
              ],
              "min": [
                1000.0000000000001,
                28.106666666666662,
                8.666666666666668
              ]
            },
            "closed": false,
            "flat_shaded": false,
            "part_id": "END-ST-STR-04-S",
            "triangles": 32,
            "vertices": 34
          }
        ],
        "scene": "model_1_15",
        "side": "starboard",
        "source": "SW15-ENDS R0 stern_skin_parts"
      },
      {
        "description": "stern run-out of the topside strake, station 10 to the trailing edge, port; below the transom plane and the sole, with the ear at the transom foot",
        "group": "stern run-out skin",
        "kind": "model_skin",
        "mesh_index": 37,
        "node": "model/END-ST-STR-04-P",
        "node_index": 62,
        "part_id": "END-ST-STR-04-P",
        "primitives": [
          {
            "bbox_model_mm": {
              "max": [
                1020.0000000000001,
                -28.106666666666662,
                35.87901362527562
              ],
              "min": [
                1000.0000000000001,
                -40.73264942581901,
                8.666666666666668
              ]
            },
            "closed": false,
            "flat_shaded": false,
            "part_id": "END-ST-STR-04-P",
            "triangles": 32,
            "vertices": 34
          }
        ],
        "scene": "model_1_15",
        "side": "port",
        "source": "SW15-ENDS R0 stern_skin_parts"
      },
      {
        "description": "inside-face backing strip for the bottom strake across the station 10 butt joint, starboard; hidden inside the skins",
        "group": "station 10 backing strip",
        "kind": "model_strip",
        "mesh_index": 38,
        "node": "model/END-ST-BKG-01-S",
        "node_index": 63,
        "part_id": "END-ST-BKG-01-S",
        "primitives": [
          {
            "bbox_model_mm": {
              "max": [
                1004.9036847138855,
                9.360485186153381,
                -3.3336519200203854
              ],
              "min": [
                994.8058512325907,
                -0.3187101843827027,
                -6.9851340725700135
              ]
            },
            "closed": true,
            "flat_shaded": true,
            "part_id": "END-ST-BKG-01-S",
            "triangles": 52,
            "vertices": 156
          }
        ],
        "scene": "model_1_15",
        "side": "starboard",
        "source": "SW15-ENDS R0 station_10_backing_strips"
      },
      {
        "description": "inside-face backing strip for the bottom strake across the station 10 butt joint, port; hidden inside the skins",
        "group": "station 10 backing strip",
        "kind": "model_strip",
        "mesh_index": 39,
        "node": "model/END-ST-BKG-01-P",
        "node_index": 64,
        "part_id": "END-ST-BKG-01-P",
        "primitives": [
          {
            "bbox_model_mm": {
              "max": [
                1004.9036847138855,
                0.3187101843827027,
                -3.3336519200203854
              ],
              "min": [
                994.8058512325907,
                -9.360485186153381,
                -6.9851340725700135
              ]
            },
            "closed": true,
            "flat_shaded": true,
            "part_id": "END-ST-BKG-01-P",
            "triangles": 52,
            "vertices": 156
          }
        ],
        "scene": "model_1_15",
        "side": "port",
        "source": "SW15-ENDS R0 station_10_backing_strips"
      },
      {
        "description": "inside-face backing strip for the bilge strake across the station 10 butt joint, starboard; hidden inside the skins",
        "group": "station 10 backing strip",
        "kind": "model_strip",
        "mesh_index": 40,
        "node": "model/END-ST-BKG-02-S",
        "node_index": 65,
        "part_id": "END-ST-BKG-02-S",
        "primitives": [
          {
            "bbox_model_mm": {
              "max": [
                1004.8916014182796,
                18.53999946380532,
                -1.036953370025269
              ],
              "min": [
                994.7823335817818,
                8.443117219066103,
                -5.338514536313253
              ]
            },
            "closed": true,
            "flat_shaded": true,
            "part_id": "END-ST-BKG-02-S",
            "triangles": 52,
            "vertices": 156
          }
        ],
        "scene": "model_1_15",
        "side": "starboard",
        "source": "SW15-ENDS R0 station_10_backing_strips"
      },
      {
        "description": "inside-face backing strip for the bilge strake across the station 10 butt joint, port; hidden inside the skins",
        "group": "station 10 backing strip",
        "kind": "model_strip",
        "mesh_index": 41,
        "node": "model/END-ST-BKG-02-P",
        "node_index": 66,
        "part_id": "END-ST-BKG-02-P",
        "primitives": [
          {
            "bbox_model_mm": {
              "max": [
                1004.8916014182796,
                -8.443117219066103,
                -1.036953370025269
              ],
              "min": [
                994.7823335817818,
                -18.53999946380532,
                -5.338514536313253
              ]
            },
            "closed": true,
            "flat_shaded": true,
            "part_id": "END-ST-BKG-02-P",
            "triangles": 52,
            "vertices": 156
          }
        ],
        "scene": "model_1_15",
        "side": "port",
        "source": "SW15-ENDS R0 station_10_backing_strips"
      },
      {
        "description": "inside-face backing strip for the upper_bilge strake across the station 10 butt joint, starboard; hidden inside the skins",
        "group": "station 10 backing strip",
        "kind": "model_strip",
        "mesh_index": 42,
        "node": "model/END-ST-BKG-03-S",
        "node_index": 67,
        "part_id": "END-ST-BKG-03-S",
        "primitives": [
          {
            "bbox_model_mm": {
              "max": [
                1004.885910577,
                31.299803535446124,
                9.954674572641439
              ],
              "min": [
                994.7725126261939,
                16.464248212238438,
                -2.7937088229516998
              ]
            },
            "closed": true,
            "flat_shaded": true,
            "part_id": "END-ST-BKG-03-S",
            "triangles": 52,
            "vertices": 156
          }
        ],
        "scene": "model_1_15",
        "side": "starboard",
        "source": "SW15-ENDS R0 station_10_backing_strips"
      },
      {
        "description": "inside-face backing strip for the upper_bilge strake across the station 10 butt joint, port; hidden inside the skins",
        "group": "station 10 backing strip",
        "kind": "model_strip",
        "mesh_index": 43,
        "node": "model/END-ST-BKG-03-P",
        "node_index": 68,
        "part_id": "END-ST-BKG-03-P",
        "primitives": [
          {
            "bbox_model_mm": {
              "max": [
                1004.885910577,
                -16.464248212238438,
                9.954674572641439
              ],
              "min": [
                994.7725126261939,
                -31.299803535446124,
                -2.7937088229516998
              ]
            },
            "closed": true,
            "flat_shaded": true,
            "part_id": "END-ST-BKG-03-P",
            "triangles": 52,
            "vertices": 156
          }
        ],
        "scene": "model_1_15",
        "side": "port",
        "source": "SW15-ENDS R0 station_10_backing_strips"
      },
      {
        "description": "inside-face backing strip for the topside strake across the station 10 butt joint, starboard; hidden inside the skins",
        "group": "station 10 backing strip",
        "kind": "model_strip",
        "mesh_index": 44,
        "node": "model/END-ST-BKG-04-S",
        "node_index": 69,
        "part_id": "END-ST-BKG-04-S",
        "primitives": [
          {
            "bbox_model_mm": {
              "max": [
                1004.8771691628571,
                40.61021870245271,
                36.45529363995676
              ],
              "min": [
                994.7567480494863,
                28.753351651281285,
                8.951621187660939
              ]
            },
            "closed": true,
            "flat_shaded": true,
            "part_id": "END-ST-BKG-04-S",
            "triangles": 52,
            "vertices": 156
          }
        ],
        "scene": "model_1_15",
        "side": "starboard",
        "source": "SW15-ENDS R0 station_10_backing_strips"
      },
      {
        "description": "inside-face backing strip for the topside strake across the station 10 butt joint, port; hidden inside the skins",
        "group": "station 10 backing strip",
        "kind": "model_strip",
        "mesh_index": 45,
        "node": "model/END-ST-BKG-04-P",
        "node_index": 70,
        "part_id": "END-ST-BKG-04-P",
        "primitives": [
          {
            "bbox_model_mm": {
              "max": [
                1004.8771691628571,
                -28.753351651281285,
                36.45529363995676
              ],
              "min": [
                994.7567480494863,
                -40.61021870245271,
                8.951621187660939
              ]
            },
            "closed": true,
            "flat_shaded": true,
            "part_id": "END-ST-BKG-04-P",
            "triangles": 52,
            "vertices": 156
          }
        ],
        "scene": "model_1_15",
        "side": "port",
        "source": "SW15-ENDS R0 station_10_backing_strips"
      },
      {
        "description": "reverse transom plate on the deducted outline, raked 12 deg top forward; thickness forward of the plane",
        "group": "reverse transom",
        "kind": "model_plate",
        "mesh_index": 46,
        "node": "model/END-ST-TR",
        "node_index": 71,
        "part_id": "END-ST-TR",
        "primitives": [
          {
            "bbox_model_mm": {
              "max": [
                1002.4857834956553,
                61.166645,
                92.62060447935659
              ],
              "min": [
                987.0882141317311,
                -61.166645,
                24.003438574960292
              ]
            },
            "closed": true,
            "flat_shaded": true,
            "part_id": "END-ST-TR",
            "triangles": 196,
            "vertices": 588
          }
        ],
        "scene": "model_1_15",
        "side": "symmetric",
        "source": "SW15-ENDS R0 END-ST-TR deducted outline"
      },
      {
        "description": "stern platform sole on the deducted outline, top face at z = +23.33 mm model; thickness below",
        "group": "platform sole",
        "kind": "model_plate",
        "mesh_index": 47,
        "node": "model/END-ST-SOLE",
        "node_index": 72,
        "part_id": "END-ST-SOLE",
        "primitives": [
          {
            "bbox_model_mm": {
              "max": [
                1019.13,
                34.989545,
                23.333333333333332
              ],
              "min": [
                1002.666667,
                -34.989545,
                22.463333333333335
              ]
            },
            "closed": true,
            "flat_shaded": true,
            "part_id": "END-ST-SOLE",
            "triangles": 68,
            "vertices": 204
          }
        ],
        "scene": "model_1_15",
        "side": "symmetric",
        "source": "SW15-ENDS R0 END-ST-SOLE deducted outline"
      },
      {
        "description": "platform trailing-edge plate on the deducted outline at x = 1020.0 mm model; thickness forward",
        "group": "trailing-edge plate",
        "kind": "model_plate",
        "mesh_index": 48,
        "node": "model/END-ST-TE",
        "node_index": 73,
        "part_id": "END-ST-TE",
        "primitives": [
          {
            "bbox_model_mm": {
              "max": [
                1020.0000000000001,
                32.476341,
                23.333333
              ],
              "min": [
                1019.1300000000001,
                -32.476341,
                -4.105651
              ]
            },
            "closed": true,
            "flat_shaded": true,
            "part_id": "END-ST-TE",
            "triangles": 32,
            "vertices": 96
          }
        ],
        "scene": "model_1_15",
        "side": "symmetric",
        "source": "SW15-ENDS R0 END-ST-TE deducted outline"
      }
    ],
    "scale": "1:15",
    "scope": "model geometry only; validates no full-size scantling, stability, resistance, propulsion or seaworthiness result",
    "source": {
      "artifact_commit": "c7ced9973edcaea58b54e560c366d4c738e9c5d7",
      "date": "2026-10-07",
      "document_id": "SW15-ENDS",
      "geometry_hash_recomputed": "fcf36bc01a65b87467cab03e2f4b2a8b6e977a477a29655eba61242f4b5af195",
      "geometry_source_commit": "d1a45377e473c8f979b42a153d6088120ae46aa3",
      "lines_revision": "SW-LP01 Rev 0a",
      "record": "hydro/model-hull-ends/SW15-ENDS-R0-preliminary.json",
      "revision": "R0",
      "source_commit": "d308e7e",
      "source_issue": "SUN-123",
      "state": "preliminary"
    },
    "summary": {
      "bbox_model_mm": {
        "max": [
          1019.9999809265137,
          76.20000094175339,
          131.43928349018097
        ],
        "min": [
          -19.999999552965164,
          -76.20000094175339,
          -45.00000178813934
        ]
      },
      "candidate_pairs_tested": 21852,
      "interpenetrations": 834,
      "length_mm": 1039.9999804794788,
      "lines": 14,
      "mirror_max_deviation_mm": 0.0,
      "parts": 28,
      "primitives": 29,
      "triangles": 6285
    },
    "units": "metres at model scale (model millimetres / 1000)",
    "what": "one demihull of the 1:15 model: the released canoe-body strakes (topside trimmed per IF-TRIM-04) and the accepted SW15-ENDS R0 end parts; hidden backing strips and the stem-block tongue are separate named parts for an exploded or isolation view"
  },
  "notice": "Preliminary visualization of the SW-LP01 Rev 0a lines for design development. Not a construction drawing, not a cut file, not approved for construction, and no statement of stability or seaworthiness.",
  "omitted_source_geometry": [
    "spoon stem forward of station 0 (profile only in offsets.stem_profile)",
    "stern platforms, keel run-out and reverse transom aft of station 10 (profile only in offsets.stern_platform_profile)",
    "decks, bridgedeck, house and roof (arrangement profile only)"
  ],
  "panel_instances": [
    {
      "hull": "port",
      "mesh": "panel_bottom_starboard",
      "mesh_index": 0,
      "node": "hull_port/panel_bottom_starboard",
      "node_index": 2
    },
    {
      "hull": "port",
      "mesh": "panel_bottom_port",
      "mesh_index": 1,
      "node": "hull_port/panel_bottom_port",
      "node_index": 3
    },
    {
      "hull": "port",
      "mesh": "panel_bilge_starboard",
      "mesh_index": 2,
      "node": "hull_port/panel_bilge_starboard",
      "node_index": 4
    },
    {
      "hull": "port",
      "mesh": "panel_bilge_port",
      "mesh_index": 3,
      "node": "hull_port/panel_bilge_port",
      "node_index": 5
    },
    {
      "hull": "port",
      "mesh": "panel_upper_bilge_starboard",
      "mesh_index": 4,
      "node": "hull_port/panel_upper_bilge_starboard",
      "node_index": 6
    },
    {
      "hull": "port",
      "mesh": "panel_upper_bilge_port",
      "mesh_index": 5,
      "node": "hull_port/panel_upper_bilge_port",
      "node_index": 7
    },
    {
      "hull": "port",
      "mesh": "panel_topside_starboard",
      "mesh_index": 6,
      "node": "hull_port/panel_topside_starboard",
      "node_index": 8
    },
    {
      "hull": "port",
      "mesh": "panel_topside_port",
      "mesh_index": 7,
      "node": "hull_port/panel_topside_port",
      "node_index": 9
    },
    {
      "hull": "starboard",
      "mesh": "panel_bottom_starboard",
      "mesh_index": 0,
      "node": "hull_starboard/panel_bottom_starboard",
      "node_index": 24
    },
    {
      "hull": "starboard",
      "mesh": "panel_bottom_port",
      "mesh_index": 1,
      "node": "hull_starboard/panel_bottom_port",
      "node_index": 25
    },
    {
      "hull": "starboard",
      "mesh": "panel_bilge_starboard",
      "mesh_index": 2,
      "node": "hull_starboard/panel_bilge_starboard",
      "node_index": 26
    },
    {
      "hull": "starboard",
      "mesh": "panel_bilge_port",
      "mesh_index": 3,
      "node": "hull_starboard/panel_bilge_port",
      "node_index": 27
    },
    {
      "hull": "starboard",
      "mesh": "panel_upper_bilge_starboard",
      "mesh_index": 4,
      "node": "hull_starboard/panel_upper_bilge_starboard",
      "node_index": 28
    },
    {
      "hull": "starboard",
      "mesh": "panel_upper_bilge_port",
      "mesh_index": 5,
      "node": "hull_starboard/panel_upper_bilge_port",
      "node_index": 29
    },
    {
      "hull": "starboard",
      "mesh": "panel_topside_starboard",
      "mesh_index": 6,
      "node": "hull_starboard/panel_topside_starboard",
      "node_index": 30
    },
    {
      "hull": "starboard",
      "mesh": "panel_topside_port",
      "mesh_index": 7,
      "node": "hull_starboard/panel_topside_port",
      "node_index": 31
    }
  ],
  "panel_meshes": [
    {
      "bbox_gltf_m": {
        "max": [
          0.0,
          0.01666666753590107,
          -0.05000000074505806
        ],
        "min": [
          -0.3440000116825104,
          -0.675000011920929,
          -15.0
        ]
      },
      "lower_edge": "keel",
      "mesh": "panel_bottom_starboard",
      "mesh_index": 0,
      "side": "starboard",
      "strake": "bottom",
      "strake_index": 1,
      "sun57_zone": "bottom",
      "triangles": 600,
      "upper_edge": "chine1",
      "vertices": 602
    },
    {
      "bbox_gltf_m": {
        "max": [
          0.3440000116825104,
          0.01666666753590107,
          -0.05000000074505806
        ],
        "min": [
          0.0,
          -0.675000011920929,
          -15.0
        ]
      },
      "lower_edge": "keel",
      "mesh": "panel_bottom_port",
      "mesh_index": 1,
      "side": "port",
      "strake": "bottom",
      "strake_index": 1,
      "sun57_zone": "bottom",
      "triangles": 600,
      "upper_edge": "chine1",
      "vertices": 602
    },
    {
      "bbox_gltf_m": {
        "max": [
          -0.0015261844964697957,
          0.07333333045244217,
          -0.05000000074505806
        ],
        "min": [
          -0.5720000267028809,
          -0.6050000190734863,
          -15.0
        ]
      },
      "lower_edge": "chine1",
      "mesh": "panel_bilge_starboard",
      "mesh_index": 2,
      "side": "starboard",
      "strake": "bilge",
      "strake_index": 2,
      "sun57_zone": "lower bilge",
      "triangles": 600,
      "upper_edge": "chine2",
      "vertices": 602
    },
    {
      "bbox_gltf_m": {
        "max": [
          0.5720000267028809,
          0.07333333045244217,
          -0.05000000074505806
        ],
        "min": [
          0.0015261844964697957,
          -0.6050000190734863,
          -15.0
        ]
      },
      "lower_edge": "chine1",
      "mesh": "panel_bilge_port",
      "mesh_index": 3,
      "side": "port",
      "strake": "bilge",
      "strake_index": 2,
      "sun57_zone": "lower bilge",
      "triangles": 600,
      "upper_edge": "chine2",
      "vertices": 602
    },
    {
      "bbox_gltf_m": {
        "max": [
          -0.0030523689929395914,
          0.12999999523162842,
          -0.05000000074505806
        ],
        "min": [
          -0.7519999742507935,
          -0.33000001311302185,
          -15.0
        ]
      },
      "lower_edge": "chine2",
      "mesh": "panel_upper_bilge_starboard",
      "mesh_index": 4,
      "side": "starboard",
      "strake": "upper_bilge",
      "strake_index": 3,
      "sun57_zone": "upper bilge",
      "triangles": 600,
      "upper_edge": "boot",
      "vertices": 602
    },
    {
      "bbox_gltf_m": {
        "max": [
          0.7519999742507935,
          0.12999999523162842,
          -0.05000000074505806
        ],
        "min": [
          0.0030523689929395914,
          -0.33000001311302185,
          -15.0
        ]
      },
      "lower_edge": "chine2",
      "mesh": "panel_upper_bilge_port",
      "mesh_index": 5,
      "side": "port",
      "strake": "upper_bilge",
      "strake_index": 3,
      "sun57_zone": "upper bilge",
      "triangles": 600,
      "upper_edge": "boot",
      "vertices": 602
    },
    {
      "bbox_gltf_m": {
        "max": [
          -0.004578553605824709,
          1.965000033378601,
          -0.05000000074505806
        ],
        "min": [
          -1.1430000066757202,
          0.12999999523162842,
          -15.0
        ]
      },
      "lower_edge": "boot",
      "mesh": "panel_topside_starboard",
      "mesh_index": 6,
      "side": "starboard",
      "strake": "topside",
      "strake_index": 4,
      "sun57_zone": "topside",
      "triangles": 600,
      "upper_edge": "sheer",
      "vertices": 602
    },
    {
      "bbox_gltf_m": {
        "max": [
          1.1430000066757202,
          1.965000033378601,
          -0.05000000074505806
        ],
        "min": [
          0.004578553605824709,
          0.12999999523162842,
          -15.0
        ]
      },
      "lower_edge": "boot",
      "mesh": "panel_topside_port",
      "mesh_index": 7,
      "side": "port",
      "strake": "topside",
      "strake_index": 4,
      "sun57_zone": "topside",
      "triangles": 600,
      "upper_edge": "sheer",
      "vertices": 602
    }
  ],
  "revision": "R0",
  "sampling": {
    "samples_per_bay": 30,
    "samples_per_edge": 301,
    "x_samples_m": {
      "count": 301,
      "first": 0.05,
      "last": 15.0
    }
  },
  "size": {
    "bin_bytes": 460808,
    "glb_bytes": 530380,
    "materials": 12,
    "meshes": 63,
    "nodes": 88
  },
  "software": {
    "generator": "hydro/hull_panel_asset.py 1.1.0",
    "numpy": "2.5.4",
    "python": "3.12.14",
    "scale_model_basis": "SW-MODEL-15 Rev 0",
    "scipy": "1.18.1",
    "sunwake_package": "0.1.0"
  },
  "source": {
    "hull_centres_m": 5.0,
    "lines_geometry_hash": "fcf36bc01a65b87467cab03e2f4b2a8b6e977a477a29655eba61242f4b5af195",
    "lines_geometry_hash_pinned_by_scale_model": "fcf36bc01a65b87467cab03e2f4b2a8b6e977a477a29655eba61242f4b5af195",
    "lines_geometry_source_commit": "d1a45377e473c8f979b42a153d6088120ae46aa3",
    "lines_revision": "SW-LP01 Rev 0a",
    "offset_surface": "outer skin",
    "source_commit": "884cbb488c99aab21efc4e932f7b4e37d2795f14",
    "strakes_per_side": 4,
    "working_chines": 2
  },
  "source_frame": "x aft from station 0 at the forward end of the design waterline; y half-breadth from the demihull's own centreline, starboard positive; z up from the design waterline (DWL)",
  "state": "preliminary",
  "tolerances": {
    "instance_spacing_m": 1e-06,
    "justification": "Positions are float32; below 16 m one ULP is 1.907e-06 m, so a vertex can sit at most half that from its float64 source value per axis. seam_vertex_deviation_m is ten times the ULP. seam_chord_sagitta_m is the sampling resolution: 30 columns per station bay (0.05 m).",
    "model_angle_deg": 0.001,
    "model_backing_span_mm": 0.5,
    "model_nominal_mm": 0.001,
    "model_rake_deg": 0.001,
    "model_record_point_mm": 0.001,
    "model_stem_profile_mm": 0.05,
    "normal_unit_length": 0.001,
    "seam_chord_sagitta_m": 0.001,
    "seam_vertex_deviation_m": 1.9073486328125e-05
  },
  "uncertainty": "The lines are unfrozen (SW-LP01 Rev 0a, preliminary). The asset reproduces the faired ruled surface defined by offsets.py; it carries the uncertainty of that surface and adds only float32 rounding and the chord sagitta stated above. It is not a developed-panel model and says nothing about plywood forming, scantlings or stability.",
  "units": "metres"
}
