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

  • Facing faces within a gap

    The pairs of flat faces that face each other, with their gap and overlap.

    n·m ≤ −cos 0.5°; d = (o_B − o_A)·n with −1e-6 ≤ d ≤ gap; overlap = w × h

    Advanced simulation add-on: finding contact pairs addons/advanced-sim/lib/setup.js
    • PartCraft
    64-bit
  • Triangle areas and centroids

    The area and center of each mesh triangle.

    area = |(b − a) × (c − a)| ÷ 2; centroid = (a + b + c) ÷ 3 × 1000

    Magnetics add-on: field readout, flux lines and exports addons/magnetics/lib/results.js
    • PartCraft
    64-bit
  • Area, mean and peak flux density of each body

    Each body's area in mm², its area-weighted mean |B| and its largest |B|.

    mean B = Σ(Bₑ × areaₑ) ÷ Σ areaₑ

    Magnetics add-on: field readout, flux lines and exports addons/magnetics/lib/results.js
    • PartCraft
    32-bit in part
  • Result against a hand formula

    The value the result gives where a template's hand formula applies, and its relative difference.

    got = Σ(v × w) ÷ Σ w; diff = got ÷ want − 1

    Magnetics add-on: field readout, flux lines and exports addons/magnetics/lib/results.js
    • PartCraft
    32-bit in part
  • Flux lines

    Contour segments of the vector potential A, and the flux between neighboring lines.

    levelᵢ = lo + ΔA × (i + 1), ΔA = (hi − lo) ÷ (k + 1); t = (L − aᵢ) ÷ (aⱼ − aᵢ)

    Magnetics add-on: field readout, flux lines and exports addons/magnetics/lib/results.js
    • PartCraft
    32-bit in part
  • Top of the color scale

    The |B| that the top color stands for.

    Magnetics add-on: field readout, flux lines and exports addons/magnetics/lib/results.js
    • PartCraft
    32-bit, display only
  • Number format of the exports

    How a number is written into the CSV and VTK files.

    Magnetics add-on: field readout, flux lines and exports addons/magnetics/lib/results.js
    • PartCraft
    64-bit
  • Field table (CSV)

    One row per triangle: center, region, area and B.

    Magnetics add-on: field readout, flux lines and exports addons/magnetics/lib/results.js
    • PartCraft
    32-bit in part
  • VTK file

    The mesh in mm with B per triangle and A per node.

    Magnetics add-on: field readout, flux lines and exports addons/magnetics/lib/results.js
    • PartCraft
    32-bit in part
  • Summary table (CSV)

    Peak B, each body's area, mean and peak B, forces, torque and the hand-formula check.

    Magnetics add-on: field readout, flux lines and exports addons/magnetics/lib/results.js
    • PartCraft
    32-bit in part
  • Bricks to compute

    Which bricks of the lattice can hold the surface.

    brick range = floor((box ∓ band × h) ÷ h ÷ 8); ball radius = 3.5√3 × h

    Distance grid: baking, sampling and volume field/bake.js
    • PartCraft
    64-bit
  • Node values of a brick

    The signed distance at each of a brick's 512 nodes.

    value = clamp(f(i·h, j·h, k·h), −band × h, band × h)

    Distance grid: baking, sampling and volume field/bake.js
    • PartCraft
    32-bit in part
  • Brick key

    One whole number that names a brick.

    key = ((bx + 65536) × 131072 + (by + 65536)) × 131072 + (bz + 65536)

    Distance grid: baking, sampling and volume field/grid.js
    • PartCraft
    Exact
  • Value at a point

    The signed distance at any point, between the lattice nodes.

    trilinear: a + (b − a) × t along x, then y, then z

    Distance grid: baking, sampling and volume field/grid.js
    • PartCraft
    32-bit in part
  • Gradient at a point

    The direction and rate of change of the distance.

    g = (f(p + h/2) − f(p − h/2)) ÷ h, per axis

    Distance grid: baking, sampling and volume field/grid.js
    • PartCraft
    32-bit in part
  • Box of the stored bricks

    The world box that holds every stored node.

    lo = brick × 8 × h; hi = (brick × 8 + 7) × h

    Distance grid: baking, sampling and volume field/grid.js
    • PartCraft
    64-bit
  • Enclosed volume

    The volume inside the surface.

    V = h³ × Σ clamp(½ − d ÷ h, 0, 1)

    Distance grid: baking, sampling and volume field/grid.js
    • PartCraft
    32-bit in part
  • Welding corners

    Merges mesh corners that sit at the same position.

    Distance grid: baking, sampling and volume field/mesh-sdf.js
    • PartCraft
    64-bit
  • Angle-weighted normals

    The pseudo-normal at each corner and edge, used for the sign.

    angle = acos(e₁·e₂ ÷ (|e₁||e₂|)); N_vertex = Σ angle × n_face

    Distance grid: baking, sampling and volume field/mesh-sdf.js
    • PartCraft
    64-bit
  • Signed distance at a node

    The distance from a lattice node to the mesh, negative inside.

    d = √(least squared distance); sign = sign((p − closest)·N)

    Distance grid: baking, sampling and volume field/mesh-sdf.js
    • PartCraft
    32-bit in part
  • Closest point on a triangle

    The nearest point of a triangle to a point, and which face, edge or corner it lies on.

    Distance grid: baking, sampling and volume field/mesh-sdf.js
    • PartCraft
    64-bit
  • Inside or outside far from the surface

    Marks bricks no triangle comes near as inside or outside.

    x_cross = (w₀a_x + w₁b_x + w₂c_x) ÷ (w₀ + w₁ + w₂); inside when an odd number of crossings lie before the brick

    Distance grid: baking, sampling and volume field/mesh-sdf.js
    • PartCraft
    64-bit
  • 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
  • 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
  • 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
  • Weld grid for splitting shells

    Merges corners at the same place so separate pieces of a mesh can be told apart.

    q = max(range, 1e-9) × 1e-7; key = round(x ÷ q), round(y ÷ q), round(z ÷ q)

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

    A short key (corner count, triangle count, area, volume) that groups parts that may be copies.

    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.