COLUMN / geometry. The lathe, the fittings and the small parts the Assent
Engine is built out of.
Everything here writes into one accumulator (`G.new()`) and comes out of
`G.upload()` as a runtime MeshHandle, so a slice can build real modelled
geometry at install time without minting a single asset. Winding is
counter-clockwise seen from outside, which is what the renderer draws.
Owned by the COLUMN slice.
vlen(x: number, y: number, z: number) → number
| arg | type | description |
|---|
| x | number | |
| y | number | |
| z | number | |
v(m: Mesh, x: number, y: number, z: number, nx: number, ny: number, nz: number, u: number, w: number) → number
| arg | type | description |
|---|
| m | Mesh | |
| x | number | |
| y | number | |
| z | number | |
| nx | number | |
| ny | number | |
| nz | number | |
| u | number | |
| w | number | |
tri(m: Mesh, a: number, b: number, c: number) → void
| arg | type | description |
|---|
| m | Mesh | |
| a | number | |
| b | number | |
| c | number | |
quad(m: Mesh, a: number, b: number, c: number, d: number) → void
a-b-c-d counter-clockwise seen from the front face.
| arg | type | description |
|---|
| m | Mesh | |
| a | number | |
| b | number | |
| c | number | |
| d | number | |
mul3(a: { number }, b: { number }) → void
| arg | type | description |
|---|
| a | { number } | |
| b | { number } | |
frame(px: number, py: number, pz: number, rx: number, ry: number, rz: number) → Frame
Euler in RADIANS, applied Ry * Rx * Rz.
| arg | type | description |
|---|
| px | number | |
| py | number | |
| pz | number | |
| rx | number | |
| ry | number | |
| rz | number | |
onRing(theta: number, rad: number, y: number, lift: number?) → Frame
A frame standing on the outside of a cylinder of radius `rad` at angle
`theta` (radians, measured so that theta = -pi/2 is the -Z front face),
height `y`, with local +Z pointing radially OUT and local +Y up.
| arg | type | description |
|---|
| theta | number | |
| rad | number | |
| y | number | |
| lift | number? | |
at(f: Frame, dx: number, dy: number, dz: number) → Frame
The same orientation as `f`, moved by (dx, dy, dz) in f's own axes.
| arg | type | description |
|---|
| f | Frame | |
| dx | number | |
| dy | number | |
| dz | number | |
fp(f: Frame, x: number, y: number, z: number) → void
| arg | type | description |
|---|
| f | Frame | |
| x | number | |
| y | number | |
| z | number | |
fn(f: Frame, x: number, y: number, z: number) → void
| arg | type | description |
|---|
| f | Frame | |
| x | number | |
| y | number | |
| z | number | |
box(m: Mesh, f: Frame, sx: number, sy: number, sz: number, uv: number?) → void
A box centred on the frame's origin, `sx` x `sy` x `sz`. Flat normals.
| arg | type | description |
|---|
| m | Mesh | |
| f | Frame | |
| sx | number | |
| sy | number | |
| sz | number | |
| uv | number? | |
sphere(m: Mesh, f: Frame, rad: number, seg: number?, rings: number?) → void
A sphere centred on the frame's origin.
| arg | type | description |
|---|
| m | Mesh | |
| f | Frame | |
| rad | number | |
| seg | number? | |
| rings | number? | |
torus(m: Mesh, f: Frame, R: number, r: number, su: number?, sv: number?) → void
A torus lying in the frame's XY plane (its axis is local +Z).
| arg | type | description |
|---|
| m | Mesh | |
| f | Frame | |
| R | number | |
| r | number | |
| su | number? | |
| sv | number? | |
torusE(m: Mesh, f: Frame, Rx: number, Ry: number, r: number, su: number?, sv: number?) → void
An elliptical torus in the frame's XY plane — the oval bezel a reliquary
face is set into.
| arg | type | description |
|---|
| m | Mesh | |
| f | Frame | |
| Rx | number | |
| Ry | number | |
| r | number | |
| su | number? | |
| sv | number? | |
arcRail(m: Mesh, rad: number, y: number, a0: number, a1: number, count: number, w: number, h: number, d: number, lift: number?) → void
A row of short boxes following an arc of a cylinder — a curved rail that a
straight bar cannot be, since a chord across this radius sinks into it.
| arg | type | description |
|---|
| m | Mesh | |
| rad | number | |
| y | number | |
| a0 | number | |
| a1 | number | |
| count | number | |
| w | number | |
| h | number | |
| d | number | |
| lift | number? | |
cyl(m: Mesh, f: Frame, rad: number, h: number, seg: number?, capped: boolean?) → void
A capped cylinder along the frame's local +Y, centred on its origin.
| arg | type | description |
|---|
| m | Mesh | |
| f | Frame | |
| rad | number | |
| h | number | |
| seg | number? | |
| capped | boolean? | |
lathe(m: Mesh, pts: { ProfilePoint }, seg: number?, vScale: number?, yOff: number?) → void
A surface of revolution about +Y. `pts` runs bottom to top. A point marked
`hard` gets its own duplicated ring, so a machined step reads as a step
rather than as a smooth swelling.
| arg | type | description |
|---|
| m | Mesh | |
| pts | { ProfilePoint } | |
| seg | number? | |
| vScale | number? | |
| yOff | number? | |
arcBand(m: Mesh, rad: number, y0: number, y1: number, a0: number, a1: number, steps: number?) → void
A band of the cylinder wall between two angles — used for the glow that
reads as fire behind the grille, and for pressed plates on the drum.
| arg | type | description |
|---|
| m | Mesh | |
| rad | number | |
| y0 | number | |
| y1 | number | |
| a0 | number | |
| a1 | number | |
| steps | number? | |
dome(m: Mesh, f: Frame, rx: number, ry: number, rz: number, su: number?, sv: number?) → void
A dome facing local -Z, with independent radii — the reliquary face.
| arg | type | description |
|---|
| m | Mesh | |
| f | Frame | |
| rx | number | |
| ry | number | |
| rz | number | |
| su | number? | |
| sv | number? | |