Cutting & Tiering
This chapter covers the core of Meetpoint Faceting: placing facets precisely where they meet.
The Sweep Operator ->
In faceting, we rarely place planes at arbitrary coordinates. We "sweep" a plane from infinity until it hits a specific target.
Plane = Normal -> Target
1. Cutting to Centerpoint (CP)
The most common starting move. All pavilion mains usually meet at the culet (tip).
// Define symmetry indices (e.g., 96-index gear, 8-fold)
indices = [96, 12, 24, 36, 48, 60, 72, 84]
// Cut Mains at 42 degrees to Centerpoint
p1 := indices |> (i) => Normal(42, i) -> Point(0,0,0)
2. Cutting to Girdle Width
Establishing the size of the stone.
// Cut Girdle facets at 90 degrees, distance 5mm
girdle := indices |> (i) => Normal(90, i) -> 5
Note: The -> operator automatically detects this as a "Set stone size" operation and adds it to the facet notes.
3. Cutting to Meet (Meetpoint Faceting)
The heart of the process. We cut a new tier until it touches a vertex formed by previous tiers.
Example: Cutting Breaks
Assume we have p1 (Mains) and girdle tiers. We want to cut "Break" facets that meet where the Main and Girdle intersect.
-
Find the Meetpoint. Use the
*operator to intersect planes, or*>to find a vertex on the stone.// Find intersection of Main(96) and Girdle(96) // We access the specific planes from our arrays mp = p1[0] * girdle[0] * p1[1] // This defines a point where two mains and a girdle meetAlternatively, use
Contact (*>):// "Look" in the direction of index 6 (between 96 and 12) // The stone's current corner is there. target_v = Normal(0, 6) *> Stone -
Cut to the Meetpoint.
// Breaks at 45 degrees break_indices = [6, 18, 30, 42, 54, 66, 78, 90] p2 := break_indices |> (i) => Normal(45, i) -> target_vNote:
->automatically detects the meetpoint source and adds "Meet [Plane Names]" to the notes.
Tiering
A "Tier" is a group of facets (usually with same angle) cut in a symmetry pattern.
// Helper for 8-fold symmetry
sym8 = (start_idx) => (0..7) |> (k) => (start_idx + k*12) % 96
// Tier 1: Pavilion Mains
t1 := sym8(96) |> (i) => Normal(42, i) -> Point(0,0,0)
// Tier 2: Girdle
t2 := sym8(96) |> (i) => Normal(90, i) -> 5
// Tier 3: Breaks (meeting Mains & Girdle)
// Calculate one meetpoint
ref_mp = t1[0] * t2[0]
// Cut tier
t3 := sym8(6) |> (i) => Normal(45, i) -> ref_mp
Auto-Noting
The -> operator is smart. It analyzes the Target expression to generate cutting instructions.
-> Number: "Set stone size" or "Set girdle width" (if angle is 90).-> Point(0,0,0): "Cut to centerpoint".-> (P1 * P2): "Meet P1, P2".
This makes your code self-documenting for the final diagram generation.