Skip to content

Commit 6fd9997

Browse files
TMHSDigitalclaude
andcommitted
fix(showcase): reprofile the chopping-block axe head so it reads as an axe
The head grew steadily from a 56 mm poll to the 149 mm edge: a wedge with a flat end that, above the wood, read as a box. Poll and eye now stand the same height (60 / 78 mm), the cheek waists to 65 mm behind the eye, and only then does the blade flare to the bit. Chamfer 4.2 -> 7 mm so forged edges read soft. One extra head section: 1800 -> 1816 tris, 404 -> 412 metal faces, both inside their bands. Joints: eye clearance 13.5 mm (>= 6), engagement 69.3 mm (>= 20), breakout 8.75 mm (>= 6), bury 78.7 mm unchanged. Same numbers on 5.2.1, 5.1.2 and 4.5.11; every falsifier exits as before (9, 15, 16, 17, 18, 18, 19). README tables and witnessesFix synced, along with the joint figures there that were stale before this change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 parent 8b6737a commit 6fd9997

9 files changed

Lines changed: 51 additions & 32 deletions

File tree

56 Bytes
Loading
-340 Bytes
Loading

‎docs/gallery/chopping-block/index.html‎

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -363,7 +363,7 @@ <h1>chopping-block</h1>
363363
<img src="../assets/chopping-block-hero.webp" alt="A log-round chopping block bound with a riveted iron hoop, a felling axe buried in its ringed top, split billets and wood chips scattered at its foot." width="1280" height="720" fetchpriority="high" />
364364
</button>
365365
<p class="zoom-hint">Rendered headless by the showcase piece itself — click to zoom.</p>
366-
<div class="callout"><span class="tag">witnesses</span> Recomputed: 1800 tris, four materials with 180 bark / 216 grain / 404 metal / 176 haft faces, UVs in 0..1 with zero AABB overlap, outer AABB 0.526 x 0.526 x 1.006 m, LOD ratios in band, convex collider 538 tris, non-empty glTF. Hygiene: zero non-manifold edges, loose geometry, doubles, zero-area faces, n-gons and coplanar disjoint face pairs, grounded at zmin 0, log plumb to 1e-7, oval haft 1.35 wide-to-thick. Joint fit: six shells, 18.0 mm haft clearance in the eye, 78.7 mm bit bury, hoop biting 3.7-4.2 mm into the log on every segment, two lap rivets seated 1.50 and 1.54 mm. --fat-haft exits 17 on eye clearance; --round-band and --float-rivets exit 18 on their seats; --round-haft exits 19 on the haft section.</div>
366+
<div class="callout"><span class="tag">witnesses</span> Recomputed: 1816 tris, four materials with 180 bark / 216 grain / 412 metal / 176 haft faces, UVs in 0..1 with zero AABB overlap, outer AABB 0.526 x 0.526 x 1.006 m, LOD ratios in band, convex collider 538 tris, non-empty glTF. Hygiene: zero non-manifold edges, loose geometry, doubles, zero-area faces, n-gons and coplanar disjoint face pairs, grounded at zmin 0, log plumb to 1e-7, oval haft 1.35 wide-to-thick. Joint fit: six shells, 13.5 mm haft clearance in the eye, 78.7 mm bit bury, hoop biting 3.7-4.2 mm into the log on every segment, two lap rivets seated 1.50 and 1.54 mm. --fat-haft exits 17 on eye clearance; --round-band and --float-rivets exit 18 on their seats; --round-haft exits 19 on the haft section.</div>
367367
<p class="taglist"><span class="tag">category</span> <a href="../#k=showcase&amp;c=village">Village</a></p>
368368
<p class="taglist"><span class="tag">tags</span> <a href="../#tag=mesh">mesh</a> <a href="../#tag=export">export</a> <a href="../#tag=showcase">showcase</a></p>
369369
<div class="runline">
@@ -379,14 +379,14 @@ <h1>chopping-block</h1>
379379
<p><strong>Composes</strong> skills <code>mesh-editing-and-bmesh</code>, <code>bake-high-to-low</code>, <code>depsgraph-and-evaluated-data</code>, <code>engine-export-presets</code>, and snippets <code>bake_normal_high_to_low.py</code>, <code>setup_bake_target_image.py</code>, <code>lod_chain.py</code> / <code>decimate_to_budget.py</code>, <code>convex_hull_collider.py</code>, <code>export_preset_unity.py</code> (helpers copied, not imported as a package).</p>
380380
<h2 id="budgets">Budgets<a class="anchor" href="#budgets" aria-label="Link to this section">#</a></h2>
381381
<p>Declared as named constants; every gate <strong>recomputes</strong> from the mesh, materials, UVs, evaluated LOD, collider, or export file.</p>
382-
<div class="table-wrap"><table><thead><tr><th scope="col">Axis</th><th scope="col">Declared</th><th scope="col">Measured (4.5.11 / 5.1.2 / 5.2.1)</th></tr></thead><tbody><tr><td>Base triangles</td><td>1730–1870</td><td>1800 / 1800 / 1800</td></tr><tr><td>LOD1 ratio</td><td>0.32–0.62 of base</td><td>0.5000 / 0.5000 / 0.5000</td></tr><tr><td>LOD2 ratio</td><td>0.10–0.35 of base</td><td>0.2200 / 0.2200 / 0.2200</td></tr><tr><td>Materials</td><td>exactly 4 distinct; ≥160 bark, ≥90 grain, ≥170 metal, ≥150 haft faces</td><td>4 slots; 180 / 216 / 404 / 176</td></tr><tr><td>UVs</td><td>in <code>0..1</code>, AABB overlap ≤ 1e-5</td><td>in range, overlap 0</td></tr><tr><td>Outer AABB</td><td>(0.526, 0.526, 1.006) m ± 0.012</td><td>(0.5264, 0.5264, 1.0064)</td></tr><tr><td>Collider tris</td><td>≤ 560</td><td>538</td></tr><tr><td>Export</td><td>written, size &gt; 0</td><td>180588 / 180588 / 180572 bytes</td></tr></tbody></table></div>
383-
<p>The triangle band, the outer AABB and the collider ceiling were re-fitted in the quality pass that added the lap, the rivets and the 16-segment oval haft (1472 → 1800 triangles, collider 434 → 538). The triangle band is centred on the new measurement, ± 4 %.</p>
382+
<div class="table-wrap"><table><thead><tr><th scope="col">Axis</th><th scope="col">Declared</th><th scope="col">Measured (4.5.11 / 5.1.2 / 5.2.1)</th></tr></thead><tbody><tr><td>Base triangles</td><td>1730–1870</td><td>1816 / 1816 / 1816</td></tr><tr><td>LOD1 ratio</td><td>0.32–0.62 of base</td><td>0.5000 / 0.5000 / 0.5000</td></tr><tr><td>LOD2 ratio</td><td>0.10–0.35 of base</td><td>0.2192 / 0.2192 / 0.2192</td></tr><tr><td>Materials</td><td>exactly 4 distinct; ≥160 bark, ≥90 grain, ≥170 metal, ≥150 haft faces</td><td>4 slots; 180 / 216 / 412 / 176</td></tr><tr><td>UVs</td><td>in <code>0..1</code>, AABB overlap ≤ 1e-5</td><td>in range, overlap 0</td></tr><tr><td>Outer AABB</td><td>(0.526, 0.526, 1.006) m ± 0.012</td><td>(0.5264, 0.5264, 1.0064)</td></tr><tr><td>Collider tris</td><td>≤ 560</td><td>538</td></tr><tr><td>Export</td><td>written, size &gt; 0</td><td>181676 / 181676 / 181660 bytes</td></tr></tbody></table></div>
383+
<p>The triangle band, the outer AABB and the collider ceiling were re-fitted in the quality pass that added the lap, the rivets and the 16-segment oval haft (1472 → 1800 triangles, collider 434 → 538). The triangle band is centred on that measurement, ± 4 %. The axe-head reprofile (a waist behind the eye) added one head section: 1800 → 1816.</p>
384384
<h3 id="hygiene">Hygiene<a class="anchor" href="#hygiene" aria-label="Link to this section">#</a></h3>
385385
<p>Recomputed from the generated mesh, not asserted about the script.</p>
386386
<div class="table-wrap"><table><thead><tr><th scope="col">Axis</th><th scope="col">Declared</th><th scope="col">Measured (all three)</th></tr></thead><tbody><tr><td>Non-manifold edges</td><td>0</td><td>0</td></tr><tr><td>Loose verts / edges</td><td>0 / 0</td><td>0 / 0</td></tr><tr><td>Doubles merged at 1e-5</td><td>0</td><td>0</td></tr><tr><td>Zero-area faces</td><td>0</td><td>0</td></tr><tr><td>N-gons</td><td>0</td><td>0</td></tr><tr><td>Coplanar disjoint face pairs</td><td>0</td><td>0</td></tr><tr><td>Grounded: <code>zmin</code></td><td>within 1e-4 of 0</td><td>0.0000</td></tr><tr><td>Log axis out of plumb</td><td>≤ 1e-5</td><td>0.0000000</td></tr><tr><td>Log size</td><td>0.535 × 0.360 m ± 0.030 / ± 0.010</td><td>0.5464 × 0.3600</td></tr><tr><td>Haft section, wide over thick at the grip</td><td>1.25–1.60</td><td>1.3500</td></tr></tbody></table></div>
387387
<h3 id="joint-fit">Joint fit<a class="anchor" href="#joint-fit" aria-label="Link to this section">#</a></h3>
388388
<p>Six shells that have to meet correctly: log, hoop, head, haft, and the two rivets through the hoop&#x27;s lap.</p>
389-
<div class="table-wrap"><table><thead><tr><th scope="col">Axis</th><th scope="col">Declared</th><th scope="col">Measured (all three)</th></tr></thead><tbody><tr><td>Shell count</td><td>exactly 6</td><td>6</td></tr><tr><td>Haft clearance inside the eye</td><td>≥ 0.006 m</td><td>0.01800</td></tr><tr><td>Haft engagement through the eye</td><td>≥ 0.020 m</td><td>0.08225</td></tr><tr><td>Haft breakout margin below the head</td><td>≥ 0.006 m</td><td>0.02175</td></tr><tr><td>Bit bury below the sawn top</td><td>≥ 0.030 m</td><td>0.07871</td></tr><tr><td>Bit inset from the rim</td><td>≥ 0.030 m</td><td>0.14647</td></tr><tr><td>Hoop bite into the log, every segment</td><td>0.002–0.007 m</td><td>0.00371–0.00422</td></tr><tr><td>Haft clearance above the log</td><td>≥ 0.015 m, 0 verts inside</td><td>0.07531, 0</td></tr><tr><td>Rivet seat into the hoop, each rivet</td><td>0.0008–0.0025 m</td><td>0.00150, 0.00154</td></tr><tr><td>Rivet dome proud of the hoop, each rivet</td><td>≥ 0.0025 m</td><td>0.00419, 0.00432</td></tr></tbody></table></div>
389+
<div class="table-wrap"><table><thead><tr><th scope="col">Axis</th><th scope="col">Declared</th><th scope="col">Measured (all three)</th></tr></thead><tbody><tr><td>Shell count</td><td>exactly 6</td><td>6</td></tr><tr><td>Haft clearance inside the eye</td><td>≥ 0.006 m</td><td>0.01350</td></tr><tr><td>Haft engagement through the eye</td><td>≥ 0.020 m</td><td>0.06925</td></tr><tr><td>Haft breakout margin below the head</td><td>≥ 0.006 m</td><td>0.00875</td></tr><tr><td>Bit bury below the sawn top</td><td>≥ 0.030 m</td><td>0.07871</td></tr><tr><td>Bit inset from the rim</td><td>≥ 0.030 m</td><td>0.16808</td></tr><tr><td>Hoop bite into the log, every segment</td><td>0.002–0.007 m</td><td>0.00371–0.00422</td></tr><tr><td>Haft clearance above the log</td><td>≥ 0.015 m, 0 verts inside</td><td>0.07531, 0</td></tr><tr><td>Rivet seat into the hoop, each rivet</td><td>0.0008–0.0025 m</td><td>0.00150, 0.00154</td></tr><tr><td>Rivet dome proud of the hoop, each rivet</td><td>≥ 0.0025 m</td><td>0.00419, 0.00432</td></tr></tbody></table></div>
390390
<p>The hoop bite is binned by angular segment against the log&#x27;s own radius function. A single global midpoint radius misclassifies outer chamfer vertices as inner ones on an out-of-round log, which is how a hoop that visibly floated on one side still passed.</p>
391391
<p>The rivet seat is measured radially at each rivet vertex&#x27;s own angle, against the hoop&#x27;s outer face read off the mesh by a ray cast from the axis. Each rivet is aimed down the hoop&#x27;s surface normal, not the radial: the log is out of round, so across one 12 mm head its surface falls by up to 1.4 mm, and radially aimed heads seated 1.87 and 2.82 mm against a 1.5 mm design bite, one edge sunk and the other lifted.</p>
392392
<p>DECIMATE COLLAPSE triangle counts happen to agree across all three series here; the gate is still a ratio band, not an exact count. Bake pixels are stochastic; the gate is <code>has_data</code> plus operator <code>FINISHED</code>, not byte-identity. Construction uses no RNG: two runs on each binary print identical measurements, and the three binaries agree on every gated axis. Export byte counts differ by 16 B on 5.2.1 (glTF serializer), not a gated axis.</p>
@@ -416,9 +416,9 @@ <h2 id="exit-codes">Exit codes<a class="anchor" href="#exit-codes" aria-label="L
416416
<h2>Source</h2>
417417
<div class="src-meta">
418418
<code>showcase/chopping-block/chopping_block.py</code>
419-
<span>2116 lines &middot; <a href="https://github.com/TMHSDigital/Blender-Developer-Tools/tree/main/showcase/chopping-block/chopping_block.py">View on GitHub &rarr;</a></span>
419+
<span>2122 lines &middot; <a href="https://github.com/TMHSDigital/Blender-Developer-Tools/tree/main/showcase/chopping-block/chopping_block.py">View on GitHub &rarr;</a></span>
420420
</div>
421-
<div class="code" data-lines="2116">
421+
<div class="code" data-lines="2122">
422422
<pre class="gutter" aria-hidden="true">1
423423
2
424424
3
@@ -2534,7 +2534,13 @@ <h2>Source</h2>
25342534
2113
25352535
2114
25362536
2115
2537-
2116</pre><pre class="code-lines"><span class="s">&quot;&quot;&quot;Game-ready chopping block — a showcase piece, not an example.
2537+
2116
2538+
2117
2539+
2118
2540+
2119
2541+
2120
2542+
2121
2543+
2122</pre><pre class="code-lines"><span class="s">&quot;&quot;&quot;Game-ready chopping block — a showcase piece, not an example.
25382544

