feat(tabletop): add tilt and zStart/zEnd stacking options

Replace the per-part lift with a local Y-axis tilt that fans the stack,
and add zStart/zEnd to ramp the stack's height across the curve so it
arches in 3D. Update the poker deck and docs accordingly.
This commit is contained in:
2026-08-09 23:36:42 +08:00
parent 2da04940c2
commit c5d6dff12d
9 changed files with 127 additions and 28 deletions
+3
View File
@@ -17,6 +17,9 @@ const stacking = z.object({
limit: z.number().optional(),
align: z.enum(['start', 'end', 'center']).optional(),
steps: z.number().optional(),
tilt: z.number().optional(),
zStart: z.number().optional(),
zEnd: z.number().optional(),
});
const route = z.object({
+14
View File
@@ -107,6 +107,20 @@ export interface Stacking {
align?: 'start' | 'end' | 'center';
/** Maximum parts per curve length unit; defaults to `1`. */
steps?: number;
/**
* Rotation in radians per shown part about the card's local Y (long) axis.
* Each part tilts `tilt` more than the previous, fanning the stack so its
* edges stay visible. Works with or without a `curve`.
*/
tilt?: number;
/**
* Height (surface-normal) in mm at the start of the `curve`. The stack
* ramps linearly to `zEnd` across its span, lifting it in 3D. Requires a
* `curve`.
*/
zStart?: number;
/** Height (surface-normal) in mm at the end of the `curve`. */
zEnd?: number;
}
/** How a surface is mounted. `kind` selects the mount type. */