/**
 * Per-triangle stride in the Float64 decomposition buffer used by the
 * narrowphase to consume non-convex shapes (heightmaps, meshes).
 *
 * Layout per triangle, starting at buffer[base]:
 *
 *   [base +  0]  vA.x
 *   [base +  1]  vA.y
 *   [base +  2]  vA.z
 *   [base +  3]  vB.x
 *   [base +  4]  vB.y
 *   [base +  5]  vB.z
 *   [base +  6]  vC.x
 *   [base +  7]  vC.y
 *   [base +  8]  vC.z
 *   [base +  9]  feature_id  (uint32 packed as f64 — safe to 2^53)
 *
 * Coordinates are in the producer shape's local frame. The feature_id is
 * stable across frames for the same triangle of the same shape — the
 * manifold cache uses it as the warm-start match key.
 *
 * Stride 10 (rather than 9) is the small cost we pay for clean warm-start
 * matching; see the discussion in PLAN.md's "Pair-key → slot map" section
 * for why ID-based matching beats position-distance matching when shapes
 * slide along curved surfaces.
 *
 * @readonly
 * @type {number}
 */
export const TRIANGLE_FLOAT_STRIDE = 10;

/**
 * Float offset of feature_id within a triangle entry.
 * @readonly
 * @type {number}
 */
export const TRIANGLE_FEATURE_ID_OFFSET = 9;
