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.

  • 6,917 calculations in 1,248 source files
  • 143 exact
  • 6,286 in 64-bit
  • 335 with a 32-bit step
  • Last reviewed

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.js
    • BimCraft
    • CivilCraft
    64-bit
  • 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.js
    • BimCraft
    • CivilCraft
    64-bit
  • 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.js
    • BimCraft
    • CivilCraft
    64-bit
  • Sabine constant

    The constant both reverberation formulas multiply the volume by.

    C = 0.161 s/m

    Room reverberation time acoustics.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • Air absorption per meter

    Turns the dB figure into the energy absorption coefficient the formulas use.

    m = α ÷ 4.343

    Room reverberation time acoustics.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • Rounded rectangle outline

    The outline of a hollow rectangular section with rounded corners.

    Frame model from a building model analysis-bim.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • I-shape outline

    The outline of an I section with its root fillets.

    Frame model from a building model analysis-bim.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • Supports at column feet

    Puts a support under every column that nothing continues below.

    Frame model from a building model analysis-bim.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • Dollars to whole cents

    Rounds an amount to a whole number of cents.

    cents = round(dollars × 100)

    Costs on the schedule cost5d.js
    • BimCraft
    64-bit
  • Whole cents to dollars

    The amount reported, in dollars.

    dollars = round(cents) ÷ 100

    Costs on the schedule cost5d.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-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.