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
-
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.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
Fairness problems
Reports curves that have an inflection or a curvature jump.
Hull lines: fairness measures and fairing hull/fair.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
Anchor point as assembled
Where an annotation's anchor sits when the parts are assembled.
Manual annotations: measured lengths, angles and radii illustrate/annotate.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
Unit vector
A vector scaled to length 1.
Illustrate: vector, matrix and rigid-fit math illustrate/m4.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
Matrix product
The product of two 4 × 4 matrices.
Illustrate: vector, matrix and rigid-fit math illustrate/m4.js64-bit- PartCraft
-
Matrix inverse
The inverse of a general 4 × 4 matrix.
M⁻¹ = adj(M) ÷ det(M)
Illustrate: vector, matrix and rigid-fit math illustrate/m4.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
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.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
-
Recognizing copies of a part
Folds parts that are rigid moves of one another into one part with several placements.
copy when fit error ≤ 1e-5 × size and largest corner difference ≤ 4e-5 × size
Manual: imported product meshes, copies and part volume illustrate/import.js64-bit- PartCraft
-
Largest corner difference after a move
How far the moved corners of one mesh are from another's.
Manual: imported product meshes, copies and part volume illustrate/import.js64-bit- PartCraft
-
Placement moved to millimeters
A 3MF placement with its move in millimeters.
Manual: imported product meshes, copies and part volume illustrate/import.js64-bit- PartCraft
-
Mesh in the manual file
A part's mesh as written into the manual file.
Manual: imported product meshes, copies and part volume illustrate/manual.js32-bit in part- PartCraft
-
Explode offsets
How far each part has moved at a point in an exploded view.
offset = Σ dir × dist × clamp(t × n − k, 0, 1) over the steps k
Manual: imported product meshes, copies and part volume illustrate/manual.js64-bit- PartCraft
-
Where each part is drawn
Each instance's matrix in a view.
M = translation(explode offset + view move) × placement
Manual: imported product meshes, copies and part volume illustrate/manual.js64-bit- PartCraft
-
Moving parts in a view
Adds a move to parts in one view.
Manual: imported product meshes, copies and part volume illustrate/manual.js64-bit- PartCraft
-
Part volume and area
The volume and surface area of a part's mesh.
V = |Σ a·(b × c) ÷ 6|; A = Σ |(b − a) × (c − a)| ÷ 2
Manual: imported product meshes, copies and part volume illustrate/manual.js32-bit in part- PartCraft
-
Projection onto the picture
A model point's place in the picture and its depth.
orthographic: u = aspect ÷ 2 + q·right ÷ 2h; perspective: u = aspect ÷ 2 + q·right ÷ (2 tan(fov ÷ 2) × depth)
Illustrate: projection, hidden lines and vector pictures illustrate/camera.js32-bit, display only- PartCraft
-
Is a picture point hidden
Decides whether a point of an edge is behind a triangle of another surface.
barycentric l₁, l₂, l₃ in the picture; hidden when the triangle's depth < point depth − 10 eps
Illustrate: projection, hidden lines and vector pictures illustrate/hlr.js32-bit, display only- PartCraft
-
Feature edges
The mesh edges drawn as lines: open edges and edges where two faces meet at more than an angle.
drawn when open, or cos(face angle) < cos(angle)
Illustrate: projection, hidden lines and vector pictures illustrate/edges.js32-bit, display only- PartCraft
-
Numbers in the PDF
How a coordinate is written into a PDF page.
Illustrate: projection, hidden lines and vector pictures illustrate/pdf.js32-bit, display only- PartCraft
-
Significand width of a number
How many bits of a number this device keeps.
bits = the first n where 1 + 2⁻ⁿ = 1
Device number check accuracy.js Every appExact -
Digits of a graphics float
The number of significant digits stated for the graphics processor's float type.
bits < 23: digits = max(1, ⌊(bits + 1) × log₁₀ 2⌋); bits ≥ 23: the fixed text "about 7"
Device number check accuracy.js Every app64-bit -
Size and position text
A dimension, port size or port position as text in millimeters.
text = round(x × 10⁴) ÷ 10⁴
Library configurator sizes library-configurator.js Every app64-bit -
Option value used for matching
The text an option value is compared by when the page picks the variant that matches the selected options.
numbers: round(v × 10⁴) ÷ 10⁴ as text; other values: trimmed text
Library configurator sizes library-configurator.js Every app64-bit -
Mesh buffers
The item's box or mesh as geometry for drawing, turned from z up to y up.
Library 3D preview library-3d.js Every app32-bit, display only -
Camera position
Where the camera sits as the view is turned and zoomed.
position = target + dist × (sin φ sin θ, cos φ, sin φ cos θ)
Library 3D preview library-3d.js Every app32-bit, display only -
Variant body buffers
The chosen variant's box or mesh as geometry for drawing.
Library 3D preview library-configurator.js Every app32-bit, display only -
Required and found values as text
A limit or a measured value in words, such as ≤ 196.85 mm or 863.6–965.2 mm.
text = round(x × 100) ÷ 100, then the unit
Check report values problems.js Every app64-bit -
Built-in unit factors
The factor from each built-in unit of mass, time, force, pressure, energy, power, current, voltage and volume to SI.
lb = 0.45359237 kg; lbf = 4.4482216152605 N; psi = 6894.757293168 Pa; psf = 47.88025898 Pa
Calc sheet units, functions and driven parameters calc.js Every app64-bit -
Constants and fallback lengths
pi, e, standard gravity g0, and the length units used when no unit table is given.
g0 = 9.80665 m/s²; in = 0.0254 m; ft = 0.3048 m; yd = 0.9144 m
Calc sheet units, functions and driven parameters calc.js Every app64-bit -
Unit lookup
The SI factor and dimension of a unit name.
deg = π ÷ 180; rad = 1
Calc sheet units, functions and driven parameters calc.js Every app64-bit -
Dimension comparison
Whether two values have the same dimensions, so they can be added, compared or converted.
|aᵢ − bᵢ| < 1e-9 for each of the five exponents
Calc sheet units, functions and driven parameters calc.js Every app64-bit -
Power
a ^ b for a value with units.
value = aᵇ; dimensions × b
Calc sheet units, functions and driven parameters calc.js Every app64-bit -
Conversion with to
M to kN m: checks the dimension and records the unit to show the answer in.
shown = value ÷ factor of the target unit
Calc sheet units, functions and driven parameters calc.js Every app64-bit
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.