This commit is contained in:
2026-09-09 18:06:21 +08:00
parent 161af68fe3
commit 45b9f9ed5d
79 changed files with 1167 additions and 1532 deletions
@@ -101,16 +101,12 @@ of each row, disabled once only two pairs remain.</li>
<li><strong>The caption</strong> — a one-line statement of the type: a solid of revolution defined by (Z, R) pairs,
minimum two.</li>
</ul>
<p>The desktop control is shaped differently for the same job: a title, an <strong>Add Point</strong> and a <strong>Clear
All</strong> button, and a data grid with Z, R and Actions columns. Clear All has no web counterpart — it
confirms, wipes the list and re-seeds a single pair.</p>
<h2 id="behavior">Behavior</h2>
<ul>
<li><strong>A cell commits on blur or Enter.</strong> An empty or non-finite entry is dropped rather than written,
and a negative radius is clamped to zero — on the client and again on the server.</li>
<li><strong>The floor is two pairs, and both ends enforce it.</strong> The web disables the remove button at two
and the controller refuses the call below two. The desktop client blocks only at one, with a
warning dialog.</li>
<li><strong>The floor is two pairs, and both ends enforce it.</strong> The remove button is disabled at two and
the controller refuses the call below two.</li>
<li><strong>Creating one seeds three pairs.</strong> The create endpoint starts a new cylindroid at (0, 20),
(30, 20) and (60, 10) rather than empty.</li>
<li><strong>Four endpoints ship without a caller.</strong> The controller exposes <code>GetPairCount</code>, <code>GetPairAt</code>,
@@ -119,12 +115,10 @@ warning dialog.</li>
<h2 id="tessellation-resolution-is-not-a-property-of-the-shape">Tessellation Resolution Is Not a Property of the Shape</h2>
<p>There is no longitude count, and no per-instance resolution, on a cylindroid. The STL longitude
number is derived internally at generation time from a resolution the caller supplies; the type
carries only a static default. The desktop client once had a Longitude Number field and its handler
was deleted when the backing property went away.</p>
carries only a static default.</p>
<p>Where resolution <em>is</em> exposed, it belongs to the holder rather than to the shape: the Tool House
cylindroid holder carries a <strong>Resolution</strong> surface beside its Geometry one — a tree node on the web,
a tab in the desktop client — offering a linear resolution in millimetres and an angle resolution in
degrees, described in the app as the tessellation resolution used for display and collision meshing.</p>
cylindroid holder carries a <strong>Resolution</strong> tree node beside its Geometry one, offering a linear
resolution in millimetres and an angle resolution in degrees, described in the app as the tessellation resolution used for display and collision meshing.</p>
<h2 id="source-code-path">Source Code Path</h2>
<p>See <a class="xref" href="../index.html">HiNC App Anatomy</a> for git repository links.</p>
<p>HiNC-2025-webservice (Quasar CLI SPA):</p>