Fix #7525: Extrude & Bevel cuts sharp corners square instead of spiking

An inset ring limited a corner's miter by moving the corner four times
the bevel width along its bisector. At a corner sharper than about 29°
that the bevel opens (a convex corner with the bevel outside, a notch
with it inside), the bevel still ran out to a spike up to four times
the width and no longer lined up with the art. With the bevel outside,
the wall behind it spiked the same way.

Such a corner is now given twice in the outline before the solid is
built, and each copy moves along its own edge's normal, so the bevel
(and, with the bevel outside, the wall) cuts the corner square, as a
bevel join cuts a stroke. Corners within the limit keep their miters,
and corners where the inset edges meet keep the four-times limit.

A cap's outline skips the straight segment of no length between the
two copies where they do not move apart.

Docs: docs/three-d.md, docs/target-app-parity.md.
This commit is contained in:
dotCooCoo
2026-11-14 03:10:33 -08:00
parent edb228ac33
commit cdbd079ee9
6 changed files with 141 additions and 10 deletions
+4 -2
View File
@@ -85,8 +85,10 @@ object is where the art was.
| Bevel Inside | The bevel carved into the shape (the front face shrinks) instead of added around it (the walls stand outside the art). |
| Bevel both sides | The back is bevelled too. |
Holes stay holes, with walls of their own. Bevels move each corner along its bisector (mitres are limited to four
times the width), so a bevel wider than a narrow part of the shape folds over itself. Each facet has a seam ([Seams](#seams)).
Holes stay holes, with walls of their own. Bevels move each corner along its bisector. A corner the bevel opens (a
sharp point with the bevel outside, a narrow notch with it inside) whose miter would reach past four times the width is
cut square across instead; at the other corners the miter is limited to four times the width. A bevel wider than a
narrow part of the shape folds over itself. Each facet has a seam ([Seams](#seams)).
## Inflate