@twinfinity/geometry
v6.1.2-ci.31615-beta
Published
Twinfinity geometry processing - WASM-based mesh operations
Readme
@twinfinity/geometry
Foundation math utilities for BIM geometry processing. Provides Vec3 tuple math, plane operations, polyline grouping, fill triangulation, BVH occlusion, section render types, and measurement formatting.
This package uses Vec3 ([number, number, number] tuples) — not Babylon.js Vector3.
Quick Start
Plane operations
import { planeFromPointAndNormal, type Vec3 } from '@twinfinity/geometry';
const point: Vec3 = [0, 1.5, 0];
const normal: Vec3 = [0, 1, 0];
const plane = planeFromPointAndNormal(point, normal);Plane basis and projection
import { buildPlaneBasis, project3DTo2D, unproject2DTo3D, type Vec3 } from '@twinfinity/geometry';
const basis = buildPlaneBasis([0, 1.5, 0], [0, 1, 0]);
const projected = project3DTo2D([5, 1.5, 3], basis);
const world = unproject2DTo3D(projected.x, projected.y, projected.depth, basis);Polyline grouping and fill triangulation
import { cleanupSegments, groupPlaneSectionPolylines, buildPlaneSectionFillGeometry } from '@twinfinity/geometry';
// Weld + group raw segments into polylines
const { segments, polylines } = cleanupSegments(rawSegments, 1e-5);
// Group closed polylines into polygon shells with holes
const polygons = groupPlaneSectionPolylines(polylines, plane);
// Triangulate for fill rendering
const fill = buildPlaneSectionFillGeometry(polylines, plane);Measurement formatting
import { formatLength, formatArea, formatElevation } from '@twinfinity/geometry';
formatLength(1.234, 'mm'); // "1234.0 mm"
formatLength(1.234, 'm', 2); // "1.23 m"
formatArea(25.5, 'm'); // "25.5 m²"
formatElevation(3.2, 'm'); // "+3.2 m"geometry vs product-geometry: This package provides low-level math and algorithms. For high-level BIM section computation (SlabSection, hidden lines, plane-product intersections), use
@twinfinity/product-geometry.
