meshing

meshing

Faces, edges, graph filters, quadrangulation, and mesh processing.

Imports

import {
  urquhartFaces, gabrielFaces, relativeNeighborFaces, spannerFaces, dualFaces,
  centroidQuadrangulation, edgeCollapseQuadrangulation, splitQuadrangulation,
  spiralQuadrangulation, matchingQuadrangulation,
  smoothMesh, subdivideMesh, simplifyMesh, stochasticMerge, areaMerge,
  extractInnerEdges, extractInnerVertices, findContainingFace, splitEdges,
  findBreaks, fixBreaks, fixBrokenFaces, findIslands,
  radialSortFaces, centroidSortFaces, meshing,
} from 'pattapatta'

Graph faces

FunctionDescription
urquhartFaces(points\|faces, preservePerimeter?)Remove longest edge per triangle → polygonal faces
gabrielFaces(points\|faces, preservePerimeter?)Delaunay ∩ Gabriel faces
relativeNeighborFaces(points\|faces, preservePerimeter?)Delaunay ∩ RNG faces
spannerFaces(points\|faces, k, preservePerimeter?)Greedy sparse spanner faces (higher k → larger faces)
dualFaces(faces)Closed dual cells around interior vertices

Urquhart faces

Urquhart

Gabriel faces

Gabriel

Triangulation dual

Dual

Relative neighbour faces

RNG

Spanner faces

Spanner

Quadrangulation

FunctionDescription
centroidQuadrangulation(points\|faces, preservePerimeter?)Quads from triangle centroids across shared edges
edgeCollapseQuadrangulation(points\|faces, preservePerimeter?)Pair adjacent triangles into quads
splitQuadrangulation(points\|faces)Catmull–Clark: 3 quads per triangle
spiralQuadrangulation(points)Spiral-patterned quads from a point set
matchingQuadrangulation(points\|faces)Quality-weighted triangle matching

Centroid quadrangulation

Centroid quad

Edge collapse quadrangulation

Edge collapse

Split quadrangulation

Split quad

Spiral quadrangulation

Spiral

Matching quadrangulation

Matching

Process

FunctionDescription
smoothMesh(faces, iterations\|cutoff, preservePerimeter?)Weighted Laplacian smoothing
subdivideMesh(faces, edgeSplitRatio?)Centroid subdivision (N subfaces per N-gon)
simplifyMesh(faces, tolerance, preservePerimeter?)Simplify face boundaries, keep topology
stochasticMerge(faces, nClasses, seed?)Random dissolve of adjacent same-class faces
areaMerge(faces, minArea \| { remainingFaces })Merge tiny faces into neighbors
splitEdges(faces, maxLen)Densify long edges

Mesh smoothing

Smooth

Mesh subdivision

Subdivide

Mesh simplification

Simplify

Stochastic merge

Stochastic

Area merge

Area merge

Extract / repair

FunctionDescription
extractInnerEdges(faces)Edges shared by ≥2 faces
extractInnerVertices(faces)Vertices not on the perimeter
findContainingFace(faces, point)First containing face
findBreaks(faces)Near-miss gap segments
fixBreaks(faces, maxGapWidth)Snap gaps / clean coverage
fixBrokenFaces(coverage, tolerance, polygonise?)Endpoint snap + polygonise
findIslands(faces)Disconnected face components
radialSortFaces / centroidSortFacesOrder faces

Extract inner edges

Edges

Extract inner vertices

Inner vertices

Fix breaks

Fix breaks