Resources Numerical accuracy

Calculations

Every calculation under our calculation policies: what it works out, its formula and the precision it runs at. Open one to see its code as it is in the released app.

  • 6,917 calculations in 1,248 source files
  • 143 exact
  • 6,286 in 64-bit
  • 335 with a 32-bit step
  • Last reviewed

Calculations

  • Density map as stored

    Keeps a density map that steers a wall thickness or cell size.

    Distance grid: baking, sampling and volume field/field.js
    • PartCraft
    32-bit in part
  • Number that follows a density map

    The wall thickness or cell size at a point, from the density map.

    v = v₀ + (v₁ − v₀) × density(p), density by trilinear interpolation between cell centers

    Distance grid: baking, sampling and volume field/field.js
    • PartCraft
    32-bit in part
  • Edge crossing and its normal

    Where the surface crosses a cell edge, and the surface direction there.

    t = vᵢ ÷ (vᵢ − vₒ); p = p_in + (p_out − p_in) × t

    Surface mesh from a distance grid (dual contouring) field/contour.js
    • PartCraft
    32-bit in part
  • Vertex of a surface cell

    The point that best fits the crossing planes of one cell.

    (AᵀA + λI)y = Aᵀb, x = m + y, λ = 0.1

    Surface mesh from a distance grid (dual contouring) field/contour.js
    • PartCraft
    64-bit
  • Gradient inside a cell

    The gradient of the interpolated distance inside one cell.

    Surface mesh from a distance grid (dual contouring) field/contour.js
    • PartCraft
    64-bit
  • Which diagonal splits a quad

    Chooses how each four-sided face becomes two triangles.

    use diagonal 0–2 when |p₀ − p₂|² ≤ |p₁ − p₃|²

    Surface mesh from a distance grid (dual contouring) field/contour.js
    • PartCraft
    64-bit
  • Positions and box as returned

    The mesh's corner positions and its bounding box.

    Surface mesh from a distance grid (dual contouring) field/contour.js
    • PartCraft
    32-bit in part
  • Mesh volume

    The signed volume enclosed by a triangle mesh.

    V = Σ a·(b × c) ÷ 6

    Mesh volume, area and watertightness checks field/measure.js
    • PartCraft
    64-bit
  • Mesh area

    The total area of a triangle mesh.

    A = Σ |(b − a) × (c − a)| ÷ 2

    Mesh volume, area and watertightness checks field/measure.js
    • PartCraft
    64-bit
  • Closed and manifold checks

    Counts open, non-manifold and flipped edges, bad vertices, pieces and the Euler number.

    Euler number = vertices used − edges + triangles

    Mesh volume, area and watertightness checks field/measure.js
    • PartCraft
    Exact
  • Number format of the text exports

    How a number is written into the 3MF and VTI text.

    Generated part exports: data sheet, VTK, 3MF and OpenVDB field/export.js
    • PartCraft
    64-bit
  • Values on the PDF data sheet

    How each value is printed on the data sheet's PDF.

    Generated part exports: data sheet, VTK, 3MF and OpenVDB field/export.js
    • PartCraft
    64-bit
  • Field as VTK ImageData

    The signed distance and an inside mask on the node lattice.

    origin = lowest index × h; spacing = h; inside = value < 0

    Generated part exports: data sheet, VTK, 3MF and OpenVDB field/export.js
    • PartCraft
    32-bit in part
  • Surface as VTK UnstructuredGrid

    The surface triangles with each triangle's area and unit normal.

    n = (b − a) × (c − a); area = |n| ÷ 2; normal = n ÷ |n|

    Generated part exports: data sheet, VTK, 3MF and OpenVDB field/export.js
    • PartCraft
    32-bit in part
  • 3MF vertices

    The mesh corners as text in the 3MF model, in millimeters.

    Generated part exports: data sheet, VTK, 3MF and OpenVDB field/export.js
    • PartCraft
    64-bit
  • OpenVDB leaves and active voxels

    Maps the grid's bricks onto OpenVDB leaves and marks the narrow band active.

    background = fround(band × h); active when −background < value < background

    Generated part exports: data sheet, VTK, 3MF and OpenVDB field/vdb.js
    • PartCraft
    32-bit in part
  • OpenVDB value compression

    Chooses how a node's inactive values are stored and writes the values.

    Generated part exports: data sheet, VTK, 3MF and OpenVDB field/vdb.js
    • PartCraft
    32-bit in part
  • OpenVDB voxel size

    The transform from lattice index to millimeters.

    scale = h; also 1 ÷ h, 1 ÷ h² and 1 ÷ (2h)

    Generated part exports: data sheet, VTK, 3MF and OpenVDB field/vdb.js
    • PartCraft
    64-bit
  • Distance transform along one row

    The squared distance to the nearest empty voxel along one row.

    s = ((f[q] + q²) − (f[p] + p²)) ÷ (2q − 2p); d[q] = (q − v)² + f[v]

    Printability checks on a voxel solid field/mfg.js
    • PartCraft
    64-bit
  • Squared distance transform

    For each voxel in a set, the squared distance in voxels to the nearest voxel outside it.

    Printability checks on a voxel solid field/mfg.js
    • PartCraft
    32-bit in part
  • Connected pieces

    Labels each connected piece and counts its voxels.

    Printability checks on a voxel solid field/mfg.js
    • PartCraft
    Exact
  • Thin regions

    The parts of a solid (or of the empty space) thinner than a limit, with each one's thickness.

    dk = (max(1, t − 1) + 1) ÷ 2; thickness = max(1, 2√(largest d²) − 0.5) voxels

    Printability checks on a voxel solid field/mfg.js
    • PartCraft
    32-bit in part
  • Loose pieces and sealed cavities

    The volume and position of each loose piece and each sealed cavity.

    volume = voxel count × h³; position = origin + (mean index − pad + ½) × h

    Printability checks on a voxel solid field/mfg.js
    • PartCraft
    64-bit
  • Thin wall and gap sizes in millimeters

    The thickness and volume of each thin wall and narrow gap.

    thickness = thickness in voxels × h; volume = voxel count × h³

    Printability checks on a voxel solid field/mfg.js
    • PartCraft
    32-bit in part
  • Rounding in the problem list

    Rounds sizes, volumes and positions for the problem list.

    Printability checks on a voxel solid field/mfg.js
    • PartCraft
    64-bit
  • Overhang area

    The downward-facing area steeper than a process prints without support.

    counts when −n_z ÷ |n| > sin(angle) + 1e-9; share = overhang area ÷ total area

    Printability checks on a voxel solid field/mfg.js
    • PartCraft
    64-bit
  • Plane of a curve

    The normal of the plane a hull line lies in.

    n = (p_mid − p₀) × (p_end − p₀), made unit

    Hull lines: fairness measures and fairing hull/fair.js
    • PartCraft
    64-bit
  • Signed curvature

    The curvature of a curve at a parameter, signed in its plane.

    κ = (C′ × C″)·n ÷ |C′|³

    Hull lines: fairness measures and fairing hull/fair.js
    • PartCraft
    64-bit
  • Fairness measures

    Inflection count, largest curvature, roughness, curvature jumps at knots and length.

    R = ∫(dκ/ds)² ds ≈ (du ÷ 3) × Σ wᵢ gᵢ, gᵢ = ((κᵢ₊₁ − κᵢ₋₁) ÷ ds)² × |C′|ᵢ

    Hull lines: fairness measures and fairing hull/fair.js
    • PartCraft
    64-bit
  • Fairing a curve

    The rebuild with the fewest control points that stays within tolerance and adds no inflection.

    Hull lines: fairness measures and fairing hull/fair.js
    • PartCraft
    64-bit
  • Fairness problems

    Reports curves that have an inflection or a curvature jump.

    Hull lines: fairness measures and fairing hull/fair.js
    • PartCraft
    64-bit
  • Sampling a patch

    The parameter values at which each surface is evaluated.

    uᵢ = u₀ + (u₁ − u₀) × i ÷ N, N from 2 to 200

    Hull surfaces to a closed solid and its volume hull/solid.js
    • PartCraft
    64-bit
  • Mirror half

    The other half of a hull drawn to the centerline.

    p′ = 2 × at − p on the mirror axis

    Hull surfaces to a closed solid and its volume hull/solid.js
    • PartCraft
    64-bit
  • Welding corners

    Merges corners of neighboring patches that lie within the weld distance.

    merge when √(Δx² + Δy² + Δz²) ≤ eps

    Hull surfaces to a closed solid and its volume hull/solid.js
    • PartCraft
    64-bit
  • Planar opening test

    Decides whether an opening lies in a plane and can be capped.

    n by Newell's sums; deviation = max |(p − centroid)·n|; cap when deviation ≤ max(4 eps, 2e-4 × size)

    Hull surfaces to a closed solid and its volume hull/solid.js
    • PartCraft
    64-bit
  • Volume of the closed mesh

    The volume enclosed by the hull mesh.

    V = Σ a·(b × c) ÷ 6

    Hull surfaces to a closed solid and its volume hull/solid.js
    • PartCraft
    64-bit
  • Anchor point as assembled

    Where an annotation's anchor sits when the parts are assembled.

    Manual annotations: measured lengths, angles and radii illustrate/annotate.js
    • PartCraft
    64-bit
  • Circle through three points

    The center and radius of the circle through three points.

    n = ab × ac; c = a + ((n × ab)|ac|² + (ac × n)|ab|²) ÷ (2|n|²); r = |c − a|

    Manual annotations: measured lengths, angles and radii illustrate/annotate.js
    • PartCraft
    64-bit
  • Measured value

    The length, angle or radius an annotation shows.

    length = |P₁ − P₀|; angle = acos(û·ŵ) × 180 ÷ π; radius from the circle through three points

    Manual annotations: measured lengths, angles and radii illustrate/annotate.js
    • PartCraft
    64-bit
  • Unit vector

    A vector scaled to length 1.

    Illustrate: vector, matrix and rigid-fit math illustrate/m4.js
    • PartCraft
    64-bit
  • Point under a matrix

    A point moved by a 4 × 4 matrix.

    p′ = M₃ₓ₃ p + t

    Illustrate: vector, matrix and rigid-fit math illustrate/m4.js
    • PartCraft
    64-bit
  • Matrix product

    The product of two 4 × 4 matrices.

    Illustrate: vector, matrix and rigid-fit math illustrate/m4.js
    • PartCraft
    64-bit
  • Matrix inverse

    The inverse of a general 4 × 4 matrix.

    M⁻¹ = adj(M) ÷ det(M)

    Illustrate: vector, matrix and rigid-fit math illustrate/m4.js
    • PartCraft
    64-bit
  • Box of placed positions

    The axis-aligned box of a mesh's corners under a matrix.

    Illustrate: vector, matrix and rigid-fit math illustrate/m4.js
    • PartCraft
    64-bit
  • Rigid motion test

    Checks that a matrix is a rotation and a move, with no scale or shear.

    Illustrate: vector, matrix and rigid-fit math illustrate/m4.js
    • PartCraft
    64-bit
  • Best rigid move between two point sets

    The rotation and move that best take one set of points onto another, and the largest leftover distance.

    R from the unit quaternion of the largest eigenvalue; t = c_B − R c_A; err = max |M pᵢ − qᵢ|

    Illustrate: vector, matrix and rigid-fit math illustrate/m4.js
    • PartCraft
    64-bit
  • Largest eigenvector of a symmetric 4 × 4

    The eigenvector the rigid fit's rotation is read from.

    t = sign(θ) ÷ (|θ| + √(θ² + 1)), θ = (a_qq − a_pp) ÷ (2a_pq)

    Illustrate: vector, matrix and rigid-fit math illustrate/m4.js
    • PartCraft
    64-bit
  • File unit to millimeters

    The factor from a file's unit to millimeters.

    μm 0.001; mm 1; cm 10; m 1000; in 25.4; ft 304.8

    Manual: imported product meshes, copies and part volume illustrate/import.js
    • PartCraft
    Exact
  • glTF accessor values

    Reads a glTF accessor's numbers, including normalized integers.

    normalized integer: max(x ÷ max, −1)

    Manual: imported product meshes, copies and part volume illustrate/import.js
    • PartCraft
    64-bit
  • Mesh as stored

    A part's corner positions as the manual keeps them.

    Manual: imported product meshes, copies and part volume illustrate/import.js
    • PartCraft
    32-bit in part

A calculation is added only after its source was read. Each statement can be checked in the code shown on its policy's page; the app repositories are public. When a release changes a calculation, its page says so until it has been read again.