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

  • Design moments of the slab's bar layers

    The moment each of the four bar layers must carry so that bending and twisting are both covered.

    M*x = Mx + |Mxy|, M*y = My + |Mxy|; if one is negative: 0, and the other raised by Mxy² ÷ |that moment|

    Concrete member and slab checks on a solved frame frame/slab-design.js
    • CadCraft
    • BimCraft
    • DetailCraft
    64-bit
  • Slab reinforcement and shear

    The steel required and provided per meter in each layer, and the one-way shear check of a slab.

    d = h − cover − bar ÷ 2 (outer layer); provided = (π d_b² ÷ 4) × 1000 ÷ s; need = max(required, ρ_min × 1000 × h); ratio = need ÷ provided

    Concrete member and slab checks on a solved frame frame/slab-design.js
    • CadCraft
    • BimCraft
    • DetailCraft
    64-bit
  • Concrete stiffness for the analysis

    The elastic modulus, shear modulus and density given to concrete members.

    E = 4700 √f′c; G = E ÷ 2.4; ρ = 2400 kg/m³

    Concrete member and slab checks on a solved frame frame/frame-concrete.js
    • CadCraft
    • BimCraft
    • DetailCraft
    64-bit
  • Cracked stiffness factor

    The share of the gross stiffness used for cracked members.

    0.70 columns; 0.35 beams; 1 when not cracked

    Concrete member and slab checks on a solved frame frame/frame-concrete.js
    • CadCraft
    • BimCraft
    • DetailCraft
    Exact
  • Area of a bar

    The cross-section area of a reinforcing bar from its diameter.

    A = π d² ÷ 4

    Concrete member and slab checks on a solved frame frame/frame-concrete.js
    • CadCraft
    • BimCraft
    • DetailCraft
    64-bit
  • Approximate period

    The building's approximate fundamental period from its height and structural system.

    Ta = Ct × (hn ÷ 1000)^x, hn in mm

    Seismic loads and story drift to ASCE 7-22 frame/loads-asce7.js
    • CadCraft
    • BimCraft
    • DetailCraft
    64-bit
  • Upper limit factor on the period

    The factor Cu that caps a period taken from analysis.

    table of SD1 against Cu, straight lines between rows

    Seismic loads and story drift to ASCE 7-22 frame/loads-asce7.js
    • CadCraft
    • BimCraft
    • DetailCraft
    64-bit
  • Seismic response coefficient

    The coefficient Cs that multiplies the building's weight to give the base shear.

    Cs = SDS ÷ (R ÷ Ie), at most SD1 ÷ (T R ÷ Ie) or SD1 TL ÷ (T² R ÷ Ie), at least max(0.044 SDS Ie, 0.01) and 0.5 S1 ÷ (R ÷ Ie) where S1 ≥ 0.6

    Seismic loads and story drift to ASCE 7-22 frame/loads-asce7.js
    • CadCraft
    • BimCraft
    • DetailCraft
    64-bit
  • Height exponent

    The exponent k of the vertical distribution of the story forces.

    k = 1 for T ≤ 0.5 s; 2 for T ≥ 2.5 s; 1 + (T − 0.5) ÷ 2 between

    Seismic loads and story drift to ASCE 7-22 frame/loads-asce7.js
    • CadCraft
    • BimCraft
    • DetailCraft
    64-bit
  • Base shear and story forces

    The base shear, the force on each floor and the shear in each story.

    V = Cs W; Cvx = wx hx^k ÷ Σ wi hi^k; Fx = Cvx V; Vx = Σ F from the top down

    Seismic loads and story drift to ASCE 7-22 frame/loads-asce7.js
    • CadCraft
    • BimCraft
    • DetailCraft
    64-bit
  • Story force on a rigid floor

    Puts a story force on a floor at its master point, with the accidental torsion.

    Mz = −((x₀ − x_m) Fy − (y₀ − y_m) Fx) ± 0.05 × plan size × F

    Seismic loads and story drift to ASCE 7-22 frame/loads-asce7.js
    • CadCraft
    • BimCraft
    • DetailCraft
    64-bit
  • Design drift against the allowable

    The design story drift and its ratio to the allowable drift.

    δ = Cd δ_e ÷ Ie; allowed = 0.020, 0.015 or 0.010 × story height; ratio = δ ÷ allowed

    Seismic loads and story drift to ASCE 7-22 frame/loads-asce7.js
    • CadCraft
    • BimCraft
    • DetailCraft
    64-bit
  • Suggested floor levels

    The heights at which level members meet, offered as the building's floors.

    z = (z_a + z_b) ÷ 2 of a level member; levels within 1 mm are one; stored z rounded to 0.1 mm

    Seismic loads and story drift to ASCE 7-22 frame/frame-concrete.js
    • CadCraft
    • BimCraft
    • DetailCraft
    64-bit
  • Floor weights into newtons

    Turns the floor weights typed in kN into the N the procedure works in.

    w (N) = w (kN) × 1000

    Seismic loads and story drift to ASCE 7-22 frame/frame-concrete.js
    • CadCraft
    • BimCraft
    • DetailCraft
    64-bit
  • Period of the analyzed frame

    The fundamental period in each direction from the floor weights and the frame's displacements under the seismic forces.

    T = 2π √(Σ wᵢ δᵢ² ÷ (g Σ fᵢ δᵢ))

    Seismic loads and story drift to ASCE 7-22 frame/frame-concrete.js
    • CadCraft
    • BimCraft
    • DetailCraft
    64-bit
  • Weight of each floor from the loads

    The vertical load of chosen load cases gathered at each floor, as its seismic weight.

    node load = node forces + member equivalent loads + plate corner loads; each node's load goes to the floor at or above it

    Seismic loads and story drift to ASCE 7-22 frame/frame-concrete.js
    • CadCraft
    • BimCraft
    • DetailCraft
    64-bit
  • Arcs into chords

    Replaces each bulge arc of a path by straight chords that stay within a tolerance of the arc.

    θ = 4 atan(b); r = chord ÷ (2 sin(|θ| ÷ 2)); steps = ⌈|θ| ÷ (2 acos(1 − min(tol, r) ÷ r))⌉

    Laser job paths, fill lines and run estimate laser/laser-geom.js
    • CadCraft
    • PartCraft
    64-bit
  • Signed area of a loop

    The area of a closed path, used to tell which loop is the larger when one lies in another.

    A = ½ Σ (xᵢ yᵢ₊₁ − xᵢ₊₁ yᵢ)

    Laser job paths, fill lines and run estimate laser/laser-geom.js
    • CadCraft
    • PartCraft
    64-bit
  • Length of a path

    The total length of a flattened path.

    L = Σ √(Δx² + Δy²)

    Laser job paths, fill lines and run estimate laser/laser-geom.js
    • CadCraft
    • PartCraft
    64-bit
  • Which loop lies in which

    Counts how many other loops contain each loop, so inner shapes are cut first.

    two edge midpoints inside the other loop, and the other loop larger in area

    Laser job paths, fill lines and run estimate laser/laser-geom.js
    • CadCraft
    • PartCraft
    64-bit
  • Turn into and out of the fill direction

    Rotates a point by the fill angle so the fill lines are horizontal, and back.

    x′ = x cos a − y sin a; y′ = x sin a + y cos a; a in degrees × π ÷ 180

    Laser job paths, fill lines and run estimate laser/laser-geom.js
    • CadCraft
    • PartCraft
    64-bit
  • Fill lines of a closed shape

    The scan lines that fill the even–odd region of the loops, with the spans to burn on each line.

    y_k = (k + 0.5) × interval + offset; x = a_x + (b_x − a_x)(y − a_y) ÷ (b_y − a_y)

    Laser job paths, fill lines and run estimate laser/laser-geom.js
    • CadCraft
    • PartCraft
    64-bit
  • Machine coordinates

    Moves every point so the job's lower left corner is the machine's 0, 0.

    x_machine = x − x_origin; y_machine = y − y_origin

    Laser job paths, fill lines and run estimate laser/laser-plan.js
    • CadCraft
    • PartCraft
    64-bit
  • Burn length, travel and time

    The length burned, the length traveled with the laser off, and the time of the job.

    burn = Σ d × passes; time = Σ (d ÷ speed) × 60 × passes

    Laser job paths, fill lines and run estimate laser/laser-plan.js
    • CadCraft
    • PartCraft
    64-bit
  • Fill lines into moves

    Turns the fill lines back to drawing coordinates and adds the overscan before and after each line.

    start = first − dir × overscan; end = last + dir × overscan

    Laser job paths, fill lines and run estimate laser/laser-plan.js
    • CadCraft
    • PartCraft
    64-bit
  • Picture rows into moves

    Lays a picture's burn levels on its rectangle as rows of moves with a power for each run.

    cols = round(w ÷ interval); dx = w ÷ cols; y = y₀ + h − (r + 0.5) dy; power = min + (max − min) × level ÷ 255

    Laser job paths, fill lines and run estimate laser/laser-plan.js
    • CadCraft
    • PartCraft
    64-bit
  • Points written to a file

    Each point's northing, easting and elevation as text.

    text = v.toFixed(3); 0 when |v| < 0.0005

    Layout point files and as-built comparison layout/layout-points.js
    • CadCraft
    • BimCraft
    64-bit
  • Points read from a file

    Turns the northing, easting and elevation text of a row into numbers.

    x = Number(E); y = Number(N); z = Number(Z) or none

    Layout point files and as-built comparison layout/layout-points.js
    • CadCraft
    • BimCraft
    64-bit
  • Difference between a design and an as-built point

    The offsets in x, y and height, the horizontal and 3D distance, and whether the point is within tolerance.

    dh = √(dx² + dy²); d3 = √(dh² + dz²); out when dh > tol or |dz| > tolZ

    Layout point files and as-built comparison layout/layout-points.js
    • CadCraft
    • BimCraft
    64-bit
  • Matching points by nearness

    Pairs each design point with the closest unused as-built point within a radius.

    pairs sorted by horizontal distance, taken closest first; radius = 10 × tol by default

    Layout point files and as-built comparison layout/layout-points.js
    • CadCraft
    • BimCraft
    64-bit
  • Summary of the comparison

    The counts, the largest horizontal and height differences and the root mean square of the horizontal differences.

    rms = √(Σ dh² ÷ n)

    Layout point files and as-built comparison layout/layout-points.js
    • CadCraft
    • BimCraft
    64-bit
  • Comparison table

    The rows of the comparison as text for the page and the CSV.

    text = v.toFixed(3)

    Layout point files and as-built comparison layout/layout-points.js
    • CadCraft
    • BimCraft
    64-bit
  • Corners of a circle or polygon

    The corner points of a circle or regular polygon with a given number of sides.

    pᵢ = c + u·r·cos aᵢ + v·r·sin aᵢ, aᵢ = (i ÷ sides) × 2π

    Arcs, circles, smooth curves, divide and offset m3d/model.js
    • CadCraft
    • ModelCraft
    64-bit
  • Corners of an arc

    The corner points of an arc from its center, radius, sweep and segment count.

    pᵢ = c + u·r·cos aᵢ + v·r·sin aᵢ, aᵢ = sweep × i ÷ segs

    Arcs, circles, smooth curves, divide and offset m3d/model.js
    • CadCraft
    • ModelCraft
    64-bit
  • What a curve is

    The length, radius, center, normal and sweep reported for an arc, circle, polygon or smooth curve.

    length = Σ |segment|; center = circle through three corners; sweep = |Σ atan2((u₁ × u₂) · n, u₁ · u₂)|

    Arcs, circles, smooth curves, divide and offset m3d/model.js
    • CadCraft
    • ModelCraft
    64-bit
  • Give a curve a new radius

    Moves the corners of an arc, circle or polygon to a typed radius about its center.

    p′ = c + (p − c) × r ÷ r_old

    Arcs, circles, smooth curves, divide and offset m3d/model.js
    • CadCraft
    • ModelCraft
    64-bit
  • Equal division points

    Where the parts of an edge or curve divided into n equal parts meet.

    straight edge: a + (b − a) × (i + 1) ÷ n; arc: new corners at equal angles; other curve: equal lengths along its segments

    Arcs, circles, smooth curves, divide and offset m3d/model.js
    • CadCraft
    • ModelCraft
    64-bit
  • Dividing an edge or curve

    Adds the corners that divide an edge or curve into n equal parts.

    Arcs, circles, smooth curves, divide and offset m3d/model.js
    • CadCraft
    • ModelCraft
    64-bit
  • Points of a smooth curve

    The points of the smooth curve drawn through clicked points.

    centripetal Catmull–Rom: knot step = √|pᵢ₊₁ − pᵢ|, evaluated at k ÷ segs of each span

    Arcs, circles, smooth curves, divide and offset m3d/model.js
    • CadCraft
    • ModelCraft
    64-bit
  • Offset of a 2D outline

    The corners of an outline moved sideways by a distance.

    each segment line moved d along its left unit normal; corner = intersection of neighboring lines

    Arcs, circles, smooth curves, divide and offset m3d/model.js
    • CadCraft
    • ModelCraft
    64-bit
  • Do two outline segments cross

    The test that refuses an offset whose loops cross themselves or each other.

    Arcs, circles, smooth curves, divide and offset m3d/model.js
    • CadCraft
    • ModelCraft
    64-bit
  • Offset of a face's loops

    The offset outline of a face, back in 3D.

    p = u·x + v·y + n·h, h = p₀ · n

    Arcs, circles, smooth curves, divide and offset m3d/model.js
    • CadCraft
    • ModelCraft
    64-bit
  • Offset of a chain of edges

    The offset of a connected run of edges lying in one plane.

    Arcs, circles, smooth curves, divide and offset m3d/model.js
    • CadCraft
    • ModelCraft
    64-bit
  • Faces from imported polygons

    Builds faces from the polygons of an imported file, sharing vertices between them.

    key = round(x × 1e5), round(y × 1e5), round(z × 1e5)

    Welding of imported geometry m3d/model.js
    • CadCraft
    • ModelCraft
    64-bit
  • Edges from imported segments

    Builds plain edges from the line segments of an imported drawing.

    key = round(x × 1e5), round(y × 1e5), round(z × 1e5)

    Welding of imported geometry m3d/model.js
    • CadCraft
    • ModelCraft
    64-bit
  • OBJ number format

    How every coordinate and normal component is written in an OBJ file.

    text = x rounded to 6 decimals

    Export to OBJ and Collada m3d/io.js
    • CadCraft
    • ModelCraft
    64-bit
  • OBJ vertex

    A vertex of the model as it goes into the OBJ file.

    (x, y, z) → M · p → (x, z, −y)

    Export to OBJ and Collada m3d/io.js
    • CadCraft
    • ModelCraft
    64-bit
  • OBJ face normal

    The flat normal written for a face.

    N = Σ pᵢ × pᵢ₊₁, normalized

    Export to OBJ and Collada m3d/io.js
    • CadCraft
    • ModelCraft
    64-bit
  • OBJ vertex and normal lines

    The lines that carry the numbers.

    Export to OBJ and Collada m3d/io.js
    • CadCraft
    • ModelCraft
    64-bit
  • Collada number format

    How every number is written in a Collada file.

    text = x rounded to 12 significant digits

    Export to OBJ and Collada m3d/io.js
    • CadCraft
    • ModelCraft
    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.