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
-
Reading a typed slope
Turns '1/4"/ft', '2%', '1:50' or '0.02' into rise per run.
inch per foot ÷ 12; percent ÷ 100; 1 ÷ n
Pipe and duct runs: layout, lengths and sizing mep-ui.js64-bit- BimCraft
-
Schedule totals
The total length, piece count and duct surface shown under the pipe and duct schedules.
ft² = mm² ÷ 92903.04
Pipe and duct runs: layout, lengths and sizing mep-ui.js64-bit- BimCraft
-
Runs handed to the takeoff
The plan length, pitch and surface height of pipe and duct pieces passed to TakeoffCraft.
pitch = atan(slope) × 180 ÷ π; heightFt = perimeter ÷ 304.8
Pipe and duct runs: layout, lengths and sizing mep-ui.js64-bit- BimCraft
-
Weighted sound reduction index
Rw and the adaptation terms C and Ctr from sixteen third-octave sound reduction values.
highest shift s with Σ max(0, ref + s − R) ≤ 32; Rw = ref₅₀₀ + s; C = round(X_A − Rw)
Sound insulation ratings and the mass law insul.js64-bit- BimCraft
-
Spectrum adaptation sum
The A-weighted level difference for a reference spectrum.
X_A = −10 lg Σ 10^((Lⱼ − Rⱼ) ÷ 10)
Sound insulation ratings and the mass law insul.js64-bit- BimCraft
-
Weighted impact sound level
Ln,w and the adaptation term CI from sixteen third-octave impact levels.
lowest shift s with Σ max(0, L − (ref + s)) ≤ 32; Ln,w = ref₅₀₀ + s; CI = round(10 lg Σ 10^(L ÷ 10) − 15 − Ln,w)
Sound insulation ratings and the mass law insul.js64-bit- BimCraft
-
Mass law
The sound reduction of a single-leaf wall from its mass per area and the frequency.
R = 20 lg(m × f) − 47
Sound insulation ratings and the mass law insul.js64-bit- BimCraft
-
Critical frequency
The frequency at which a panel's bending wave matches the speed of sound in air.
fc = c² ÷ (2π h) × √(12 ρ (1 − ν²) ÷ E), c = 343
Sound insulation ratings and the mass law insul.js64-bit- BimCraft
-
Mass-law reduction by octave band
The mass-law value in the octave bands from 125 to 4000 Hz, up to half the critical frequency.
m = ρ × h; R(f) for f ≤ fc ÷ 2
Sound insulation ratings and the mass law insul.js64-bit- BimCraft
-
Replacement years, cost and present value
Every replacement in the study period with its cost, and the totals by year and by part.
t = t₀ + k × life; cost = q × c × (1 + i)^t; PV = cost ÷ (1 + r)^t
Replacement schedule and cost over the building's life lifecycle.js64-bit- BimCraft
-
Replacement schedule as CSV
The schedule and the year-by-year costs written as text.
money = round(x × 100) ÷ 100; carbon = round(x × 10) ÷ 10
Replacement schedule and cost over the building's life lifecycle.js64-bit- BimCraft
-
Quantities of the building's parts
Window area, door counts, exterior wall area, room finishes, roof area and stairs taken from the model.
wall = Σ perimeter ÷ 1000 × height − openings; window = w ÷ 1000 × h ÷ 1000; quantity = round(q × 100) ÷ 100
Replacement schedule and cost over the building's life lifecycle-model.js64-bit- BimCraft
-
Age of an installed item
Years between an item's install date and today.
age = (today − installed) ÷ (365.25 days)
Replacement schedule and cost over the building's life lifecycle-model.js64-bit- BimCraft
-
Quantities of the building services
Equipment by class, meters of pipe and duct, and an estimate of the wiring.
pipe = round(Σ |pᵢ − pᵢ₋₁| ÷ 1000, 2); wiring = round(Σ nearest distances ÷ 1000 × 1.25, 2)
Replacement schedule and cost over the building's life lifecycle-model.js64-bit- BimCraft
-
Carbon per unit of each part
The embodied carbon of one unit of a part, from the model's carbon totals.
kg per unit = Σ carbon of the part's elements ÷ quantity
Replacement schedule and cost over the building's life lifecycle-model.js64-bit- BimCraft
-
Reading WAV samples
The first channel of a WAV file as numbers between −1 and 1.
x = sample ÷ 2^(bits − 1)
Room acoustic measures from an impulse response metrics.js32-bit in part- BimCraft
-
Decay time from a line fit
A decay time from the slope of the least-squares line through part of the decay curve.
slope = (m Σ t d − Σ t Σ d) ÷ (m Σ t² − (Σ t)²); T = 60 ÷ −slope
Room acoustic measures from an impulse response metrics.js64-bit- BimCraft
-
Decay curve, clarity, definition and center time
The energy decay curve and the measures read from it.
curve = 10 lg(∫ₜ p² ÷ ∫₀ p²); C = 10 lg(early ÷ late); D50 = early ÷ total; Ts = Σ t p² ÷ Σ p²
Room acoustic measures from an impulse response metrics.js64-bit- BimCraft
-
Predicted against measured
The difference between a predicted and a measured value in each band, against the just-noticeable difference.
within when |predicted − measured| ≤ JND
Room acoustic measures from an impulse response metrics.js64-bit- BimCraft
-
Circle of an arc
The center, radius, angle and length of the arc between two points with a bulge.
θ = 4 atan(b); h = b c ÷ 2; R = ((c ÷ 2)² + h²) ÷ (2 |h|); length = R |θ|
Curved walls model-arcs.js64-bit- BimCraft
-
Chord of an arc of a given length
The straight distance between the ends of an arc of a given length and bulge.
chord = len × sin(θ ÷ 2) ÷ (θ ÷ 2)
Curved walls model-arcs.js64-bit- BimCraft
-
Arc height and bulge
How far the arc's middle stands off its chord, and the bulge for a typed height.
height = −b × c ÷ 2; b = −2 h ÷ c
Curved walls model-arcs.js64-bit- BimCraft
-
Arc through three points
The bulge of the arc from a through p to b.
d = 2 (a_x (p_y − b_y) + p_x (b_y − a_y) + b_x (a_y − p_y)); bulge = tan(θ ÷ 4)
Curved walls model-arcs.js64-bit- BimCraft
-
Chords of an arc
The points between an arc's ends when it is drawn or saved as straight pieces.
n = max(1, ⌈|θ| ÷ step⌉); point = C + R (cos f, sin f)
Curved walls model-arcs.js64-bit- BimCraft
-
Points along and off a wall
A point at a distance along a wall and an offset to its left, and the reverse, for straight and curved walls.
curved: p = C + (R − off × sg) (cos φ, sin φ), φ = a₀ + sg × s ÷ R
Curved walls model-arcs.js64-bit- BimCraft
-
Where an opening sits in a curved wall
The position and angle of a door or window in the wall's own axes, square to the wall at the opening's middle.
O = at(off + w ÷ 2) − T × w ÷ 2; angle = atan2(T) − chord angle
Curved walls model-arcs.js64-bit- BimCraft
-
Offset of an opening read back
The distance along a curved wall of an opening, from the matrix that places it.
offset = s(middle) − w ÷ 2
Curved walls model-arcs.js64-bit- BimCraft
-
Opening body in a curved wall
The four corners of the body that cuts an opening through a curved wall, with jambs along the radius.
half = w ÷ R ÷ 2; outer radius = r ÷ cos(half)
Curved walls model-arcs.js64-bit- BimCraft
-
Axis curve saved for a curved wall
The circle and its two trim points written as the wall's axis.
circle of radius R about the center in the wall's axes, trimmed from (0, 0) to (chord, 0)
Curved walls model-arcs.js64-bit- BimCraft
-
Profile with arc edges
The closed outline of a curved wall written with true arcs (IFC4) or chords (IFC2X3).
arc edge = start, middle of the arc, end
Curved walls model-arcs.js64-bit- BimCraft
-
Height of a column
The height a column is built with: up to its top level plus an offset, else its fixed height.
h = top elevation − own elevation + offset
Columns: height and quantities model-columns.js64-bit- BimCraft
-
Cross-section area and volume
The quantities written on a column.
area = π (w ÷ 2)² or w × d; volume = area × h
Columns: height and quantities model-columns.js64-bit- BimCraft
-
Sizes saved with a column
The width, depth, angle and heights kept in the column's property set, which is what is read back.
Columns: height and quantities model-columns.js64-bit- BimCraft
-
Columns following a level
Rebuilds columns whose height no longer matches their levels.
rebuild when |stored − wanted| > 0.5 mm
Columns: height and quantities model-columns.js64-bit- BimCraft
-
Area of an outline
The signed area of a polygon.
A = ½ Σ (xᵢ yᵢ₊₁ − yᵢ xᵢ₊₁)
Drawn floors: outline, openings and quantities model-floors.js64-bit- BimCraft
-
Perimeter of an outline
The total length of the outline's edges.
P = Σ |pᵢ₊₁ − pᵢ|
Drawn floors: outline, openings and quantities model-floors.js64-bit- BimCraft
-
Do two edges cross
A yes or no on whether two segments properly cross.
cross when o(a, b, c) × o(a, b, d) < 0 and o(c, d, a) × o(c, d, b) < 0
Drawn floors: outline, openings and quantities model-floors.js64-bit- BimCraft
-
Is the outline usable
Refuses an outline with fewer than 3 corners, one that crosses itself, or one with almost no area.
refuse when |A| < 10 000 mm²
Drawn floors: outline, openings and quantities model-floors.js64-bit- BimCraft
-
Is a point inside the outline
The even-odd test used to check that an opening lies in its floor.
Drawn floors: outline, openings and quantities model-floors.js64-bit- BimCraft
-
Saving and reading the outline
The outline's points written as text in the file's length unit, and read back.
text = round(x ÷ unit, 3) , round(y ÷ unit, 3)
Drawn floors: outline, openings and quantities model-floors.js64-bit- BimCraft
-
Perimeter, area and volume written on a floor
The slab quantities, gross and net of the openings.
net area = A − Σ |hole|; volume = area × thickness
Drawn floors: outline, openings and quantities model-floors.js64-bit- BimCraft
-
Flights and landings of a ramp
Where each flight and landing starts and ends along the ramp, and at what height.
n = max(1, ⌈rise ÷ maxRise − 1e-9⌉); flight run = rise ÷ n × slope; steep when slope < 12 − 1e-9
Ramps: flights, landings and quantities model-ramps.js64-bit- BimCraft
-
Rise of a ramp
The height a ramp climbs: to its top level, else the rise typed.
rise = top elevation − own elevation
Ramps: flights, landings and quantities model-ramps.js64-bit- BimCraft
-
Flight slope, length and volume
The slope angle, sloped length and volume written on each flight.
slope = atan(Δz ÷ len); length = √(len² + Δz²); volume written = length × width × t
Ramps: flights, landings and quantities model-ramps.js64-bit- BimCraft
-
Values saved with a ramp
The start point, sizes, slope and the rise and run used, kept in the ramp's property set.
required slope = atan(1 ÷ slope)
Ramps: flights, landings and quantities model-ramps.js64-bit- BimCraft
-
Ramps following a level
Rebuilds ramps whose rise follows a level that moved.
rebuild when |rise − rise used| > 0.5 mm
Ramps: flights, landings and quantities model-ramps.js64-bit- BimCraft
-
Grid lines by spacing
The ends of numbered and lettered grid lines from a count, a spacing or list of spacings, an origin and an angle.
xᵢ = xᵢ₋₁ + spacing; P = origin + R(angle) × (x, y)
Grid lines model-grids.js64-bit- BimCraft
-
Where grid lines cross
The crossing points of every pair of grid lines, for snapping.
den = r × s; t = (q − p) × s ÷ den; point = p + t r
Grid lines model-grids.js64-bit- BimCraft
-
Grid lines an elevation shows
The lines that run within 30° of a view's direction, and where they sit across the view.
kept when |e · d| ÷ |e| ≥ 0.866; x = a · right
Grid lines model-grids.js64-bit- BimCraft
-
Is the grid rectangular
A yes or no that decides the grid's type in the file.
parallel when |d₁ × d₂| < 1e-6; square when |u · v| < 1e-6
Grid lines model-grids.js64-bit- BimCraft
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.