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

  • Joint merge

    Reuses an existing joint when a new one is asked for at the same place.

    Truss geometry, cut list and shop outputs addons/trusscraft/lib/geometry.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Member length and angle

    The centerline length and the slope angle of a member between two joints.

    len = √(Δx² + Δz²); angle = |atan2(Δz, Δx)| in degrees

    Truss geometry, cut list and shop outputs addons/trusscraft/lib/geometry.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Frame of a named truss type

    The joints and members of a king, queen, Howe, Pratt, Fink, scissor, mono or attic truss from span, pitch and overhang.

    rise(x) = min(x, span − x) × tan(pitch); panel points at span × i ÷ n

    Truss geometry, cut list and shop outputs addons/trusscraft/lib/geometry.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Bearing stubs under a raised heel

    Adds a vertical stub under each heel joint when the heel is raised.

    Truss geometry, cut list and shop outputs addons/trusscraft/lib/geometry.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Heel depth and raise

    The heel depth the chords need at the outer face and how far a taller stated heel raises the truss.

    needed = d_bottom ÷ 2 + d_top ÷ (2 cos pitch); raise = max(0, heel − needed)

    Truss geometry, cut list and shop outputs addons/trusscraft/lib/geometry.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Roof section along a truss line

    The height of the roof's underside along the line a truss stands on.

    z = start + (n·p − c) ÷ speed on each face; highest face wins

    Truss geometry, cut list and shop outputs addons/trusscraft/lib/profile.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Profile simplification

    Removes repeated points and points that lie on a straight line between their neighbors.

    Truss geometry, cut list and shop outputs addons/trusscraft/lib/profile.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Height of a profile at x

    The profile's height at a distance along the truss.

    z = z₀ + (z₁ − z₀)(x − x₀) ÷ (x₁ − x₀)

    Truss geometry, cut list and shop outputs addons/trusscraft/lib/profile.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • What a profile is

    Decides whether a roof section is a plain triangle, has a flat top, has a valley across it, and is symmetric.

    Truss geometry, cut list and shop outputs addons/trusscraft/lib/profile.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Frame from a roof profile

    The joints and members of a truss whose top chord follows the roof's section.

    pitch = atan(slope of the first panel), or atan(steepest profile slope) when the left end stands on a post

    Truss geometry, cut list and shop outputs addons/trusscraft/lib/profile.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Chord pieces

    Joins chord members that run straight on through a joint into one piece of timber, with its length.

    joined when acos(|u·v|) < 0.5°; len = √(Δx² + Δz²)

    Truss geometry, cut list and shop outputs addons/trusscraft/lib/cutlist.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Cut length and end angles

    The length to cut each piece and the angle of each end cut.

    cut = joint length − set_A − set_B + (d ÷ 2)(tan A + tan B); web set = (host depth ÷ 2) ÷ max(0.2, sin φ)

    Truss geometry, cut list and shop outputs addons/trusscraft/lib/cutlist.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Member list values

    The length, angle, force and utilization shown for each member.

    Truss geometry, cut list and shop outputs addons/trusscraft/lib/cutlist.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Joint schedule and plate choice

    The members meeting at each joint with their angles and forces, and the first plate of the table that fits.

    plate: capacity ≥ largest |force| and min(w, h) ≥ min(deepest member + 25, 152)

    Truss geometry, cut list and shop outputs addons/trusscraft/lib/cutlist.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Bird's mouth cut

    The plumb cut of a rafter seat and the depth left above it.

    plumb = seat × tan(pitch); left = depth − plumb × cos(pitch)

    Truss geometry, cut list and shop outputs addons/trusscraft/lib/cutlist.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Jig drawing at full size

    The outline of every member on the 1:1 jig sheet.

    corner = joint ± (−Δz, Δx) ÷ L × d ÷ 2

    Truss geometry, cut list and shop outputs addons/trusscraft/lib/fab.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Stock plan

    Nests the cut pieces of a truss set onto stock lengths and lists them as CSV.

    Truss geometry, cut list and shop outputs addons/trusscraft/lib/fab.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Member as a solid

    A closed box for one member from its two end points, depth and thickness, with its volume.

    V = |Σ a · (b × c) ÷ 6| over the 12 triangles

    Truss geometry, cut list and shop outputs addons/trusscraft/lib/bodies.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Members placed in plan and height

    The 3D end points of every member of a laid-out truss.

    p = a + x × (b − a) ÷ span; z = z₀ + node z + raise + base

    Truss geometry, cut list and shop outputs addons/trusscraft/lib/bodies.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • STL export

    The truss set written as an ASCII STL file.

    text = round(v × 1000) ÷ 1000

    Truss geometry, cut list and shop outputs addons/trusscraft/lib/bodies.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • OBJ export

    The truss set written as an OBJ file.

    Truss geometry, cut list and shop outputs addons/trusscraft/lib/bodies.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Millimeters to drawing coordinates

    Places truss drawings in a CadCraft drawing at a point and a scale.

    X = at_x + x × k; Y = at_y + y × k

    Truss geometry, cut list and shop outputs addons/trusscraft/lib/cadplan.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Member outlines in the elevation

    The closed outline drawn for each member in the truss elevation.

    corner = joint ± (−Δz, Δx) ÷ L × d ÷ 2

    Truss geometry, cut list and shop outputs addons/trusscraft/lib/cadplan.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Force labels in the force diagram

    The force written beside each member.

    Truss geometry, cut list and shop outputs addons/trusscraft/lib/cadplan.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Schedule rows in the drawing

    The cut list and joint schedule as rows of a table drawn in CadCraft.

    Truss geometry, cut list and shop outputs addons/trusscraft/lib/cadplan.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Dimension labels on the elevation picture

    The span, overhang, pitch, rise and heel written on the truss elevation.

    Truss geometry, cut list and shop outputs addons/trusscraft/lib/drawing.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Outline area

    The signed area of the roof outline.

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

    Truss layout over a roof addons/trusscraft/lib/layout.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Where a truss line crosses the outline

    The points where a station line enters and leaves the roof outline.

    v = a_v + (u − a_u) ÷ (b_u − a_u) × (b_v − a_v)

    Truss layout over a roof addons/trusscraft/lib/layout.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Trusses along an outline

    The station, end points and span of each truss over a plain outline, and the actual spacing.

    bays = ceil(length ÷ spacing); step = length ÷ bays; span = v₁ − v₀

    Truss layout over a roof addons/trusscraft/lib/layout.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Ridge direction

    The direction the ridge runs, which the trusses span across.

    Truss layout over a roof addons/trusscraft/lib/roofset.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Valley pairs of a roof plan

    Finds pairs of valley lines that meet at a wing's ridge, with the wing's axis and reach.

    Truss layout over a roof addons/trusscraft/lib/roofset.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Valley truss set

    The span, rise, base height and position of each valley truss of a wing roof over a main roof.

    ridge height = (W ÷ 2) tan(wing pitch); rise = d × tan(main pitch); span = 2 d tan(main pitch) ÷ tan(wing pitch)

    Truss layout over a roof addons/trusscraft/lib/roofset.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Stations along the ridge

    The truss stations of a roof and the stretches of each station that lie inside the outline.

    bays = ceil(length ÷ spacing); u = u₀ + inset + i × step

    Truss layout over a roof addons/trusscraft/lib/roofset.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • A truss from a roof section

    Decides the form of the truss at a station, its design key, and the values stored for it.

    common truss pitch = atan(2 × apex ÷ span)

    Truss layout over a roof addons/trusscraft/lib/roofset.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Jack trusses in a hip end

    The jack and corner trusses between the end wall and a girder truss, and where each bears on the girder.

    count = ceil((width − 2 × inset) ÷ spacing); v = v₀ + inset + k × step

    Truss layout over a roof addons/trusscraft/lib/roofset.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Member lines for the picture

    The 3D end points of every member, for drawing.

    Truss layout 3D picture addons/trusscraft/lib/view3d.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    32-bit, display only
  • View projection

    Turns 3D points into picture coordinates for a view direction.

    x′ = x cos A − y sin A; y′ = −(z cos E + (x sin A + y cos A) sin E)

    Truss layout 3D picture addons/trusscraft/lib/view3d.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    32-bit, display only
  • Picture output

    Scales the projected lines to the picture size and writes them as SVG.

    Truss layout 3D picture addons/trusscraft/lib/view3d.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    32-bit, display only
  • Height of a roof face over a point

    The height of a face's plane above a plan point.

    z = start + (n·p − c) ÷ speed

    Roof faces, ridges and areas from an outline addons/trusscraft/lib/bim/res-skeleton.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Solver tolerance

    Sets the tolerance every merge, split and overlap test in the roof solver uses.

    scale = max(1, width, depth of the outline); eps = 1e-7 × scale

    Roof faces, ridges and areas from an outline addons/trusscraft/lib/bim/res-skeleton.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Edge lines

    The direction, inward normal and line offset of each eave edge.

    u = (b − a) ÷ |b − a|; n = (−u_y, u_x); c = n·a

    Roof faces, ridges and areas from an outline addons/trusscraft/lib/bim/res-skeleton.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Corner velocity

    How a corner of the shrinking polygon moves per unit of height.

    n_a·v = v_a; n_b·v = v_b; determinant = n_a × n_b

    Roof faces, ridges and areas from an outline addons/trusscraft/lib/bim/res-skeleton.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Next event height

    Finds the height at which the polygon next changes: an edge starts to move, an edge shrinks to nothing, or a reflex corner reaches another edge.

    collapse: t = T + length ÷ closing rate; split: t = T + distance ÷ approach rate

    Roof faces, ridges and areas from an outline addons/trusscraft/lib/bim/res-skeleton.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Advance to the event

    Moves every corner to the event height and records its path as a roof line and a face boundary.

    p′ = p + v × (t_next − T)

    Roof faces, ridges and areas from an outline addons/trusscraft/lib/bim/res-skeleton.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Clean-up after an event

    Merges corners that met, removes edges folded onto each other as ridges, splits a loop a corner has cut, and closes loops with no area left.

    Roof faces, ridges and areas from an outline addons/trusscraft/lib/bim/res-skeleton.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Shared part of two folded edges

    The stretch two opposite edges on one line have in common, which becomes a ridge.

    Roof faces, ridges and areas from an outline addons/trusscraft/lib/bim/res-skeleton.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Face boundaries chained into polygons

    Joins the boundary pieces of a face into closed loops.

    Roof faces, ridges and areas from an outline addons/trusscraft/lib/bim/res-skeleton.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Collinear points removed from a face

    Drops points of a face polygon that lie on the line between their neighbors.

    removed when |u × v| ÷ max(|u|, |v|) ≤ tolerance

    Roof faces, ridges and areas from an outline addons/trusscraft/lib/bim/res-skeleton.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Roof lines joined end to end

    Joins the pieces of one ridge, hip or valley into a single line.

    joined when ends meet within tolerance and cos θ ≥ 1 − 1e-9

    Roof faces, ridges and areas from an outline addons/trusscraft/lib/bim/res-skeleton.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Faces kept

    Builds each face's plan polygon and drops slivers.

    Roof faces, ridges and areas from an outline addons/trusscraft/lib/bim/res-skeleton.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • PartCraft
    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.