Skip to content

Outer Wall Bracing Contact Points (Issue #11)#21

Merged
CyberCraftLab merged 4 commits into
mainfrom
11-bracing-contact-points
May 15, 2026
Merged

Outer Wall Bracing Contact Points (Issue #11)#21
CyberCraftLab merged 4 commits into
mainfrom
11-bracing-contact-points

Conversation

@CyberCraftLab

Copy link
Copy Markdown
Owner

Closes #11

CyberCraftLab and others added 4 commits May 15, 2026 22:51
Add Helix.BracingContactPoints (default 60, range 4..500). It means
"number of times the bracing touches the outer wall" — the count you
can verify by eye in the viewport. The generator samples 2x this many
points internally so the alternating outer/inner pattern closes cleanly
regardless of parity (no even-only constraint on the user-facing value).

Bracing density is now independent of toolpath sampling density; you can
sample the outer wall at 360 frames/layer for smooth motion while bracing
with 30 contact points for chunky teeth (or the inverse).

Stepper greys out unless Layer Slice and Outer Wall Bracing are both on.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Add ClayBeadGeometry.ComputeWidth(D, H) as the single source of truth
for deposited bead width (W = D²/H, with W=D when H==D). The visualizer
now consumes it; previously inlined the formula at the elliptical-tube
build site.

Add a wallOffset parameter to ZigzagGenerator.BuildSingleContour and
apply it uniformly to both outer-contact and inner-anchor points so
the user-facing inwardDistance stays "tooth depth" (unchanged) and the
whole bracing pattern shifts inboard.

At the slice site pass wallOffset = W/2 so the bracing bead's outer
edge is tangent at the outer-wall *contour centerline* — the bracing
bead overlaps the wall bead by half a bead width ("french kiss"). The
half-overlap gives a solid structural bond instead of an edge-to-edge
tangent kiss that would leave no real contact area.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Add Helix.SinusoidalBracing (default false). When checked, the outer-
wall bracing follows a smooth cosine wave instead of the sharp triangle-
wave zigzag — same contact-point count, gentler on robot accel/decel
since the path never reverses direction at a sharp corner.

Math: offset(s) = wallOffset + (A/2)·(1 − cos(2π·N·s/L)) where N is the
contact-point count, A is the user-prompted inward distance, s is
arclength along the contour, L is total contour length. Cosine peaks
(cos=+1 → offset=wallOffset) are the wall kisses; troughs (cos=−1 →
offset=wallOffset+A) are the inner anchors. One period per contact
point, internally sampled at 12 points per period.

Reuses the same french-kiss baseline (wallOffset = W/2) and seam +
winding handling as BuildSingleContour so wave peaks stack across
layers instead of drifting. Hairpin removal is skipped — smooth path
has no sharp folds to clean up.

Checkbox greyed out unless Layer Slice + Bracing are both on, same
gating as Bracing contact points.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- README "Toolpath modes" section: mention sinusoidal pattern toggle,
  BracingContactPoints decoupling, and the half-bead "french kiss"
  overlap with the outer-wall bead.
- README "Rhino layers" table: Bracing Toolpath row notes both zigzag
  and sinusoidal output.
- README Plugin-structure tree: ZigzagGenerator description updated to
  list both BuildSingleContour and BuildSinusoidalSingleContour, plus
  the half-bead kiss offset.
- README "Using the plugin" Settings list: add Bracing contact points
  and Sinusoidal bracing.
- ARCHITECTURE Models/ tree: add ClayBeadGeometry.cs entry.
- ARCHITECTURE Zigzag/ tree: name the two generators.
- ARCHITECTURE HelixParameters class diagram: add BracingContactPoints
  and SinusoidalBracing fields.

CHANGELOG + wiki updates handled separately (CHANGELOG bundled with
next alpha-tag prep; wiki has its own repo).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@CyberCraftLab CyberCraftLab merged commit 745f9c6 into main May 15, 2026
2 checks passed
@CyberCraftLab CyberCraftLab deleted the 11-bracing-contact-points branch May 15, 2026 21:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Outer Wall Bracing Contact Points

1 participant