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
-
Reproject points
Every point of a file from one coordinate system to another.
(x, y) in the source system → (x, y) in the target system, point by point
Map coordinate reprojection reproject-batch.js64-bit- BimCraft
- CivilCraft
-
Map origin from latitude and longitude
Eastings and northings of a typed latitude and longitude.
(lon, lat) → (E, N), rounded to 0.000001 of the map unit
Map coordinate reprojection crs-georef.js64-bit- BimCraft
- CivilCraft
-
Model to map conversion
Where a model sits on the map: origin, rotation and scale.
X axis = (cos a, sin a) rounded to 1e-12; scale = model unit ÷ map unit
Map coordinate reprojection crs-georef.js64-bit- BimCraft
- CivilCraft
-
Sabine constant
The constant both reverberation formulas multiply the volume by.
C = 0.161 s/m
Room reverberation time acoustics.js64-bit- BimCraft
-
Sound absorbed by the air
The attenuation of a pure tone in air, in dB per meter, at the room's temperature, humidity and pressure.
α = 8.686 f² [1.84e-11 (p_r ÷ p) √(T ÷ T₀) + (T ÷ T₀)^−2.5 (0.01275 e^(−2239.1 ÷ T) ÷ (f_rO + f² ÷ f_rO) + 0.1068 e^(−3352 ÷ T) ÷ (f_rN + f² ÷ f_rN))]
Room reverberation time acoustics.js64-bit- BimCraft
-
Air absorption per meter
Turns the dB figure into the energy absorption coefficient the formulas use.
m = α ÷ 4.343
Room reverberation time acoustics.js64-bit- BimCraft
-
Reverberation time per band
The Sabine and Eyring times of a room in each of six octave bands, and the mid-frequency mean.
A = Σ Sᵢαᵢ + extra; ᾱ = min(0.999, A ÷ S); Sabine = C V ÷ (A + 4mV); Eyring = C V ÷ (−S ln(1 − ᾱ) + 4mV)
Room reverberation time acoustics.js64-bit- BimCraft
-
Reverberation over the target
The finding raised when a room's mid-frequency time is over the person's target, with the absorption that would meet it.
T = round(T_mid × 100) ÷ 100; need = round(max(0, V C ÷ target − (A₅₀₀ + A₁₀₀₀) ÷ 2))
Room reverberation time acoustics.js64-bit- BimCraft
-
Distance from a point to a room outline
How far an opening's middle is from the room's outline, to decide which room the opening belongs to.
d = min over edges of |P − (A + t (B − A))|, t clamped to 0…1
Room reverberation time acoustics-model.js64-bit- BimCraft
-
Room perimeter
The length of the room's outline, used for the wall area when the walls' finishes are not read from the model.
P = Σ |pᵢ₊₁ − pᵢ|
Room reverberation time acoustics-model.js64-bit- BimCraft
-
Is a point inside a room
Decides whether a ceiling, a floor or a piece of furniture lies in a room.
Room reverberation time acoustics-model.js64-bit- BimCraft
-
Room height and opening areas
The height the room is given and the area of the doors and windows in its walls.
H = height ÷ 1000; opening area = (width ÷ 1000) × (height ÷ 1000)
Room reverberation time acoustics-model.js64-bit- BimCraft
-
Wall area per finish
The area of wall each finish covers in a room, less its doors and windows.
wall area = Σ edge length × H; net = max(0, gross − glass − doors); each finish × net ÷ gross
Room reverberation time acoustics-model.js64-bit- BimCraft
-
Room volume and the figures reported
The volume passed to the formulas and the area, height and volume listed for each room.
V = floor area × H; aspect = longest ÷ max(shortest, 0.1)
Room reverberation time acoustics-model.js64-bit- BimCraft
-
Length unit of the file
The factor that takes the file's lengths to millimeters.
toMm = prefix × 1000, or factor × base × 1000 for a converted unit
Frame model from a building model analysis-bim.js64-bit- BimCraft
-
Axis placement
The three axes and the origin of one IFC placement.
X = norm(X − Z (X·Z)); Y = Z × X
Frame model from a building model analysis-bim.js64-bit- BimCraft
-
Placement chain
An element's position and axes in the model, through every placement it is relative to.
M = M_parent ∘ M_local
Frame model from a building model analysis-bim.js64-bit- BimCraft
-
Rounded rectangle outline
The outline of a hollow rectangular section with rounded corners.
Frame model from a building model analysis-bim.js64-bit- BimCraft
-
Circle outline
The outline of a round bar or tube.
pᵢ = r (cos 2πi ÷ 64, sin 2πi ÷ 64)
Frame model from a building model analysis-bim.js64-bit- BimCraft
-
I-shape outline
The outline of an I section with its root fillets.
Frame model from a building model analysis-bim.js64-bit- BimCraft
-
Is this I-shape a rolled section
Matches an I-shape's name and sizes against the section table, to decide whether it is treated as rolled or welded.
|a − b| ≤ max(0.5 mm, 0.01 × b) for d, bf, tw, tf
Frame model from a building model analysis-bim.js64-bit- BimCraft
-
Member axis, length and section
The line a member is analyzed on and the section properties it carries.
axis from the section centroid c₀ to c₀ + depth × ext; skipped when |ext·U| or |ext·V| > 0.001
Frame model from a building model analysis-bim.js64-bit- BimCraft
-
Concrete wall as a line, thickness and height
Reads a concrete wall's plan outline as a center line and a thickness for the plate model.
turn the outline by −θ of its longest edge; thickness = y₁ − y₀; kept when |area| ≥ 0.9 × box area
Frame model from a building model analysis-bim.js64-bit- BimCraft
-
Closest points of a line and a segment
Where a member's own line passes nearest another member's axis, and how far apart they are there.
s = (b e − c d) ÷ (a c − b²); t = (a e − b d) ÷ (a c − b²)
Frame model from a building model analysis-bim.js64-bit- BimCraft
-
Member ends carried onto the nearest axis
Moves each member end along its own line onto the axis of the member it meets.
accepted when d ≤ 0.6 × max(size) + 25 mm and |s| ≤ 0.6 × size + 150 mm; score = d + 0.01 |s|
Frame model from a building model analysis-bim.js64-bit- BimCraft
-
Node merging
Decides whether a point is a new joint or an existing one.
same node when |p − node| ≤ 10 mm
Frame model from a building model analysis-bim.js64-bit- BimCraft
-
Where members are split
The stations along a member at which other members or point loads meet it.
s = (Q − A)·u; split when 10 mm < s < L − 10 mm and |A + s u − Q| ≤ 10 mm
Frame model from a building model analysis-bim.js64-bit- BimCraft
-
Shared section records
Groups members that have the same section so the model lists each section once.
Frame model from a building model analysis-bim.js64-bit- BimCraft
-
Section roll angle
How far the drawn section is turned about the member's axis from the default local axes.
roll = atan2(U·e_z0, U·e_y0) × 180 ÷ π + principal turn
Frame model from a building model analysis-bim.js64-bit- BimCraft
-
Supports at column feet
Puts a support under every column that nothing continues below.
Frame model from a building model analysis-bim.js64-bit- BimCraft
-
Loads on split members
Places point loads and cuts distributed loads onto the pieces a member was split into.
w(s) = w + (w₂ − w)(s − a) ÷ (b − a)
Frame model from a building model analysis-bim.js64-bit- BimCraft
-
Cloud to plan matrix
The one matrix that takes a cloud's points to a level's plan in millimeters.
M = storey⁻¹ · S · C⁻¹ · model⁻¹ · layer, S taking meters with Y up to millimeters with Z up
Point cloud slice and scan alignment cloud-slice.js64-bit- BimCraft
-
Slice of the cloud at the cut height
The cloud's points near a level's cut height, in plan millimeters.
kept when |z − cut| ≤ thickness ÷ 2
Point cloud slice and scan alignment cloud-slice.js64-bit- BimCraft
-
Nearest slice point
The slice point nearest a plan point, for snapping a drawn point to the scan.
minimum of (x − xᵢ)² + (y − yᵢ)² within r
Point cloud slice and scan alignment cloud-slice.js64-bit- BimCraft
-
Turn that sets the scan square
The angle of the scan's walls against the plan's axes, and the point to turn about.
angle = first estimate + the trial turn in −1°…1° with the highest sharpness
Point cloud slice and scan alignment cloud-slice.js64-bit- BimCraft
-
Sharpness of a trial turn
Scores how well the points line up along X and Y after a trial turn.
score = Σ (count per 10 mm bin along X)² + Σ (count per 10 mm bin along Y)²
Point cloud slice and scan alignment cloud-slice.js64-bit- BimCraft
-
Wall direction from line fits
A first estimate of the walls' direction from a line fitted to the points in each cell.
per cell: covariance c_xx, c_yy, c_xy; λ = tr ÷ 2 ± √(tr² ÷ 4 − det); angle = atan2(λ₁ − c_xx, c_xy), folded into 0…90°
Point cloud slice and scan alignment cloud-slice.js64-bit- BimCraft
-
Floor height of a scan
The height of the scan's floor above the level.
floor = mean z of the points in the fullest 20 mm band of the lowest third
Point cloud slice and scan alignment cloud-slice.js64-bit- BimCraft
-
Turn about a plan point
The matrix that turns the scan by an angle about a point in the plan.
x' = c x − s y + (x₀ − c x₀ + s y₀); y' = s x + c y + (y₀ − s x₀ − c y₀)
Point cloud slice and scan alignment cloud-slice.js64-bit- BimCraft
-
A plan change carried to the scene
Re-expresses a turn or a lift made in the plan as a change of the cloud's own placement.
A' = M⁻¹ · A · M
Point cloud slice and scan alignment cloud-slice.js64-bit- BimCraft
-
Unit factors for priced quantities
The size of each pricing unit in m, m² or m³.
1 yd³ = 0.764554858 m³; 1 ft³ = 0.0283168466 m³; 1 ft² = 0.09290304 m²; 1 ft = 0.3048 m
Costs on the schedule cost5d.js64-bit- BimCraft
-
Dollars to whole cents
Rounds an amount to a whole number of cents.
cents = round(dollars × 100)
Costs on the schedule cost5d.js64-bit- BimCraft
-
Whole cents to dollars
The amount reported, in dollars.
dollars = round(cents) ÷ 100
Costs on the schedule cost5d.js64-bit- BimCraft
-
Quantity in the price's unit
An element's volume, area, length, weight or count in the unit its price is per.
qty = quantity ÷ unit factor; weight = volume × density
Costs on the schedule cost5d.js64-bit- BimCraft
-
Cost of each element
The material and labor cost of every element, and the total.
line = round(qty × (1 + waste) × material rate × 100) + round(qty × labor rate × 100) cents
Costs on the schedule cost5d.js64-bit- BimCraft
-
Cost of each scheduled task
Adds up the cost of a task's elements, sharing an element that is in several tasks.
task cents = round(Σ element cents ÷ n), n = the tasks that hold the element
Costs on the schedule cost5d.js64-bit- BimCraft
-
Spending profile of a task
The weight each day of a task gets: even, front-loaded, back-loaded or bell-shaped.
even 1; front D − i; back i + 1; bell sin(π (i + 0.5) ÷ D)
Costs on the schedule cost5d.js64-bit- BimCraft
-
A task's cost per day
Divides a task's cost over its days in whole cents.
dayᵢ = floor(cents × wᵢ ÷ W), then one more cent to the days with the largest remainders
Costs on the schedule cost5d.js64-bit- BimCraft
-
Cash flow curve
The cost per day, week or month and the running total.
period cost = Σ day cents; cumulative = running sum
Costs on the schedule cost5d.js64-bit- BimCraft
-
Planned, built and earned value on a day
What the schedule plans to have spent by a day, what is built, running and remaining, and the earned value from typed progress.
earned = Σ task cents × progress, progress clamped to 0…1
Costs on the schedule cost5d.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.