Skip to content

Shapemetry API


Shapemetry API / TriangleMesh

Class: TriangleMesh

Defined in: triangleMesh/TriangleMesh.ts:20

Level-0 mesh: every face is a triangle, stored as GPU-friendly flat arrays (positions/normals/indices). Implements Shell; knows no higher mesh type.

Implements

  • Shell

Constructors

Constructor

new TriangleMesh(positions, indices, uvs?, normals?, groups?, quadGrids?): TriangleMesh

Defined in: triangleMesh/TriangleMesh.ts:21

Parameters

positions

number[]

indices

number[]

uvs?

number[] = []

normals?

number[] = []

groups?

TriangleMeshGroup[] = []

quadGrids?

QuadGrid[] = []

Returns

TriangleMesh

Properties

positions

readonly positions: number[]

Defined in: triangleMesh/TriangleMesh.ts:22


indices

readonly indices: number[]

Defined in: triangleMesh/TriangleMesh.ts:23


uvs

readonly uvs: number[] = []

Defined in: triangleMesh/TriangleMesh.ts:24


normals

readonly normals: number[] = []

Defined in: triangleMesh/TriangleMesh.ts:25


groups

readonly groups: TriangleMeshGroup[] = []

Defined in: triangleMesh/TriangleMesh.ts:26


quadGrids

readonly quadGrids: QuadGrid[] = []

Defined in: triangleMesh/TriangleMesh.ts:27


fromPolygonMesh

static fromPolygonMesh: (json) => TriangleMesh

Defined in: triangleMesh/TriangleMesh.ts:41

Round-trip via Mesh: build a half-edge mesh from the polygon JSON (handles hole triangulation + T-junction stitch), then flatten to triangle arrays.

Wired from mesh/Mesh.ts at module load to avoid a circular import at the top of this file (Mesh already imports TriangleMesh).

Parameters

json

PolygonMeshJSON

Returns

TriangleMesh


toPolygonMesh

toPolygonMesh: () => PolygonMeshJSON

Defined in: triangleMesh/TriangleMesh.ts:49

Round-trip via Mesh: rebuild half-edge topology, run the coplanar-merge pass, and serialize to wire format.

Wired from mesh/Mesh.ts at module load (see above).

Returns

PolygonMeshJSON

Accessors

isSolid

Get Signature

get isSolid(): boolean

Defined in: triangleMesh/TriangleMesh.ts:166

Returns

boolean

Implementation of

Shell.isSolid

Methods

toJSON()

toJSON(): TriangleMeshJSON

Defined in: triangleMesh/TriangleMesh.ts:30

Returns

TriangleMeshJSON

Implementation of

Shell.toJSON


fromJSON()

static fromJSON(d): TriangleMesh

Defined in: triangleMesh/TriangleMesh.ts:31

Parameters

d

TriangleMeshJSON

Returns

TriangleMesh


toTriangleMesh()

toTriangleMesh(): TriangleMesh

Defined in: triangleMesh/TriangleMesh.ts:51

Returns

TriangleMesh

Implementation of

Shell.toTriangleMesh


clone()

clone(): TriangleMesh

Defined in: triangleMesh/TriangleMesh.ts:52

Returns

TriangleMesh

Implementation of

Shell.clone


quadGrid()

quadGrid(): QuadGrid[]

Defined in: triangleMesh/TriangleMesh.ts:54

Returns

QuadGrid[]


fromQuadGrids()

static fromQuadGrids(grids): TriangleMesh

Defined in: triangleMesh/TriangleMesh.ts:56

Parameters

grids

QuadGrid[]

Returns

TriangleMesh


boundingBox()

boundingBox(): BoundingBox

Defined in: triangleMesh/TriangleMesh.ts:73

Returns

BoundingBox

Implementation of

Shell.boundingBox


surfaceArea()

surfaceArea(): number

Defined in: triangleMesh/TriangleMesh.ts:85

Returns

number

Implementation of

Shell.surfaceArea


volume()

volume(): number

Defined in: triangleMesh/TriangleMesh.ts:98

Returns

number

Implementation of

Shell.volume


uvMatrixAt()

uvMatrixAt(faceIndex, normal?): Transformation | undefined

Defined in: triangleMesh/TriangleMesh.ts:112

Affine map from world position to (u,v) coords of the triangle at faceIndex. Undefined if the face has no UVs. Uses the face's plane frame; collapses to a planar projection if the triangle is UV-degenerate.

Parameters

faceIndex

number

normal?

Vector

Returns

Transformation | undefined


faceNormal()

faceNormal(faceIndex): Vector

Defined in: triangleMesh/TriangleMesh.ts:156

Unit normal of the triangle at this.indices[faceIndex*3 .. faceIndex*3+2]. Zero vector if degenerate.

Parameters

faceIndex

number

Returns

Vector


transform()

transform(m): TriangleMesh

Defined in: triangleMesh/TriangleMesh.ts:216

Parameters

m

Transformation

Returns

TriangleMesh

Implementation of

Shell.transform


reverse()

reverse(): TriangleMesh

Defined in: triangleMesh/TriangleMesh.ts:252

Returns

TriangleMesh

Implementation of

Shell.reverse


contains()

contains(p): boolean

Defined in: triangleMesh/TriangleMesh.ts:262

Ray casting (Möller–Trumbore, ray direction +X). Odd intersection count = inside.

Parameters

p

Point

Returns

boolean

Implementation of

Shell.contains


splitByPlane()

splitByPlane(plane): SplitByPlaneResult<TriangleMesh>

Defined in: triangleMesh/TriangleMesh.ts:292

Clip by plane. Returns above/below halves plus the cut boundary as a PolyShape (rings live in the plane's local frame; PolyShape.transformation lifts back to 3D). Cap on above/below is filled via convex hull of cut points (correct only for convex sections); for concave sections use boundaries to retriangulate.

Parameters

plane

Plane

Returns

SplitByPlaneResult<TriangleMesh>

Implementation of

Shell.splitByPlane


union()

union(other): TriangleMesh

Defined in: triangleMesh/TriangleMesh.ts:552

Parameters

other

Shell

Returns

TriangleMesh

Implementation of

Shell.union


intersect()

intersect(other): TriangleMesh

Defined in: triangleMesh/TriangleMesh.ts:553

Parameters

other

Shell

Returns

TriangleMesh

Implementation of

Shell.intersect


subtract()

subtract(other): TriangleMesh

Defined in: triangleMesh/TriangleMesh.ts:554

Parameters

other

Shell

Returns

TriangleMesh

Implementation of

Shell.subtract


xor()

xor(other): TriangleMesh

Defined in: triangleMesh/TriangleMesh.ts:555

Parameters

other

Shell

Returns

TriangleMesh

Implementation of

Shell.xor