Skip to content
Shapemetry

Mesh

Half-edge polygon mesh arena (handle). Not TriangleMesh (indexed soup). Planar face UV is a 16-float matrix (uvMatrix on the face wire): Mesh.uvPlanar / Mesh.uvFromOrigin build it, Mesh.uvApply maps a world point → [u,v]. Layout: [ux,uy,uz,uOffset, vx,vy,vz,vOffset, 0,0,0,0, 0,0,0,1]. Tessellation bakes UVs into the triangle soup.

import { Mesh } from '@huukhanhnguyen/geometry'

API reference

Mesh.bevel

Mesh.bevel(id: number, edges: Uint32Array, radius: number, segments: number, radius2?: number | null): void

Wasm: mesh_bevel

Mesh.bevelVertices

Mesh.bevelVertices(id: number, vertices: Uint32Array, radius: number, segments: number): void

Wasm: mesh_bevel_vertices

Mesh.boundingBox

Mesh.boundingBox(id: number): Float64Array

Wasm: mesh_bounding_box

Mesh.box

Mesh.box(width: number, depth: number, height: number): number

Wasm: mesh_box

Mesh.chamfer

Mesh.chamfer(id: number, edges: Uint32Array, distance1: number, distance2: number): void

Wasm: mesh_chamfer

Mesh.clone

Mesh.clone(id: number): number

Wasm: mesh_clone

Mesh.cone

Mesh.cone(radius_bottom: number, radius_top: number, height: number, sides: number): number

Wasm: mesh_cone

Mesh.containsPoint

Mesh.containsPoint(id: number, x: number, y: number, z: number): boolean

Wasm: mesh_contains

Mesh.cornerCount

Mesh.cornerCount(id: number): number

Wasm: mesh_corner_count

Mesh.deleteVertices

Mesh.deleteVertices(id: number, vertices: Uint32Array): void

Wasm: mesh_delete_vertices

Mesh.dissolveEdges

Mesh.dissolveEdges(id: number, edges: Uint32Array): void

Wasm: mesh_dissolve_edges

Mesh.dump

Mesh.dump(id: number): string

Wasm: mesh_dump

Mesh.edgeCount

Mesh.edgeCount(id: number): number

Wasm: mesh_edge_count

Mesh.edgesWithBothEndpointsInBox

Mesh.edgesWithBothEndpointsInBox(id: number, min: Float64Array, max: Float64Array): Uint32Array

Wasm: mesh_edges_with_both_endpoints_in_box

Mesh.edgeVertices

Mesh.edgeVertices(id: number): Uint32Array

Wasm: mesh_edge_vertices

Mesh.extrude

Mesh.extrude(id: number, faces: Uint32Array, thickness: number): void

Wasm: mesh_extrude

Mesh.extrudeEdges

Mesh.extrudeEdges(id: number, edges: Uint32Array, dx: number, dy: number, dz: number, distance: number): void

Wasm: mesh_extrude_edges

Mesh.faceCount

Mesh.faceCount(id: number): number

Wasm: mesh_face_count

Mesh.faceOffsets

Mesh.faceOffsets(id: number): Uint32Array

Wasm: mesh_face_offsets

Mesh.faceVertices

Mesh.faceVertices(id: number): Uint32Array

Wasm: mesh_face_vertices

Mesh.free

Mesh.free(id: number): boolean

Wasm: mesh_free

Mesh.fromBrep

Mesh.fromBrep(json: string): number

Wasm: mesh_from_brep

Mesh.fromTriangleMesh

Mesh.fromTriangleMesh(positions: Float64Array, indices: Uint32Array, uvs: Float64Array): number

Wasm: mesh_from_triangle_mesh

Mesh.intersect

Mesh.intersect(id: number, positions: Float64Array, indices: Uint32Array): number

Wasm: mesh_intersect

Mesh.isSolid

Mesh.isSolid(id: number): boolean

Wasm: mesh_is_solid

Mesh.lattice

Mesh.lattice(id: number, options_json: string): void

Wasm: mesh_lattice

Mesh.load

Mesh.load(json: string): number

Wasm: mesh_load

Mesh.positions

Mesh.positions(id: number): Float64Array

Wasm: mesh_positions

Mesh.reverse

Mesh.reverse(id: number): number

Wasm: mesh_reverse

Mesh.splitByPlane

Mesh.splitByPlane(id: number, plane: Float64Array): string

Wasm: mesh_split_by_plane

Mesh.subdivide

Mesh.subdivide(id: number, options_json: string): void

Wasm: mesh_subdivide

Mesh.subtract

Mesh.subtract(id: number, positions: Float64Array, indices: Uint32Array): number

Wasm: mesh_subtract

Mesh.surfaceArea

Mesh.surfaceArea(id: number): number

Wasm: mesh_surface_area

Mesh.sweep

Mesh.sweep(path: Float64Array, profile: Float64Array, caps: boolean): number

Wasm: mesh_sweep

Mesh.tessellate

Mesh.tessellate(id: number): Float64Array

Wasm: mesh_tessellate

Mesh.tessellateJson

Mesh.tessellateJson(id: number): string

Wasm: mesh_tessellate_json

Mesh.thicken

Mesh.thicken(id: number, thickness: number, options_json: string): void

Wasm: mesh_thicken

Mesh.toBrep

Mesh.toBrep(id: number): string

Wasm: mesh_to_brep

Mesh.transform

Mesh.transform(id: number, matrix: Float64Array): number

Wasm: mesh_transform

Mesh.transformVertices

Mesh.transformVertices(id: number, vertices: Uint32Array, matrix: Float64Array): void

Wasm: mesh_transform_vertices

Mesh.union

Mesh.union(id: number, positions: Float64Array, indices: Uint32Array): number

Wasm: mesh_union

Mesh.uvApply

Mesh.uvApply(matrix: Float64Array, x: number, y: number, z: number): Float64Array

Wasm: mesh_uv_apply

Mesh.uvFromOrigin

Mesh.uvFromOrigin(origin_x: number, origin_y: number, origin_z: number, u_axis_x: number, u_axis_y: number, u_axis_z: number, v_axis_x: number, v_axis_y: number, v_axis_z: number): Float64Array

Wasm: mesh_uv_from_origin

Mesh.uvPlanar

Mesh.uvPlanar(u_axis_x: number, u_axis_y: number, u_axis_z: number, v_axis_x: number, v_axis_y: number, v_axis_z: number, u_offset: number, v_offset: number): Float64Array

Wasm: mesh_uv_planar

Mesh.vertexCount

Mesh.vertexCount(id: number): number

Wasm: mesh_vertex_count

Mesh.verticesInBox

Mesh.verticesInBox(id: number, min: Float64Array, max: Float64Array): Uint32Array

Wasm: mesh_vertices_in_box

Mesh.volume

Mesh.volume(id: number): number

Wasm: mesh_volume

See GEOMETRY_CATALOG.md for catalog ownership.

Last updated: 📖 1 min readEdit on GitHub