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

  • Share of the volume per material

    How an element's volume is divided between the materials it is made of.

    layer share = tᵢ ÷ Σt; constituent share = fᵢ ÷ Σf; otherwise 1 ÷ n

    Element quantities for carbon and cost carbon-calc.js
    • BimCraft
    64-bit
  • Floor area of the building

    The floor area the carbon total is divided by when the person has not typed one.

    area = Σ space floor areas, else Σ floor slab areas

    Element quantities for carbon and cost carbon-calc.js
    • BimCraft
    64-bit
  • Quantities per material part

    The volume, area and length handed on for each material of an element.

    part volume = element volume × share

    Element quantities for carbon and cost carbon-calc.js
    • BimCraft
    64-bit
  • World triangles and box of each element

    Each element's triangles in the scene's coordinates and the box round them.

    p' = M p

    Clash check clash.js
    • BimCraft
    32-bit in part
  • Overlap of two boxes

    How far two elements' boxes overlap, the figure reported as the clash depth.

    depth = min over X, Y, Z of (min of the two maxima − max of the two minima)

    Clash check clash.js
    • BimCraft
    64-bit
  • Candidate pairs and the result list

    Pairs one element from each set whose boxes overlap by more than the tolerance, tests them and lists the clashes deepest first.

    candidate when depth > tolerance

    Clash check clash.js
    • BimCraft
    64-bit
  • Do two elements' surfaces cross

    Looks for a pair of triangles, one from each element, that cross.

    Clash check clash.js
    • BimCraft
    32-bit in part
  • Triangle against triangle

    Decides whether two triangles cross and gives a point on the crossing.

    dᵢ = n₂·pᵢ + d₂ for each corner; crossing when each triangle has corners on both sides of the other's plane and their intervals on the line n₁ × n₂ overlap

    Clash check clash.js
    • BimCraft
    32-bit in part
  • 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
  • Middle of a room

    The point the interior elevation cuts through.

    middle = (min + max) ÷ 2 on each axis

    Interior elevations and their dimensions comforts-views.js
    • BimCraft
    64-bit
  • Frame of an interior elevation

    The width and height of the wall shown, and how deep the view looks.

    x₀, x₁ = min, max of p·right; depth from the room's middle to max(p·dir) + 50 mm

    Interior elevations and their dimensions comforts-views.js
    • BimCraft
    64-bit
  • Dimension values on elevations and sections

    The widths, heights and level spacings written on a view.

    width = x₁ − x₀; height = y₁ − y₀; level spacing = yᵢ₊₁ − yᵢ

    Interior elevations and their dimensions comforts-views.js
    • BimCraft
    64-bit
  • Where a door or window is tagged

    The plan point, the height range and the outward side of each opening.

    middle station = offset + width ÷ 2; top = sill + height

    Interior elevations and their dimensions comforts-views.js
    • BimCraft
    64-bit
  • Views placed at scale on the sheet

    Takes view millimeters to paper millimeters at the sheet's scale.

    k = 1 ÷ scale ratio; paper = origin + view × k

    Interior elevations and their dimensions comforts-views.js
    • BimCraft
    64-bit
  • Where a drag puts an item

    The position and turn saved when a placed item is dragged or turned by its grip.

    turn = round(atan2(dy, dx) × 180 ÷ π ÷ step) × step, step 15° or 1° with Shift

    Interior elevations and their dimensions comforts-ui.js
    • BimCraft
    64-bit
  • Room height on the interior elevations

    The floor-to-floor height the elevations are framed to, and the height of each tagged item.

    height = next level − this level, else the level's own height

    Interior elevations and their dimensions comforts-ui.js
    • BimCraft
    64-bit
  • Project origin and survey point

    Where the site's survey point is in the file's coordinates, with its elevation and map grid position.

    survey point = site placement origin × file unit in mm; elevation in m = RefElevation × unit ÷ 1000

    Coordinate readouts and survey point coords.js
    • BimCraft
    64-bit
  • Level a height is on

    Picks the level whose floor is at or just below a height.

    the highest level with elevation ≤ z + 1 mm

    Coordinate readouts and survey point coords.js
    • BimCraft
    64-bit
  • Foot and US survey foot

    The two sizes of foot a map's unit is compared with.

    ft = 0.3048 m; US ft = 1200 ÷ 3937 m

    Coordinate readouts and survey point coords.js
    • BimCraft
    Exact
  • Map grid coordinates as text

    A point's eastings and northings in the map's own unit.

    value = meters ÷ map unit in meters, written with 3 decimals

    Coordinate readouts and survey point coords.js
    • BimCraft
    64-bit
  • Height above the level

    The lines of a readout: the level and the height above its floor, X and Y from the project origin, Z, and the map position.

    height above the level = z − level elevation

    Coordinate readouts and survey point coords.js
    • BimCraft
    64-bit
  • Plan point to file coordinates

    A point in a storey's plan, in the file's coordinates.

    q = M (x, y, 0)

    Coordinate readouts and survey point coords.js
    • BimCraft
    64-bit
  • File coordinates to plan point

    A point in the file's coordinates, in a storey's plan.

    p = M⁻¹ q

    Coordinate readouts and survey point coords.js
    • BimCraft
    64-bit
  • File coordinates to the 3D view

    Where a point of the file sits in the 3D view, to draw the origin and survey markers.

    (x, y, z) × unit → (x, z, −y) → C → placement

    Coordinate readouts and survey point coords.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
  • Grand total

    Runs the whole calculation and states the total cost.

    grand = scheduled + unscheduled

    Costs on the schedule cost5d.js
    • BimCraft
    64-bit
  • Rates read from TakeoffCraft

    Turns TakeoffCraft's stored rates into prices per unit.

    rate = stored whole number ÷ 10000

    Costs on the schedule cost5d.js
    • BimCraft
    64-bit
  • Costs in the CSV export

    The amounts written to the exported table.

    Costs on the schedule cost5d.js
    • BimCraft
    64-bit
  • Rounding of stored map values

    Rounds an easting, northing or height before it is stored.

    round(v × 10⁶) ÷ 10⁶

    Placing a model on the map crs-georef.js
    • BimCraft
    64-bit
  • Latitude and longitude of a grid point

    The longitude and latitude of an easting and northing in the chosen system.

    Placing a model on the map crs-georef.js
    • BimCraft
    64-bit
  • Map conversion as a matrix

    The matrix that takes model coordinates to map coordinates.

    x' = s (a x − b y) + E; y' = s (b x + a y) + N; z' = s z + H, with (a, b) the normalized X axis

    Placing a model on the map crs-georef.js
    • BimCraft
    64-bit
  • Rotation of the model on the grid

    The angle of the model's X axis from grid east, in degrees.

    θ = atan2(ordinate, abscissa) × 180 ÷ π

    Placing a model on the map crs-georef.js
    • BimCraft
    64-bit
  • True north in the model

    The direction of true north in the model's own X and Y.

    g = grid direction of a 0.0001° step north; true north = (cos(g − m), sin(g − m)), m the model's rotation

    Placing a model on the map crs-georef.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.