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

  • 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
  • Map conversion moved to another system

    The same place on the earth described in a different coordinate system: new origin, rotation and scale.

    origin' = T(E, N); p₁ = T(origin + 10 m along the X axis); axis' = (p₁ − origin') ÷ D; scale' = scale × D ÷ step

    Placing a model on the map crs-georef.js
    • BimCraft
    64-bit
  • Illuminance of the whole sky

    The horizontal illuminance of an unobstructed overcast sky, which every component is divided by.

    E_h = 7π ÷ 9, in units of the zenith luminance

    Sky view and daylight factor daylight-bim-sky.js
    • BimCraft
    64-bit
  • Overcast sky integrated in altitude

    The light a vertical plane gets from the sky between the horizon and an altitude.

    F(θ) = (θ ÷ 2 + sin 2θ ÷ 4) ÷ 3 + (2 ÷ 9)(1 − cos³θ)

    Sky view and daylight factor daylight-bim-sky.js
    • BimCraft
    64-bit
  • Overcast sky luminance

    The sky's brightness at an altitude, relative to the zenith.

    L(θ) = (1 + 2 sin θ) ÷ 3

    Sky view and daylight factor daylight-bim-sky.js
    • BimCraft
    64-bit
  • Hidden altitude intervals joined

    Joins the altitude ranges hidden by separate objects into one list.

    Sky view and daylight factor daylight-bim-sky.js
    • BimCraft
    64-bit
  • What hides the sky in one direction

    The altitudes hidden along one level direction from a window.

    Sky view and daylight factor daylight-bim-sky.js
    • BimCraft
    64-bit
  • Sky profile of a window

    For each direction across the window's front, the altitudes that are hidden.

    φᵢ = −90° + step ÷ 2 + i × step, i = 0 … 180 ÷ step − 1

    Sky view and daylight factor daylight-bim-sky.js
    • BimCraft
    64-bit
  • Weight of an azimuth band

    How much a band of directions counts, by how squarely it faces the window.

    w = sin(φ + step ÷ 2) − sin(φ − step ÷ 2)

    Sky view and daylight factor daylight-bim-sky.js
    • BimCraft
    64-bit
  • Vertical sky component

    The share of the unobstructed sky's light that reaches the window, in percent.

    VSC = 100 × Σ over bands of w × Σ over visible intervals of (F(b) − F(a)) ÷ (7π ÷ 9)

    Sky view and daylight factor daylight-bim-sky.js
    • BimCraft
    64-bit
  • Share of a uniform sky seen

    The share of a uniform sky's light a window still gets, used for diffuse sun gain.

    fraction = Σ w × Σ (G(b) − G(a)) ÷ Σ w × G(π ÷ 2), G(θ) = θ ÷ 2 + sin 2θ ÷ 4

    Sky view and daylight factor daylight-bim-sky.js
    • BimCraft
    64-bit
  • Angle of obstruction

    The altitude of the top of whatever hides the horizon square to the window.

    Sky view and daylight factor daylight-bim-sky.js
    • BimCraft
    64-bit
  • Is a ray hidden

    Decides whether a ray from a point through the window meets sky or an obstruction.

    Sky view and daylight factor daylight-bim-sky.js
    • BimCraft
    64-bit
  • Floor of a room

    Picks the floor triangles out of a room's shell.

    floor when |n_z| > 0.7 |n| and the triangle's mean height is below the shell's middle

    Sky view and daylight factor daylight-bim-sky.js
    • BimCraft
    64-bit
  • Is a grid point over the floor

    Tests a plan point against one floor triangle.

    Sky view and daylight factor daylight-bim-sky.js
    • BimCraft
    64-bit
  • Grid of points in a room

    The points at working-plane height where the daylight factor is worked out.

    spacing = max(0.25, ceil(√(area ÷ max) × 20) ÷ 20) m; points at lo + s ÷ 2, then every s

    Sky view and daylight factor daylight-bim-sky.js
    • BimCraft
    64-bit
  • Window opening as a rectangle

    The rectangle that stands for a window's opening.

    k = √(area ÷ (width × height)); half sizes = k × width ÷ 2 and k × height ÷ 2

    Sky view and daylight factor daylight-bim-sky.js
    • BimCraft
    64-bit
  • Sky and externally reflected components at a point

    The light a point gets through one window straight from the sky and from obstructions, in percent.

    SC = 100 ÷ E_h × Σ over patches of L(θ) sin θ × dA cos ω ÷ r²

    Sky view and daylight factor daylight-bim-sky.js
    • BimCraft
    64-bit
  • C factor by angle of obstruction

    The coefficient C of the internally reflected component.

    straight lines between table rows at 0°, 10° … 80°

    Sky view and daylight factor daylight-bim-sky.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.