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.
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.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
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.js32-bit in part- PartCraft
-
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.js32-bit in part- PartCraft
-
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.js32-bit in part- PartCraft
-
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.js32-bit, display only- PartCraft
-
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.js64-bit- PartCraft
-
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.js32-bit in part- PartCraft
-
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.js32-bit in part- PartCraft
-
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.js32-bit in part- PartCraft
-
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.js64-bit- PartCraft
-
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.js32-bit in part- PartCraft
-
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.jsExact- PartCraft
-
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.js32-bit in part- PartCraft
-
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.js32-bit in part- PartCraft
-
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.js64-bit- PartCraft
-
Enclosed volume
The volume inside the surface.
V = h³ × Σ clamp(½ − d ÷ h, 0, 1)
Distance grid: baking, sampling and volume field/grid.js32-bit in part- PartCraft
-
Welding corners
Merges mesh corners that sit at the same position.
Distance grid: baking, sampling and volume field/mesh-sdf.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
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.js32-bit in part- PartCraft
-
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.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
Density map as stored
Keeps a density map that steers a wall thickness or cell size.
Distance grid: baking, sampling and volume field/field.js32-bit in part- PartCraft
-
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.js32-bit in part- PartCraft
-
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.js32-bit in part- PartCraft
-
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.js64-bit- PartCraft
-
Gradient inside a cell
The gradient of the interpolated distance inside one cell.
Surface mesh from a distance grid (dual contouring) field/contour.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
Positions and box as returned
The mesh's corner positions and its bounding box.
Surface mesh from a distance grid (dual contouring) field/contour.js32-bit in part- PartCraft
-
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.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
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.js32-bit in part- PartCraft
-
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.js32-bit in part- PartCraft
-
3MF vertices
The mesh corners as text in the 3MF model, in millimeters.
Generated part exports: data sheet, VTK, 3MF and OpenVDB field/export.js64-bit- PartCraft
-
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.js32-bit in part- PartCraft
-
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.js32-bit in part- PartCraft
-
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.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
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.js32-bit in part- PartCraft
-
Connected pieces
Labels each connected piece and counts its voxels.
Printability checks on a voxel solid field/mfg.jsExact- PartCraft
-
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.js32-bit in part- PartCraft
-
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.js64-bit- PartCraft
-
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.js32-bit in part- PartCraft
-
Rounding in the problem list
Rounds sizes, volumes and positions for the problem list.
Printability checks on a voxel solid field/mfg.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
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.jsExact- PartCraft
-
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.js64-bit- PartCraft
-
Mesh as stored
A part's corner positions as the manual keeps them.
Manual: imported product meshes, copies and part volume illustrate/import.js32-bit in part- PartCraft
-
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.js64-bit- PartCraft
-
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.js32-bit in part- PartCraft
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.