feat(syntax): axiom 4 — project a point onto a line #16

Merged
toph merged 9 commits from feat/axiom4 into main 2026-06-30 10:05:20 +00:00
Owner

Adds axiom 4 — map .p onto --l1 perp --l2 — the fold that projects point .p onto line --l1 with a crease perpendicular to --l2.

Classic Justin operation ④, which is Wikipedia/Huzita-Hatori O7 — not Wikipedia O4 (that numbering is the already-shipped axiom 3, perpendicular-through-a-point). Beloch tracks classic Justin numbering throughout; the spec and journal spell the clash out so it isn't re-conflated.

  • Geom.project_crease — pure construction: line through .p parallel to --l2, meet --l1 at Q, perpendicular-bisect .pQ. Stays in ℚ, no square roots — unlike axiom 5.
  • At most one solution, so no toward selector. Errors when --l1 ∥ --l2; when .p already lies on --l1, the crease is the perpendicular to --l2 through .p.
  • Spec §4.5a, example examples/project.bel (project a corner onto the diagonal, crease ⊥ an edge).

Worked example — examples/project.bel: fold corner .c onto a slanted line --l1 (slope ½), with the crease forced perpendicular to a second slanted line --l2 (slope 2). Neither line is a diagonal.

Crease pattern — the axiom 4 · project crease (orange) sits perpendicular to --l2:

axiom 4 crease pattern

Folded.c lands on --l1; the V-tip of the flap is the projected corner:

axiom 4 folded

Adds axiom 4 — `map .p onto --l1 perp --l2` — the fold that projects point `.p` onto line `--l1` with a crease perpendicular to `--l2`. Classic Justin operation ④, which is Wikipedia/Huzita-Hatori **O7** — not Wikipedia O4 (that numbering is the already-shipped axiom 3, perpendicular-through-a-point). Beloch tracks classic Justin numbering throughout; the spec and journal spell the clash out so it isn't re-conflated. - `Geom.project_crease` — pure construction: line through `.p` parallel to `--l2`, meet `--l1` at `Q`, perpendicular-bisect `.p`–`Q`. Stays in ℚ, no square roots — unlike axiom 5. - At most one solution, so no `toward` selector. Errors when `--l1 ∥ --l2`; when `.p` already lies on `--l1`, the crease is the perpendicular to `--l2` through `.p`. - Spec §4.5a, example `examples/project.bel` (project a corner onto the diagonal, crease ⊥ an edge). --- Worked example — `examples/project.bel`: fold corner `.c` onto a slanted line `--l1` (slope ½), with the crease forced perpendicular to a second slanted line `--l2` (slope 2). Neither line is a diagonal. **Crease pattern** — the `axiom 4 · project` crease (orange) sits perpendicular to `--l2`: ![axiom 4 crease pattern](https://git.toph.so/attachments/ec068731-6b65-4322-8c67-aff420a23bb1) **Folded** — `.c` lands on `--l1`; the V-tip of the flap is the projected corner: ![axiom 4 folded](https://git.toph.so/attachments/3284893f-2c81-40a8-87c8-405989896399)
toph merged commit f854bbdea4 into main 2026-06-30 10:05:20 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
toph/beloch!16
No description provided.