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
-
Number typed in Quick select
The number a property is compared with in the Quick select dialog.
Cursor point and status readouts cadcraft.js64-bit- CadCraft
-
Turn sense of an angle constraint
Whether the angle between two constrained lines is measured counter-clockwise or clockwise after a mirror or a trim.
sign = +1 if atan2(u × v, u · v) ≥ 0, else −1
Constraints kept through mirror and trim ckeep.js64-bit- CadCraft
-
Which piece holds the original's ends
The piece of a trimmed line or arc that still has the original's start, and the one that still has its end.
start piece: t₀ ≤ 10⁻⁹; end piece: t₁ ≥ 1 − 10⁻⁹
Constraints kept through mirror and trim ckeep.js64-bit- CadCraft
-
Numbers in prompts and messages
A number written for a prompt's default or a message in the command history.
|n| < 10⁻¹⁰ → 0; otherwise n.toFixed(4) without trailing zeros
Typed points, distances and angles commands.js64-bit- CadCraft
-
Typed distance, number and angle
The value a prompt takes when a distance, a number or an angle is typed.
angle = degrees × π ÷ 180 (+ UCS angle for an absolute angle)
Typed points, distances and angles commands.js64-bit- CadCraft
-
Distance or angle shown by two clicks
The distance or the angle a prompt takes when it is shown by picking two points.
d = √(Δx² + Δy²); angle = atan2(Δy, Δx)
Typed points, distances and angles commands.js64-bit- CadCraft
-
Typed point
The point for typed coordinates: absolute, relative to the last point, polar, or a distance along the cursor direction.
x,y → UCS to world; @x,y → last + R(ucs)·(x, y); d<a → from + d·(cos, sin)(a·π ÷ 180 + UCS angle); d → base + d·(cos, sin)(atan2(cursor − base))
Typed points, distances and angles commands.js64-bit- CadCraft
-
Calculation on the command line
The result CAL prints for an expression such as 12'6"+3/4" or 2*450mm.
raw = value.toPrecision(12)
Typed points, distances and angles commands.js64-bit- CadCraft
-
Circle through three points
The center and radius of the circle through three picked points.
d = 2·(aₓ(b_y − c_y) + bₓ(c_y − a_y) + cₓ(a_y − b_y)); centerₓ = (|a|²(b_y − c_y) + |b|²(c_y − a_y) + |c|²(a_y − b_y)) ÷ d; r = |a − center|
Shapes made by the draw commands commands.js64-bit- CadCraft
-
Arc through three points
The center, radius and end angles of the arc from a start point through a second point to an end point.
center, r from circle3; counter-clockwise when (m − s) × (e − s) > 0; a₀ = atan2(s − center), a₁ = atan2(e − center)
Shapes made by the draw commands commands.js64-bit- CadCraft
-
Arc segment of a polyline
The bulge of a polyline's arc segment that leaves the last point along the previous segment's direction and ends at the picked point.
φ = angle(p → q) − tangent at p, wrapped to −π…π; bulge = tan(φ ÷ 2)
Shapes made by the draw commands commands.js64-bit- CadCraft
-
Circle from the two ends of a diameter
The center and radius of a circle given by two opposite points on it.
center = (a + b) ÷ 2; r = |b − a| ÷ 2
Shapes made by the draw commands commands.js64-bit- CadCraft
-
Arc from center, start and end
The radius and end angles of an arc given its center, its start point and a point toward its end.
r = |start − center|; a₀ = atan2(start − center); a₁ = atan2(end − center)
Shapes made by the draw commands commands.js64-bit- CadCraft
-
Rectangle from two corners
The closed four-corner polyline between two picked corners.
Shapes made by the draw commands commands.js64-bit- CadCraft
-
Regular polygon
The corners of a regular polygon inscribed in or drawn round a circle.
R = r (inscribed) or r ÷ cos(π ÷ n) (circumscribed); pᵢ = center + R·(cos, sin)(a₀ + i·2π ÷ n)
Shapes made by the draw commands commands.js64-bit- CadCraft
-
Ellipse from an axis and a half-width
The center, major-axis vector and axis ratio of an ellipse.
ratio = half-width ÷ L, kept in 10⁻⁶…1; if half-width d > L: major = d·(−m_y, mₓ) ÷ L, ratio = L ÷ d
Shapes made by the draw commands commands.js64-bit- CadCraft
-
Construction line at an angle
The direction of a construction line given by a typed angle, alone or measured from a picked straight object.
direction = (cos a, sin a); with a reference: a = atan2(u_y, uₓ) + typed angle
Shapes made by the draw commands commands.js64-bit- CadCraft
-
Construction line that bisects an angle
The direction of the line through a vertex that halves the angle between two legs.
b = unit(u₀ + u₁), u₀, u₁ the unit vectors of the legs
Shapes made by the draw commands commands.js64-bit- CadCraft
-
Construction line parallel at a distance
The point and direction of a construction line parallel to a picked straight object.
foot(q) = on + ((q − on)·u)·u; new point = foot(pick) + d·n, n = unit(side − foot(side))
Shapes made by the draw commands commands.js64-bit- CadCraft
-
Lines of single-line text
Where each further line of TEXT is placed below the first.
line k at start + k × 1.667 × h, at right angles to the text direction
Shapes made by the draw commands commands.js64-bit- CadCraft
-
Paragraph text box
The box between two picked corners, measured along the text's own direction, and the width and insertion point stored from it.
lx = d·u; ly = d·n, u = (cos rot, sin rot), n = (−sin rot, cos rot)
Shapes made by the draw commands commands.js64-bit- CadCraft
-
Move or copy through a transform
Applies one transform to the selected objects, replacing them or adding copies.
Move, rotate, scale, mirror, array, stretch and lengthen commands.js64-bit- CadCraft
-
Displacement for MOVE and COPY
The translation from a base point to a second point, or a typed displacement.
M = T(p − base)
Move, rotate, scale, mirror, array, stretch and lengthen commands.js64-bit- CadCraft
-
Rotate and scale about a base point
The transform for ROTATE and SCALE.
M = T(base) · R(a) · T(−base); M = T(base) · S(s) · T(−base)
Move, rotate, scale, mirror, array, stretch and lengthen commands.js64-bit- CadCraft
-
Mirror across a line
The transform that mirrors the selection across the line through two picked points.
M = T(a) · [cos 2θ, sin 2θ; sin 2θ, −cos 2θ] · T(−a), θ = atan2(b − a)
Move, rotate, scale, mirror, array, stretch and lengthen commands.js64-bit- CadCraft
-
Copies of a rectangular or polar array
The copies an array makes, in rows and columns or round a center.
rectangular: T(k·dx, r·dy); polar: step = fill ÷ items (full circle) or fill ÷ (items − 1); copy i = rotation by step × i about the center
Move, rotate, scale, mirror, array, stretch and lengthen commands.js64-bit- CadCraft
-
Which points a stretch moves
Whether a point lies inside one of the crossing windows that define a stretch.
minX − 10⁻⁹ ≤ x ≤ maxX + 10⁻⁹ and minY − 10⁻⁹ ≤ y ≤ maxY + 10⁻⁹
Move, rotate, scale, mirror, array, stretch and lengthen commands.js64-bit- CadCraft
-
Length change for LENGTHEN
How much an object's end moves for the delta, percent, total and dynamic options.
percent: Δ = L × (p ÷ 100 − 1); total: Δ = total − L; total angle: Δθ = angle − sweep; dynamic: Δ = ((cursor − A)·(B − A)) ÷ |B − A| − |B − A|
Move, rotate, scale, mirror, array, stretch and lengthen commands.js64-bit- CadCraft
-
Nearest position on a line or arc
The position (0 at the start, 1 at the end) of the point on a line or arc nearest a given point.
line: t = clamp(((q − p₁)·(p₂ − p₁)) ÷ |p₂ − p₁|², 0, 1); arc: t = (angle from the start) ÷ sweep
Move, rotate, scale, mirror, array, stretch and lengthen commands.js64-bit- CadCraft
-
Point on an object nearest a pick
Where a break point or a pick lands on a line, arc, circle or polyline.
Move, rotate, scale, mirror, array, stretch and lengthen commands.js64-bit- CadCraft
-
Offset distance through a point
The distance OFFSET uses: the typed one, or the distance from the object to a picked point.
through: d = min over the primitives of |p − nearest point on the primitive|
Move, rotate, scale, mirror, array, stretch and lengthen commands.js64-bit- CadCraft
-
Distance, Δx, Δy and angle between two points
What DIST prints for two picked points.
d = √(Δx² + Δy²); angle = atan2(Δy, Δx), normalized to 0…360°
Distance, area, angle and point inquiries commands.js64-bit- CadCraft
-
Area and perimeter of picked points
The area and perimeter of the outline through points picked one by one.
area = |Σ (xᵢ·yᵢ₊₁ − xᵢ₊₁·yᵢ)| ÷ 2; perimeter = Σ |pᵢ₊₁ − pᵢ|
Distance, area, angle and point inquiries commands.js64-bit- CadCraft
-
Area and perimeter of an object
What AREA prints for a picked circle, polyline, ellipse or hatch.
Distance, area, angle and point inquiries commands.js64-bit- CadCraft
-
Running area total
The total AREA keeps while areas are added and subtracted.
total = Σ ± areaᵢ
Distance, area, angle and point inquiries commands.js64-bit- CadCraft
-
Angle at a vertex, of an arc, or between two lines
The angle MEASUREGEOM prints.
angle = |atan2(b − v) − atan2(a − v)|, folded to 0…180°; arc: its sweep, with 0 read as 360°
Distance, area, angle and point inquiries commands.js64-bit- CadCraft
-
Coordinates of a point
What ID prints for a picked point.
Distance, area, angle and point inquiries commands.js64-bit- CadCraft
-
One object in a line of text
The description LIST prints and assistants read for an object: its points, length, radius and angles.
line length = √(Δx² + Δy²); angles in degrees = radians × 180 ÷ π
Distance, area, angle and point inquiries commands.js64-bit- CadCraft
-
Units of exported points
The factor between drawing units and the units of the point file EXPORTPOINTS writes.
factor = mm per unit ÷ 1000 (meters), ÷ 304.8 (feet), or 1 (drawing units)
Distance, area, angle and point inquiries commands.js64-bit- CadCraft
-
Two origins of a linear dimension
The two points a linear or aligned dimension measures between: picked, or the ends of a picked object.
arc end = center + r·(cos a, sin a); circle: (cx − r, cy) and (cx + r, cy)
Where dimensions are attached commands.js64-bit- CadCraft
-
Horizontal or vertical
Whether a linear dimension measures along the X or the Y axis, from where its line is placed.
Where dimensions are attached commands.js64-bit- CadCraft
-
Point on the circle for a radius or diameter
The point on an arc or circle that a radius or diameter dimension is attached to.
p₁ = center + r·(cos, sin)(atan2(cursor − center))
Where dimensions are attached commands.js64-bit- CadCraft
-
Are two lines parallel
Whether two picked lines have an angle between them that can be dimensioned.
parallel when |e × f| < 10⁻¹² × |e| × |f|
Where dimensions are attached commands.js64-bit- CadCraft
-
Continued and baseline dimensions
The origins and line position of each dimension added by DIMCONTINUE or DIMBASELINE.
baseline: loc = previous loc + dli × scale × side × (−sin rot, cos rot), dli defaults to 3.75
Where dimensions are attached commands.js64-bit- CadCraft
-
Origin and X axis from two points
The coordinate system with its origin at a picked point and its X axis toward a second point.
origin = o; angle = atan2(pₓ − o) (ucs.js threePoint)
User coordinate system set by command commands.js64-bit- CadCraft
-
Rotation about Z
The coordinate system turned by a typed angle about its own origin.
angle = current angle + a (a defaults to π ÷ 2)
User coordinate system set by command commands.js64-bit- CadCraft
-
Quarter turn
The coordinate system turned a quarter left or right, or set back to the world.
angle = current angle ± π ÷ 2
User coordinate system set by command commands.js64-bit- CadCraft
-
What UCS prints
The origin and angle of the coordinate system as printed in the command history.
angle shown = (angle mod 2π) × 180 ÷ π, at most 4 decimals
User coordinate system set by command commands.js64-bit- CadCraft
-
Viewport from two corners
The size and center of a new viewport, and what it shows.
w = |Δx|; h = |Δy|; center = (a + b) ÷ 2
Viewports on a sheet commands.js64-bit- CadCraft
-
Scale that fits a named view
The viewport scale at which a saved view of the model fills the viewport.
s = min(viewport w ÷ view w, viewport h ÷ view h)
Viewports on a sheet commands.js64-bit- CadCraft
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.