25392545
Asserts budget conformance of a procedural splitting block (a hooped log
25402546
round with a felling axe standing in it) after composing shipped pipeline
@@ -2691,17 +2697,23 @@ <h2>Source</h2>
26912697
<span class="c"># 530 mm block it read as a trowel. The head is sized off the block, not</span>
26922698
<span class="c"># off an absolute idea of an axe -- half the block diameter is what makes</span>
26932699
<span class="c"># the two objects look like they belong in the same scene.</span>
2700+
<span class="c"># Side profile: poll and eye stand the same height, the cheek waists in</span>
2701+
<span class="c"># behind the eye, and only then does the blade flare to the bit. A head that</span>
2702+
<span class="c"># grew steadily from a 56 mm poll to the 149 mm edge was a wedge with a flat</span>
2703+
<span class="c"># end, and above the wood it read as a box with a lid.</span>
26942704
HEAD_SECTIONS = (
2695-
(<span class="n">0.000</span>, <span class="n">0.0280</span>, <span class="n">0.0215</span>),
2696-
(<span class="n">0.028</span>, <span class="n">0.0340</span>, <span class="n">0.0270</span>),
2697-
(<span class="n">0.150</span>, <span class="n">0.0485</span>, <span class="n">0.0385</span>),
2698-
(<span class="n">0.330</span>, <span class="n">0.0520</span>, <span class="n">0.0280</span>),
2699-
(<span class="n">0.620</span>, <span class="n">0.0615</span>, <span class="n">0.0160</span>),
2700-
(<span class="n">0.870</span>, <span class="n">0.0710</span>, <span class="n">0.0062</span>),
2705+
(<span class="n">0.000</span>, <span class="n">0.0300</span>, <span class="n">0.0205</span>),
2706+
(<span class="n">0.030</span>, <span class="n">0.0350</span>, <span class="n">0.0260</span>),
2707+
(<span class="n">0.150</span>, <span class="n">0.0390</span>, <span class="n">0.0340</span>),
2708+
(<span class="n">0.330</span>, <span class="n">0.0390</span>, <span class="n">0.0300</span>),
2709+
(<span class="n">0.490</span>, <span class="n">0.0325</span>, <span class="n">0.0190</span>),
2710+
(<span class="n">0.680</span>, <span class="n">0.0450</span>, <span class="n">0.0115</span>),
2711+
(<span class="n">0.870</span>, <span class="n">0.0660</span>, <span class="n">0.0055</span>),
27012712
(<span class="n">0.980</span>, <span class="n">0.0745</span>, <span class="n">0.0018</span>),
27022713
(<span class="n">1.000</span>, <span class="n">0.0728</span>, <span class="n">0.0013</span>),
27032714
)
2704-
HEAD_CHAMFER = <span class="n">0.0042</span>
2715+
<span class="c"># Forged edges are soft; at 4 mm the poll&#x27;s corners read as a sawn block.</span>
2716+
HEAD_CHAMFER = <span class="n">0.0070</span>
27052717
HAFT_LEN = <span class="n">0.68</span>
27062718
HAFT_DROP = <span class="n">0.024</span>
27072719
HAFT_BOW = <span class="n">0.020</span>
26 Bytes
Loading

