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

  • 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
  • Plan extents and edge tolerance

    The outside box of the level's walls and how close to it a wall must lie to count as an outside edge.

    T = 1.2 × max(150 mm, thickest wall)

    Automatic plan dimensions autodim.js
    • BimCraft
    64-bit
  • Dimension line offset

    How far the dimension line sits from the two points it measures.

    offset = round((target − a)·n × 10) ÷ 10, n = (−dy, dx) ÷ |b − a|

    Automatic plan dimensions autodim.js
    • BimCraft
    64-bit
  • Reference station on a wall

    The saved position of a dimension's end along its wall, 0 at one end and 1 at the other.

    station = round(station × 10⁶) ÷ 10⁶

    Automatic plan dimensions autodim.js
    • BimCraft
    64-bit
  • Is this dimension already there

    Compares two references so the same dimension is not made twice.

    Automatic plan dimensions autodim.js
    • BimCraft
    64-bit
  • Measured segment along an axis

    Makes one dimension between two points, measured along X or along Y.

    Automatic plan dimensions autodim.js
    • BimCraft
    64-bit
  • Stops along an outside edge

    The wall ends, opening edges and meeting walls that a row of dimensions runs between.

    opening stations = offset ÷ L and (offset + width) ÷ L

    Automatic plan dimensions autodim.js
    • BimCraft
    64-bit
  • Inverse of a 4 × 4 matrix

    The inverse of the model's coordination matrix.

    M⁻¹ = adj(M) ÷ det(M)

    Issue viewpoints in BCF files bcf.js
    • BimCraft
    • ModelCraft
    64-bit
  • Viewer point to model point

    A camera position or a point on a section plane in the model's own coordinates, in meters with Z up.

    (x, y, z) = C⁻¹ v; IFC = (x, −z, y)

    Issue viewpoints in BCF files bcf.js
    • BimCraft
    • ModelCraft
    64-bit
  • Viewer direction to model direction

    A camera direction, up vector or section plane normal in the model's own axes.

    Issue viewpoints in BCF files bcf.js
    • BimCraft
    • ModelCraft
    64-bit
  • Model point to viewer point

    A point read from an issue file, placed in the viewer.

    v = C (x, z, −y)

    Issue viewpoints in BCF files bcf.js
    • BimCraft
    • ModelCraft
    64-bit
  • Model direction to viewer direction

    A direction read from an issue file, in the viewer's axes.

    Issue viewpoints in BCF files bcf.js
    • BimCraft
    • ModelCraft
    64-bit
  • Numbers written to the file

    How each coordinate, direction, field of view and scale is written in a viewpoint.

    round(v × 10⁶) ÷ 10⁶

    Issue viewpoints in BCF files bcf.js
    • BimCraft
    • ModelCraft
    64-bit
  • Numbers read from the file

    Reads the X, Y and Z of a point or direction.

    Issue viewpoints in BCF files bcf.js
    • BimCraft
    • ModelCraft
    64-bit
  • Camera read from a viewpoint

    The camera of an issue as BimCraft keeps it.

    Issue viewpoints in BCF files bcf.js
    • BimCraft
    • ModelCraft
    64-bit
  • Distance and area measured in 3D

    The length between two picked points with its X, Y and Z parts, or the area of a picked face.

    distance = |b − a|; area = the picked face's area

    Measurements and typed values in the main window bimcraft.js
    • BimCraft
    32-bit in part
  • Map position of a picked point

    The map grid coordinates, height, latitude and longitude of a point picked on the model.

    picked point → file coordinates → map grid (IfcMapConversion) → latitude and longitude (proj4)

    Measurements and typed values in the main window bimcraft.js
    • BimCraft
    32-bit in part
  • Latitude and longitude as text

    How a located point's latitude and longitude are written in the readout and the label.

    round(v × 10ⁿ) ÷ 10ⁿ, then n decimals

    Measurements and typed values in the main window bimcraft.js
    • BimCraft
    64-bit
  • Lengths shown in Properties

    A length property or quantity shown in the person's display unit.

    shown = file value × file unit in mm

    Measurements and typed values in the main window bimcraft.js
    • BimCraft
    64-bit
  • A typed length written to the file

    Converts a length typed in Properties from the display unit to the file's own unit.

    file value = round(mm ÷ file unit × 10⁹) ÷ 10⁹

    Measurements and typed values in the main window bimcraft.js
    • BimCraft
    64-bit
  • Numbers in the quantity tables

    How a total or a quantity is written in the on-screen quantity tables.

    Measurements and typed values in the main window bimcraft.js
    • BimCraft
    64-bit
  • Height of a ceiling-mounted item

    How far above its level a library item is placed when it hangs from the ceiling.

    z = max(0, top − item height)

    Measurements and typed values in the main window bimcraft.js
    • BimCraft
    64-bit
  • Clash tolerance as typed

    Reads the tolerance for the clash check, in meters.

    Measurements and typed values in the main window bimcraft.js
    • BimCraft
    64-bit
  • Offset of an added model

    The X, Y and Z move typed for a model added beside the first one.

    offset in m = typed length in mm ÷ 1000

    Measurements and typed values in the main window bimcraft.js
    • BimCraft
    64-bit
  • Which stated quantity is used

    Picks an element's volume, area or length from the quantities the file states.

    Element quantities for carbon and cost carbon-calc.js
    • BimCraft
    64-bit
  • Volume of a mesh

    The volume of an element from its triangles, used when the file states none.

    V = |Σ a·(b × c)| ÷ 6 × (unit ÷ 1000)³

    Element quantities for carbon and cost carbon-calc.js
    • BimCraft
    64-bit
  • 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

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.