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.
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
Supports at column feet
Puts a support under every column that nothing continues below.
Frame model from a building model analysis-bim.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
Is this dimension already there
Compares two references so the same dimension is not made twice.
Automatic plan dimensions autodim.js64-bit- BimCraft
-
Measured segment along an axis
Makes one dimension between two points, measured along X or along Y.
Automatic plan dimensions autodim.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
- ModelCraft
-
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.js64-bit- BimCraft
- ModelCraft
-
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.js64-bit- BimCraft
- ModelCraft
-
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.js64-bit- BimCraft
- ModelCraft
-
Model direction to viewer direction
A direction read from an issue file, in the viewer's axes.
Issue viewpoints in BCF files bcf.js64-bit- BimCraft
- ModelCraft
-
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.js64-bit- BimCraft
- ModelCraft
-
Numbers read from the file
Reads the X, Y and Z of a point or direction.
Issue viewpoints in BCF files bcf.js64-bit- BimCraft
- ModelCraft
-
Camera read from a viewpoint
The camera of an issue as BimCraft keeps it.
Issue viewpoints in BCF files bcf.js64-bit- BimCraft
- ModelCraft
-
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.js32-bit in part- BimCraft
-
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.js32-bit in part- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
Clash tolerance as typed
Reads the tolerance for the clash check, in meters.
Measurements and typed values in the main window bimcraft.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js32-bit in part- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
Do two elements' surfaces cross
Looks for a pair of triangles, one from each element, that cross.
Clash check clash.js32-bit in part- BimCraft
-
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.js32-bit in part- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
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.