‎docs/gallery/index.html‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1240,7 +1240,7 @@ <h2><a href="signpost/">signpost</a></h2>
12401240
<div class="card-body">
12411241
<h2><a href="chopping-block/">chopping-block</a></h2>
12421242
<p class="teaches">A procedural log-round chopping block with a riveted iron hoop and a felling axe buried in the sawn face, through UVs, bake, LOD, collider, and Unity glTF, asserting recomputed budgets rather than an API contract.</p>
1243-
<p class="witnesses"><span class="tag">witnesses</span> Recomputed: 1800 tris, four materials with 180 bark / 216 grain / 404 metal / 176 haft faces, UVs in 0..1 with zero AABB overlap, outer AABB 0.526 x 0.526 x 1.006 m, LOD ratios in band, convex collider 538 tris, non-empty glTF. Hygiene: zero non-manifold edges, loose geometry, doubles, zero-area faces, n-gons and coplanar disjoint face pairs, grounded at zmin 0, log plumb to 1e-7, oval haft 1.35 wide-to-thick. Joint fit: six shells, 18.0 mm haft clearance in the eye, 78.7 mm bit bury, hoop biting 3.7-4.2 mm into the log on every segment, two lap rivets seated 1.50 and 1.54 mm. --fat-haft exits 17 on eye clearance; --round-band and --float-rivets exit 18 on their seats; --round-haft exits 19 on the haft section.</p>
1243+
<p class="witnesses"><span class="tag">witnesses</span> Recomputed: 1816 tris, four materials with 180 bark / 216 grain / 412 metal / 176 haft faces, UVs in 0..1 with zero AABB overlap, outer AABB 0.526 x 0.526 x 1.006 m, LOD ratios in band, convex collider 538 tris, non-empty glTF. Hygiene: zero non-manifold edges, loose geometry, doubles, zero-area faces, n-gons and coplanar disjoint face pairs, grounded at zmin 0, log plumb to 1e-7, oval haft 1.35 wide-to-thick. Joint fit: six shells, 13.5 mm haft clearance in the eye, 78.7 mm bit bury, hoop biting 3.7-4.2 mm into the log on every segment, two lap rivets seated 1.50 and 1.54 mm. --fat-haft exits 17 on eye clearance; --round-band and --float-rivets exit 18 on their seats; --round-haft exits 19 on the haft section.</p>
12441244
<a class="card-link" href="chopping-block/">View showcase piece<span class="sr-only"> chopping-block</span> <span aria-hidden="true">&rarr;</span></a>
12451245
</div>
12461246
</article>

