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

  • Octave band weight

    How much of a frequency belongs to one octave band.

    w = cos(π ÷ 2 × |log₂(f ÷ f_band)|) within one octave, else 0

    Room impulse response and listening acoustics-ir.js
    • BimCraft
    64-bit
  • Zero-phase band filter

    Keeps one octave band of a signal.

    Room impulse response and listening acoustics-ir.js
    • BimCraft
    64-bit
  • Decaying reverberant tail

    The diffuse part of the response: noise that falls 60 dB in each band's reverberation time.

    tail(t) = Σ_bands noise_b(t) × e^(−k t), k = 6.907755 ÷ T_b; × (t ÷ onset)² up to onset = max(0.002, 2 × mean free path ÷ 343)

    Room impulse response and listening acoustics-ir.js
    • BimCraft
    64-bit
  • First reflections and the tail's level

    Places the six first reflections and sets the level of the tail against the direct sound.

    R = S a ÷ (1 − a); reflection gain = √(1 − a) × d₀ ÷ d at sample round((d − d₀) ÷ 343 × sr); tail energy = 16π d₀² ÷ R less the reflections; r_c = √(R ÷ 16π)

    Room impulse response and listening acoustics-ir.js
    • BimCraft
    32-bit in part
  • Reverberation time measured from a response

    The reverberation time of an impulse response in one band, by Schroeder's backward integration.

    E(t) = Σ over τ ≥ t of x²; L = 10 log₁₀(E(t) ÷ E(0)); T = 60 ÷ −slope of L between −5 and −35 dB

    Room impulse response and listening acoustics-ir.js
    • BimCraft
    64-bit
  • Convolution

    A dry sound passed through the room's impulse response.

    y = IFFT(FFT(x) × FFT(h)) ÷ N

    Room impulse response and listening acoustics-ir.js
    • BimCraft
    32-bit in part
  • Level matching

    Brings the sound in the room to the loudness of the dry sound, so switching between them changes the room and not the volume.

    k = rms(dry) ÷ rms(wet over the dry sound's length)

    Room impulse response and listening acoustics-ir.js
    • BimCraft
    32-bit in part
  • WAV file samples

    The numbers written to the downloaded sound file.

    s = round(clamp(x × k, −1, 1) × 32767), k = 1 ÷ peak when peak > 1

    Room impulse response and listening acoustics-ir.js
    • BimCraft
    32-bit in part
  • 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
  • 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

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.