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
-
Spacing cabinets round an arc
The angle at which each next cabinet stands so that it just clears the one before.
bisection on the angle step in 0…π ÷ 2, 60 halvings; clash when the footprints penetrate more than 1e-7
Cabinets on angled and curved walls addons/cabinetcraft/lib/angled.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Gaps and wedges between stepped cabinets
The largest gap between each cabinet's back and the curve, and the wedge left between neighbors.
bay gap = R − H; bow gap = √(R² + w² ÷ 4) − R; wedge back and front = distance between neighboring corners
Cabinets on angled and curved walls addons/cabinetcraft/lib/angled.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Length used along the arc
How much of the arc the cabinets take, and by how much the last one passes the end.
used = (end angle − start angle) × R; overflow = max(0, end angle − limit) × R
Cabinets on angled and curved walls addons/cabinetcraft/lib/angled.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Stop short of an angled corner
How far a run of cabinets must stop before a convex corner.
τ ≤ 90°: depth × sin τ; sharper: depth
Cabinets on angled and curved walls addons/cabinetcraft/lib/angled.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Void at an angled corner
The right-triangle void left where a run stops short of an angled corner.
leg₁ = d·sin τ; leg₂ = d·cos τ; area = leg₁·leg₂ ÷ 2
Cabinets on angled and curved walls addons/cabinetcraft/lib/angled.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Diagonal corner cabinet at any angle
The outline, miter, front length and area of a diagonal-front corner cabinet at a corner of turn τ.
ℓ = w − d·tan(τ ÷ 2); front = 2·ℓ·cos(τ ÷ 2); apex = 180° − τ; miter angle = 90° − τ ÷ 2; Q = (w − d·tan(τ ÷ 2), d)
Cabinets on angled and curved walls addons/cabinetcraft/lib/angled.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Area of a footprint
The area of a polygon.
A = |Σ (xᵢ·yᵢ₊₁ − xᵢ₊₁·yᵢ)| ÷ 2
Cabinets on angled and curved walls addons/cabinetcraft/lib/angled.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
A board along a slanted line
The four corners of a door or plinth board that runs along a diagonal.
n = (−Δy, Δx) ÷ L; corner = point + n × offset, rounded to 6 decimals
Corner cabinets: parts and solids addons/cabinetcraft/lib/corner.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Round shelf solid
The outline of a lazy-susan shelf as drawn in 3D.
20 points at (cx + r·cos(2πi ÷ 20), cy + r·sin(2πi ÷ 20))
Corner cabinets: parts and solids addons/cabinetcraft/lib/corner.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Open leg of a corner cabinet
The basic sizes of a corner cabinet: width, depth, open leg and top height.
a = w − d; top = kick + box height
Corner cabinets: parts and solids addons/cabinetcraft/lib/corner.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Lazy-susan shelf size and place
The diameter and center of the round shelves and the pole they turn on.
diameter = max(1, w − 2·(t + 70 mm)); clearance = back setback + back thickness + 12 mm; center = (w − r − clearance, r + clearance); pole = center ± 15
Corner cabinets: parts and solids addons/cabinetcraft/lib/corner.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Shelf heights
The height of each shelf inside the cabinet.
z = kick + t + (inside height) × (i + 1) ÷ (n + 1) − t ÷ 2
Corner cabinets: parts and solids addons/cabinetcraft/lib/corner.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Sizes entered in the cut list
The length and width of each board as they go into the cut list.
length, width → round(v × 1e6) ÷ 1e6
Corner cabinets: parts and solids addons/cabinetcraft/lib/corner.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Back panels
The size of the two back panels for a grooved, between or applied back.
grooved: height = box height − 2t + 2·groove, length + groove; between: height = box height − 2t; applied: full height and width
Corner cabinets: parts and solids addons/cabinetcraft/lib/corner.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Door and plinth sizes at a right-angled corner
The door height and width and the plinth length of a corner cabinet.
door height = box height − reveal; door width = a − reveal (L) or a·√2 − reveal (diagonal); plinth = a or a·√2
Corner cabinets: parts and solids addons/cabinetcraft/lib/corner.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Blank for the triangle of an angled corner
The smallest rectangle the triangular filler of an angled corner cabinet can be cut from, and the true front length.
axes along the triangle's first leg and across it; L = largest coordinate along, W = largest across; front = |F_B − F_A|
Corner cabinets: parts and solids addons/cabinetcraft/lib/corner.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Door and plinth sizes at an angled corner
The door and plinth of a diagonal corner cabinet at a corner that is not a right angle.
door width = front length − reveal; plinth = front length
Corner cabinets: parts and solids addons/cabinetcraft/lib/corner.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Mirrored corner cabinet
The same cabinet for a corner at the start of a run.
x → w − x, rounded to 6 decimals
Corner cabinets: parts and solids addons/cabinetcraft/lib/corner.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Rounding to 4 decimals
Rounds a coordinate to 4 decimals.
r4(v) = round(v × 1e4) ÷ 1e4
Cabinet shop drawings as drawing objects addons/cabinetcraft/lib/cadents.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Drawing item to drawing object
A line, outline or text of a shop drawing as a CadCraft object.
x, y, text height → r4; text rotation = degrees × π ÷ 180
Cabinet shop drawings as drawing objects addons/cabinetcraft/lib/cadents.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Dimensions
The linear dimensions of a shop drawing as dimension objects.
p₁, p₂ → r4; line position = p + offset → r4; dimension scale = max(0.01, text height ÷ 2.5) → r4
Cabinet shop drawings as drawing objects addons/cabinetcraft/lib/cadents.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Scaling to the drawing's unit
Every coordinate, text height and dimension scale multiplied by the drawing units per job unit.
v → r4(v × k)
Cabinet shop drawings as drawing objects addons/cabinetcraft/lib/cadents.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Scaling all sheets
All blocks and sheets scaled to the drawing's unit.
k = 1 → unchanged; else every block and sheet through scaleEnts, sheet w and h × k
Cabinet shop drawings as drawing objects addons/cabinetcraft/lib/cadents.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Moving a sheet into place
The objects of a sheet moved by an offset.
x → r4(x + dx); y → r4(y + dy)
Cabinet shop drawings as drawing objects addons/cabinetcraft/lib/cadents.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Triangles of a panel outline
Cuts a panel's outline into triangles for drawing.
ear when (b − a) × (c − a) > 1e-9 and no other point is inside the triangle
Cabinets as 3D viewport bodies addons/cabinetcraft/lib/bodies3d.js32-bit, display only- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Room coordinates to viewport coordinates
A point of the room in the viewport's axes and millimeters.
k = 25.4 (inch job) or 1; (x, y, z) → (x·k, z·k, −y·k)
Cabinets as 3D viewport bodies addons/cabinetcraft/lib/bodies3d.js32-bit, display only- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Board corners in the blank's own frame
Turns a board's corners from the cabinet frame into the frame of its blank, and takes the blank's length and width.
x′ = (p − o)·uₓ; y′ = (p − o)·u_y; L = max x′; W = max y′
Corner cabinet drilling positions addons/cabinetcraft/lib/cornerdrill.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Arm boards and triangle of a corner cabinet
The outlines of the bottom and top boards for each corner form, from the cabinet's width, depth and panel thickness.
Corner cabinet drilling positions addons/cabinetcraft/lib/cornerdrill.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
System hole grid along a side
The positions of the system holes along a side panel.
x = sysStart, sysStart + pitch, … while x ≤ len − sysStart
Corner cabinet drilling positions addons/cabinetcraft/lib/cornerdrill.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Hinge plate holes
Places the two plate holes of each hinge on the system grid of the side panel.
center = reveal ÷ 2 + hinge spot; first hole = grid hole nearest (center − pitch ÷ 2); second = first + pitch
Corner cabinet drilling positions addons/cabinetcraft/lib/cornerdrill.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Fixing holes along a joint
Places the dowel or cam holes on the edge two boards share, in each board's own frame.
P = p + (q − p) ÷ len × u, u = sysStart and len − sysStart, or len ÷ 2
Corner cabinet drilling positions addons/cabinetcraft/lib/cornerdrill.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Edge holes kept on the blank
Moves an edge hole back onto the blank when the cut part is a little smaller than the drawn board.
x = min(max(x, 0), part length); y = min(max(y, 0), part width)
Corner cabinet drilling positions addons/cabinetcraft/lib/cornerdrill.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Corners of a rectangle, L or U room
The corner list of a room from its width, depth and notch.
U notch start a = (W − notch w) ÷ 2
Room outline, walls and openings addons/cabinetcraft/lib/room.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Right-angled outline made safe
Checks a typed outline with right angles, drops repeated and collinear corners, makes it counter-clockwise and moves it to (0, 0).
2A = Σ (xᵢ yᵢ₊₁ − xᵢ₊₁ yᵢ); reject when |2A| < 1
Room outline, walls and openings addons/cabinetcraft/lib/room.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Do two edges cross
Decides whether two outline edges properly cross.
o(p, q, r) = (q − p) × (r − p); cross when the signs differ on both segments
Room outline, walls and openings addons/cabinetcraft/lib/room.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Arc walls as chords
Writes each arc wall out as short chords so the room can be tested as a polygon.
step = 2 × acos(max(0, 1 − 0.5 ÷ r)); n = ⌈|sweep| ÷ step⌉, between 4 and 400
Room outline, walls and openings addons/cabinetcraft/lib/room.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Free outline with slanted and arc walls
Checks an outline of any angle with arc edges and returns its corners, arcs and overall width and depth.
Room outline, walls and openings addons/cabinetcraft/lib/room.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Wall frames, lengths and corner turns
For each wall: its length, direction, the frame cabinets are placed in, its angle and the turn at each corner.
chord = √(Δx² + Δy²); u = Δ ÷ chord; n = (−u_y, uₓ); angle = atan2(u_y, uₓ) × 180 ÷ π
Room outline, walls and openings addons/cabinetcraft/lib/room.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Point inside the room
Tests whether a point is inside the outline; the boundary counts as inside.
on edge when |cross| < 1e-4 × max(1, edge length); else even-odd count of edges crossed by a ray
Room outline, walls and openings addons/cabinetcraft/lib/room.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Cabinet footprint inside the room
Decides whether a polygon lies inside the room.
Room outline, walls and openings addons/cabinetcraft/lib/room.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Distance from a point to a wall segment
The shortest distance from a point to a segment.
t = clamp((p − a)·(b − a) ÷ |b − a|², 0, 1); d = |p − (a + t (b − a))|
Room outline, walls and openings addons/cabinetcraft/lib/room.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Clearance from a footprint to the nearest wall
The smallest distance between a footprint and any wall, 0 when they touch or cross.
Room outline, walls and openings addons/cabinetcraft/lib/room.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Door and window positions along a wall
Clamps each opening's width, offset, height and sill to its wall and the room height.
inch default = mm default × (1 ÷ 25.4); at ≤ chord − w
Room outline, walls and openings addons/cabinetcraft/lib/room.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Floor strip in front of an opening
The four corners of the strip of floor in front of a door or window, in room coordinates.
P(s, o) = origin + u × s + n × o
Room outline, walls and openings addons/cabinetcraft/lib/room.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Typed corner coordinates
Reads x,y pairs typed by a person.
Room outline, walls and openings addons/cabinetcraft/lib/room.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Outline from edge lengths and turns
Corners of a right-angled outline from the length of each edge and a left or right turn at each corner.
pᵢ₊₁ = pᵢ + dir × lengthᵢ; dir turns by ±90°
Room outline, walls and openings addons/cabinetcraft/lib/room.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Outline from typed walls
Corners and arcs of an outline from typed wall lengths, directions and arc radii.
next = p + len × (cos θ, sin θ); arc chord = 2 r sin(|sweep| ÷ 2)
Room outline, walls and openings addons/cabinetcraft/lib/room.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Room outline from a host model, cleaned
Drops repeated and in-line points from a room outline given by the host app and makes it counter-clockwise.
drop b when |ab| < 1 or |(b − a) × (c − b)| < 1e-3 × max(1, |ab| × |bc|)
Room outline, walls and openings addons/cabinetcraft/lib/fromroom.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
-
Host room moved to (0, 0) and rounded
Shifts the host's outline so its lower-left corner is the origin and converts it to the job unit.
mm job: round(v × 10) ÷ 10; inch job: round(v ÷ 25.4 × 16) ÷ 16
Room outline, walls and openings addons/cabinetcraft/lib/fromroom.js64-bit- CadCraft
- BimCraft
- ModelCraft
- PartCraft
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.