‎showcase/chopping-block/README.md‎

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -48,19 +48,20 @@ materials, UVs, evaluated LOD, collider, or export file.
4848

4949
| Axis | Declared | Measured (4.5.11 / 5.1.2 / 5.2.1) |
5050
| --- | --- | --- |
51-
| Base triangles | 1730–1870 | 1800 / 1800 / 1800 |
51+
| Base triangles | 1730–1870 | 1816 / 1816 / 1816 |
5252
| LOD1 ratio | 0.32–0.62 of base | 0.5000 / 0.5000 / 0.5000 |
53-
| LOD2 ratio | 0.10–0.35 of base | 0.2200 / 0.2200 / 0.2200 |
54-
| Materials | exactly 4 distinct; ≥160 bark, ≥90 grain, ≥170 metal, ≥150 haft faces | 4 slots; 180 / 216 / 404 / 176 |
53+
| LOD2 ratio | 0.10–0.35 of base | 0.2192 / 0.2192 / 0.2192 |
54+
| Materials | exactly 4 distinct; ≥160 bark, ≥90 grain, ≥170 metal, ≥150 haft faces | 4 slots; 180 / 216 / 412 / 176 |
5555
| UVs | in `0..1`, AABB overlap ≤ 1e-5 | in range, overlap 0 |
5656
| Outer AABB | (0.526, 0.526, 1.006) m ± 0.012 | (0.5264, 0.5264, 1.0064) |
5757
| Collider tris | ≤ 560 | 538 |
58-
| Export | written, size > 0 | 180588 / 180588 / 180572 bytes |
58+
| Export | written, size > 0 | 181676 / 181676 / 181660 bytes |
5959

