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
-
Difference between the two methods
How far the engine's design loads are from the quick loads, per room.
ratio = (engine − quick) ÷ quick
Energy model input file (IDF) and its results energy-ep.js64-bit- BimCraft
-
Rooms the two methods disagree on
A note for each room whose design heating differs by more than 15 %.
note when |ratio| > 0.15
Energy model input file (IDF) and its results energy-ep.js64-bit- BimCraft
-
A parameter's value as kept
A typed or imported value made safe for its kind.
Family geometry from parameters family-model.js64-bit- BimCraft
-
When two sizes are the same
The key that tells one size of a family from another.
key = every input value rounded to 0.001
Family geometry from parameters family-model.js64-bit- BimCraft
-
Parameters driven by formulas
The value of every parameter that has a formula.
Family geometry from parameters family-model.js64-bit- BimCraft
-
A solid's numbers
The evaluated box, profile, depth, axis, angle, path and radius of each solid, and the check that it is not flat.
box = (min, max) of each pair; a negative depth moves the start: at = at + depth, depth = −depth
Family geometry from parameters family-model.js64-bit- BimCraft
-
Copies in an array
The solids of an array, each moved by a whole number of steps.
copy i is moved by (dx × i, dy × i, dz × i), count = round(count expression)
Family geometry from parameters family-model.js64-bit- BimCraft
-
A family placed inside another
The position and quarter-turn of a nested family.
turns = rotation ÷ 90; accepted when round(turns × 10⁶) ÷ 10⁶ is a whole number; k = turns mod 4
Family geometry from parameters family-model.js64-bit- BimCraft
-
Quarter turn of a solid
An evaluated solid turned 90° about the vertical axis.
(x, y) → (−y, x)
Family geometry from parameters family-model.jsExact- BimCraft
-
Move a solid
An evaluated solid moved by an offset in the family's axes.
p → p + (dx, dy, dz), mapped to the profile plane's own axes
Family geometry from parameters family-model.js64-bit- BimCraft
-
Area of a profile
The area of a profile with its arcs, used to refuse a flat outline.
area = ½ Σ (xᵢ·yᵢ₊₁ − xᵢ₊₁·yᵢ) with arcs flattened to chords
Family geometry from parameters family-model.js64-bit- BimCraft
-
Is the profile on one side of the axis
Whether a revolve's profile stays on one side of its axis.
s = ((axis direction) × (p − axis start)) ÷ |axis|; sides counted beyond ±0.01 mm
Family geometry from parameters family-model.js64-bit- BimCraft
-
Middle point of a profile arc
The point halfway along an arc given by its two ends and a bulge.
sagitta = bulge × chord ÷ 2; middle = chord middle + sagitta × (dy, −dx) ÷ chord
Family geometry from parameters family-model.js64-bit- BimCraft
-
Chords of a profile arc
The points inside an arc, for outlines that cannot hold a true arc.
θ = 4·atan(bulge); n = max(2, ⌈|θ| ÷ 15°⌉); center = circle through start, middle and end
Family geometry from parameters family-model.js64-bit- BimCraft
-
Profile written to the file
A closed profile as an IFC curve: lines and true arcs in IFC4, a polyline in IFC2X3.
Family geometry from parameters family-model.js64-bit- BimCraft
-
A solid written to the file
One box, extrusion, revolve or swept solid as its IFC item.
revolve axis direction = (u₁ − u₀, v₁ − v₀) ÷ L; angle = degrees × π ÷ 180 (file in radians)
Family geometry from parameters family-model.js64-bit- BimCraft
-
Plan outline written to the file
The outline other programs see in plan: the family's symbol, or each solid's outline from above.
Family geometry from parameters family-model.js64-bit- BimCraft
-
Plan bounds of a solid
The smallest plan rectangle round a solid.
revolve: R = largest distance of a profile point from the axis; bounds = axis start ± R, joined with the profile
Family geometry from parameters family-model.js64-bit- BimCraft
-
A plan symbol's numbers
The evaluated lines, rectangles, circles, arcs, outlines and texts of a family's 2D symbol.
Family geometry from parameters family-symbol.js64-bit- BimCraft
-
Circles and arcs of a symbol
A symbol's circle or arc as points.
n = max(2, ⌈sweep ÷ 7.5°⌉); pᵢ = (cx + r·cos aᵢ, cy + r·sin aᵢ)
Family geometry from parameters family-symbol.js64-bit- BimCraft
-
A symbol placed in the plan
The symbol turned by the element's rotation and moved to its place.
(u, v) → (x + u·cos a − v·sin a, y + u·sin a + v·cos a), a = rotation × π ÷ 180
Family geometry from parameters family-symbol.js64-bit- BimCraft
-
Where a placed family stands
A placed element's position and rotation in its level's plan.
x = M₁₂, y = M₁₃, z = M₁₄; rotation = atan2(M₁, M₀) × 180 ÷ π
Family geometry from parameters family-ops.js64-bit- BimCraft
-
Connector written as a port
A family's pipe or duct connector written on a placed element: its point, direction and nominal size.
Family geometry from parameters family-ops.js64-bit- BimCraft
-
Snap to a step
A sketch coordinate moved to the nearest multiple of the grid step.
v → round(v ÷ step) × step
Family editor: sketch points, handles and solved sizes family-edit.js64-bit- BimCraft
-
Quarter-arc bulge
The bulge that makes a segment a quarter circle, and the cycle straight, left arc, right arc.
bulge = tan(90° ÷ 4) = tan(π ÷ 8) = √2 − 1
Family editor: sketch points, handles and solved sizes family-edit.js64-bit- BimCraft
-
Move a sketch point
A profile or path point moved to a new place.
Family editor: sketch points, handles and solved sizes family-edit.js64-bit- BimCraft
-
Set a segment's bulge
Makes a profile segment straight or an arc of a given bulge.
bulge = tan(angle ÷ 4), rounded to 12 decimals, |bulge| ≤ 10
Family editor: sketch points, handles and solved sizes family-edit.js64-bit- BimCraft
-
Bounds of a family
The box round a family's visible solids.
Family editor: sketch points, handles and solved sizes family-edit.js64-bit- BimCraft
-
Height range of a solid
The lowest and highest point of one solid.
sweep: path z ± radius; revolve on the floor plane: at ± largest |profile point|
Family editor: sketch points, handles and solved sizes family-edit.js64-bit- BimCraft
-
Which parameter moves which face
Finds, for each input length, the face of the family it pushes out.
nudge the parameter by 10 mm; the face that moves most, and by more than 0.5 mm, is its handle
Family editor: sketch points, handles and solved sizes family-edit.js64-bit- BimCraft
-
Solve for a parameter
The parameter value that puts a face or a hotspot at the dragged position.
secant: c = b − f(b)·(b − a) ÷ (f(b) − f(a)); then bisection on a bracket; stop at |f| < 10⁻⁷
Family editor: sketch points, handles and solved sizes family-edit.js64-bit- BimCraft
-
Drag a hotspot
The size values after a hotspot is dragged along its axis.
x = solve(position(x) = dragged position); kept value = round(x × 1000) ÷ 1000
Family editor: sketch points, handles and solved sizes family-edit.js64-bit- BimCraft
-
Drag a size or solid handle
The recipe or the size values after a handle is dragged to a position.
literal field: value = round(position × 1000) ÷ 1000; bound field: the input parameter solved, then rounded to 0.001
Family editor: sketch points, handles and solved sizes family-edit.js64-bit- BimCraft
-
Position of a 3D grip along its axis
How far along a hotspot's axis the pointer's ray comes closest, when a grip is dragged in the 3D view.
t = (b·e − c·d) ÷ (c − b²), b = axis · ray, c = ray · ray, d = axis · w, e = ray · w
Family editor: sketch points, handles and solved sizes family-ui.js64-bit- BimCraft
-
Pointer in the family's own axes
The plan pointer position turned into the axes of a placed family, for dragging a hotspot in the plan.
(dx, dy) = p − element position; local = (dx·cos a − dy·sin a, dx·sin a + dy·cos a), a = −rotation × π ÷ 180
Family editor: sketch points, handles and solved sizes family-ui.js64-bit- BimCraft
-
Rotation shown in Properties
A placed family's rotation in the Properties panel, and the value taken when it is changed.
shown = round(rotation × 100) ÷ 100
Family editor: sketch points, handles and solved sizes family-ui.js64-bit- BimCraft
-
A piece as stored
One stud, plate, header, joist or rafter with its length and its place in the panel.
stored value = round(v × 10) ÷ 10
Framing panels and cut lists framing.js64-bit- BimCraft
- DetailCraft
-
Stud length of a wall
The length of a full-height stud: the wall height less the plates.
stud length = H − (top plates + 1) × plate thickness
Framing panels and cut lists framing.js64-bit- BimCraft
- DetailCraft
-
Studs on the spacing grid
Where the regular studs stand, left out where an opening is.
center c = spacing, 2 × spacing, …; stud from c − face ÷ 2 to c + face ÷ 2
Framing panels and cut lists framing.js64-bit- BimCraft
- DetailCraft
-
Framing round an opening
The jack studs, header, cripples and sill of one opening.
jack = sill + opening height − bottom plate; header = opening width + 2 × stud face; cripple above = H − top plates − header top
Framing panels and cut lists framing.js64-bit- BimCraft
- DetailCraft
-
Floor panel
The joists, rim joists and blocking of a floor panel.
joist length = span − 2 × rim thickness; blocking = clear gap between neighboring joists
Framing panels and cut lists framing.js64-bit- BimCraft
- DetailCraft
-
Roof panel
The rafters and ridge board of a gable roof panel, and its pitch.
slope = √(run² + rise²); rafter = slope + overhang × slope ÷ run; pitch = atan2(rise, run) × 180 ÷ π
Framing panels and cut lists framing.js64-bit- BimCraft
- DetailCraft
-
Piece count and total length
How many pieces a panel has and their total length in meters.
meters = Σ piece lengths ÷ 1000, rounded to 0.01
Framing panels and cut lists framing.js64-bit- BimCraft
- DetailCraft
-
Cut list
One row per mark: size, length, count and total length.
total (m) = round(length × count) ÷ 1000
Framing panels and cut lists framing.js64-bit- BimCraft
- DetailCraft
-
Panel placed in the model
A point of the panel turned by the panel's angle and moved to its place in the model.
P = O + u·(cos a, sin a) + n·(−sin a, cos a) + (0, 0, z), each coordinate rounded to 0.1 mm
Framing panels and cut lists framing.js64-bit- BimCraft
- DetailCraft
-
Timber profile and weight
The profile a placed timber piece gets: its dressed size and a density for its weight.
b × t = dressed size, rounded to 0.1 mm; density = 500 kg/m³
Framing panels and cut lists framing.js64-bit- BimCraft
- DetailCraft
-
Scale of the shop sheet
The scale the panel is drawn at on its sheet, and the scale printed in the title block.
k = min(drawing width ÷ panel width, drawing height ÷ panel height); printed scale = 1 : round(1 ÷ k)
Framing panels and cut lists framing.js64-bit- BimCraft
- DetailCraft
-
Scale text in the title block
The line of the title block that states the scale and the piece count.
text = "1:" + max(1, round(1 ÷ k))
Framing panels and cut lists framing.js64-bit- BimCraft
- DetailCraft
-
Corners of a piece
The four plan corners of a piece, or of the zone kept clear round it.
corner = (x + u·cos r − v·sin r, y + u·sin r + v·cos r), u ∈ ±(w ÷ 2 + side), v ∈ [−front, d]
Furniture layout of a room furnish.js64-bit- BimCraft
- ModelCraft
-
Do two pieces overlap
Whether two rectangles overlap by more than a hair.
separate when, on any edge normal of either, a_max ≤ b_min + 1 mm or b_max ≤ a_min + 1 mm
Furniture layout of a room furnish.js64-bit- BimCraft
- ModelCraft
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.