6060
The triangle band, the outer AABB and the collider ceiling were re-fitted
6161
in the quality pass that added the lap, the rivets and the 16-segment
6262
oval haft (1472 → 1800 triangles, collider 434 → 538). The triangle band
63-
is centred on the new measurement, ± 4 %.
63+
is centred on that measurement, ± 4 %. The axe-head reprofile (a waist
64+
behind the eye) added one head section: 1800 → 1816.
6465

6566
### Hygiene
6667

@@ -87,11 +88,11 @@ two rivets through the hoop's lap.
8788
| Axis | Declared | Measured (all three) |
8889
| --- | --- | --- |
8990
| Shell count | exactly 6 | 6 |
90-
| Haft clearance inside the eye | ≥ 0.006 m | 0.01800 |
91-
| Haft engagement through the eye | ≥ 0.020 m | 0.08225 |
92-
| Haft breakout margin below the head | ≥ 0.006 m | 0.02175 |
91+
| Haft clearance inside the eye | ≥ 0.006 m | 0.01350 |
92+
| Haft engagement through the eye | ≥ 0.020 m | 0.06925 |
93+
| Haft breakout margin below the head | ≥ 0.006 m | 0.00875 |
9394
| Bit bury below the sawn top | ≥ 0.030 m | 0.07871 |
94-
| Bit inset from the rim | ≥ 0.030 m | 0.14647 |
95+
| Bit inset from the rim | ≥ 0.030 m | 0.16808 |
9596
| Hoop bite into the log, every segment | 0.002–0.007 m | 0.00371–0.00422 |
9697
| Haft clearance above the log | ≥ 0.015 m, 0 verts inside | 0.07531, 0 |
9798
| Rivet seat into the hoop, each rivet | 0.0008–0.0025 m | 0.00150, 0.00154 |

‎showcase/chopping-block/chopping_block.py‎

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -155,17 +155,23 @@
155155
# 530 mm block it read as a trowel. The head is sized off the block, not
156156
# off an absolute idea of an axe -- half the block diameter is what makes
157157
# the two objects look like they belong in the same scene.
158+
# Side profile: poll and eye stand the same height, the cheek waists in
159+
# behind the eye, and only then does the blade flare to the bit. A head that
160+
# grew steadily from a 56 mm poll to the 149 mm edge was a wedge with a flat
161+
# end, and above the wood it read as a box with a lid.
158162
HEAD_SECTIONS = (
159-
(0.000, 0.0280, 0.0215),
160-
(0.028, 0.0340, 0.0270),
161-
(0.150, 0.0485, 0.0385),
162-
(0.330, 0.0520, 0.0280),
163-
(0.620, 0.0615, 0.0160),
164-
(0.870, 0.0710, 0.0062),
163+
(0.000, 0.0300, 0.0205),
164+
(0.030, 0.0350, 0.0260),
165+
(0.150, 0.0390, 0.0340),
166+
(0.330, 0.0390, 0.0300),
167+
(0.490, 0.0325, 0.0190),
168+
(0.680, 0.0450, 0.0115),
169+
(0.870, 0.0660, 0.0055),
165170
(0.980, 0.0745, 0.0018),
166171
(1.000, 0.0728, 0.0013),
167172
)
168-
HEAD_CHAMFER = 0.0042
173+
# Forged edges are soft; at 4 mm the poll's corners read as a sawn block.
174+
HEAD_CHAMFER = 0.0070
169175
HAFT_LEN = 0.68
170176
HAFT_DROP = 0.024
171177
HAFT_BOW = 0.020
318 Bytes
Loading

0 commit comments

Comments
 (0)