diff --git a/docs/PRECISION.md b/docs/PRECISION.md new file mode 100644 index 0000000..f03c47e --- /dev/null +++ b/docs/PRECISION.md @@ -0,0 +1,323 @@ +# What "accurate" means here + +**Written for readers with no engineering background.** No mathematics beyond +arithmetic is required. + +--- + +## 0. Scope — read this before anything else + +This document has a deliberately narrow subject. It is not a guide to precision +in general, and it must not be allowed to become one. + +**In scope: two manufacturing families only.** + +- **Additive** — material added in layers. 3D printing of plastic, metal or + concrete. +- **Subtractive** — material cut away from a solid block. Milling, turning, + grinding, lapping, polishing. + +**Out of scope, and deliberately so:** + +- **Formative** processes — casting, forging, injection moulding, stamping, + sheet bending. Material reshaped rather than added or removed. +- **Crystal growth, deposition and lithography.** Semiconductor fabrication is a + different discipline with different physics and different units of concern. +- **Joining** — welding, adhesives, fasteners, fits and interference. +- **Metrology** — the science of measuring finished parts. +- **Surface finish** — roughness and texture, as opposed to dimension. These are + routinely confused; they are not the same property and are not discussed here. + +Section 5 is the only place another domain is mentioned at all, and it is +mentioned to *bound a claim*, not to extend the subject. + +**Why the boundary is drawn this hard.** The Mechanical Compiler produces +prismatic timber-strap members for additive and subtractive workflows. Every +number below was measured against that use. A tolerance figure borrowed from +casting or lithography would carry no evidence from this project and no +guarantee from this software, while looking exactly as authoritative as the +figures that do. **Scope creep in a specification is more dangerous than scope +creep in code, because nothing fails visibly when it happens.** + +--- + +## 1. The one idea that makes the rest make sense + +Nothing manufactured is exactly the size it was meant to be. + +Ask a carpenter for a shelf 800 mm long and you will get something between about +799 and 801 mm. Ask a machine shop and you will get 799.98 to 800.02. Nobody +ever hits the number exactly, because "exactly" would require infinite care. + +So engineering does not ask for exact. It asks for **exact enough, and states +how much is enough**. That stated allowance is a **tolerance**: + + 800 mm ± 0.05 mm + +meaning anything from 799.95 to 800.05 is acceptable. + +A tolerance describes the **worst** case, not the typical one. If a part is +usually within 0.05 mm but occasionally out by 0.5 mm, its tolerance is 0.5 mm. +The bad case is the one that jams the assembly. + +### Units + +| | | in mm | comparison | +|---|---|---|---| +| millimetre | mm | 1 | credit card ≈ 0.8 mm thick | +| micrometre ("micron") | µm | 0.001 | human hair: 20–100 µm across | +| nanometre | nm | 0.000001 | about 5 silicon atoms | + +**Anchor for everything below: a human hair is roughly 70 µm, or 0.07 mm.** + +--- + +## 2. Three different numbers, constantly confused + +**(a) Model precision.** How exactly the *design file* describes the intended +shape. No material involved. **This is the only one this software controls.** + +**(b) Machine resolution.** The smallest step a machine can be *commanded* to +take. "0.01 mm resolution" on a printer's spec sheet is this number. + +**(c) Achieved accuracy.** How far the *finished object* differs from the +design. The number that decides whether the part works. + +Resolution is the most quoted and least meaningful. A printer stepping in +0.01 mm increments can still produce a part 0.5 mm wrong, because plastic +shrinks, belts stretch, machines warm up, and parts sag. One industry write-up +puts it plainly: print resolution determines only the smallest feature the +software will not ignore. Building a wall from smaller bricks does not make the +wall the right length. + +> **The most common error in this area:** quoting a machine's resolution as +> though it were the accuracy of the result. + +--- + +## 3. The ladder of real-world precision + +Additive and subtractive only, per section 0. Typical values, not records; +every one depends on material, size, temperature and operator skill. + +| Process | Typical accuracy | In hairs (~70 µm) | +|---|---|---| +| 3D-printed concrete | ±0.5 mm at best, often several mm | 7+ | +| Desktop FDM printer | ±0.3 mm under 100 mm; ±0.2% above | 4 | +| Resin printer (SLA/DLP) | ±0.2 mm | 3 | +| Everyday CNC milling | ±0.025 mm | 1/3 | +| Good CNC milling | ±0.014 mm | 1/5 | +| CNC positioning, slow feed | ±0.0025 mm | 1/28 | +| Precision grinding | ±0.002 – 0.005 mm | 1/20 | +| Lapping / honing | 0.0001 – 0.001 mm | 1/700 | + +**Grinding and polishing do reach 0.001 mm and better.** Lapping works below one +micron routinely. + +Two observations. + +**The spread is a factor of several thousand** across these two families alone. +There is no single number for "how accurate is manufacturing." + +**Size makes it worse.** The FDM row switches from a fixed figure to a +*percentage* above 100 mm. Errors that scale with size — thermal expansion, +machine flex, shrinkage — are the norm. A process holding 0.014 mm on a small +part may hold only 0.097 mm at 500 mm. **This is why assembling large printed +structures is hard, and why it is not attempted here.** + +--- + +## 4. Why the design file must be far tighter than the machine + +> If no machine on Earth holds 0.0001 mm, why compute to 0.0001 mm? + +Because errors accumulate. A finished part's error is the sum of every +contribution: design, translation to machine instructions, machine motion, +material behaviour. If the design consumed a large share of the allowance, there +would be none left for the parts that genuinely cannot be improved. The common +rule of thumb is that the manufacturing process should consume only about **ten +percent** of the tolerance on the drawing. The design should consume far less. + +**An analogy.** You are budgeting a 60-minute journey. The train takes 45 +minutes and is sometimes 10 minutes late — unavoidable variability, so you plan +around it. The walk to the platform takes 4 minutes. You would not agonise over +whether it is 4 minutes or 4 minutes and 2 seconds. + +**The design file is the 2 seconds.** Computing to 0.0001 mm is not a claim that +any part will be that accurate. It guarantees the design contributes *nothing +worth counting* — that when a part comes out wrong, the file is not the reason. + +Model precision is cheap; machine precision is expensive. Grinding can cost +several times more than milling for the same feature. Tighter arithmetic costs +nothing — same runtime, same code. + +--- + +## 5. Curves, and the one hard limit + +Computers do not store curves. They store corners. + +Every rounded corner here is a fan of short straight lines, like a stop sign +standing in for a circle. The shape is always very slightly smaller than a true +circle, because each straight line cuts the corner. + +The setting is **`facets`**, currently **48** — a full circle drawn with 48 +segments. + +| Corner radius | Gap from the true curve | +|---|---| +| 1.25 mm (this project's 4-strap corners) | 0.0027 mm — 1/26 hair | +| 2.00 mm (this project's 3-strap corners) | 0.0043 mm — 1/16 hair | +| 4.67 mm | 0.0100 mm — the limit in section 6 | +| 50 mm | 0.107 mm — 1.5 hairs | + +**At fixed `facets`, the error is proportional to radius: double the radius, +double the error.** + +**The rule:** at `facets = 48`, radii up to **4.67 mm** stay within 0.01 mm of a +true curve. Above that, raise `facets`. The required count grows with the +*square root* of radius, so a 50 mm radius — forty times larger — needs +`facets = 158`, not forty times as many. + +Every shape this project produces uses radii of 1.25 to 2.00 mm, well inside the +limit. **A documented boundary, not a defect** — but a real one. + +### The only cross-domain note in this document + +It is sometimes said that greater precision is achievable in space. Within this +document's scope the claim does not apply: no additive or subtractive process +described above is performed in orbit at production scale. + +The evidence usually cited comes from **crystal growth**, which section 0 places +out of scope. Microgravity does improve *material quality* — a survey of 160 +semiconductor crystals grown in orbit between 1973 and 2016 found improvement in +at least one metric for 86% of materials studied. That is purity and uniformity, +not dimensional control. + +**The distinction:** space improves *what the material is*. It does not improve +*where the surface sits*. Different kinds of precision; improving one does not +improve the other. Nothing further about space belongs in this document. + +--- + +## 6. What the Mechanical Compiler guarantees + +**Every dimensional quantity agrees with the reference implementation to within +0.0001 mm, across all 123 verification cases, with no exceptions.** That covers +each cross-section's overall width and height, the thinnest surviving wall, and +every internally solved placement value. + +That is **100× tighter** than the 0.01 mm criterion adopted for this project, +and about 1/700 of a human hair. + +Boundary curves are within **0.0027 mm** (4-strap) and **0.0043 mm** (3-strap) +of true curves, per section 5. + +Accuracy does **not** degrade with object size. Positions are computed by direct +calculation — "this corner is where these two lines cross" — solved in one step +from the original numbers, never accumulated by adding increments. At a +coordinate of 100 metres the representational limit is around a hundred-billionth +of a millimetre. + +--- + +## 7. What the Mechanical Compiler does NOT do + +This section is as important as section 6 and should be read with equal weight. + +**It has no assembly layer.** It describes the cross-section of *one* member. +Nothing positions multiple members in a shared coordinate frame. For a bridge, +each component would be modelled to the accuracy above — arranging them into a +structure does not exist here and belongs in separate software. + +**It models one shape family.** Prismatic members: a two-dimensional +cross-section swept along a straight axis. Not tapers, not curved axes, not +varying sections, not surfaces of revolution, not anything organic. + +**It performs no engineering analysis whatsoever.** No stress, no load, no +deflection, no buckling, no fatigue, no thermal behaviour, no failure +prediction. It reports geometry — area, wall thickness, mass — and nothing about +whether a member will carry anything. **A part that passes every check in this +software may be structurally unsound.** Assessing that is a separate discipline +and requires a qualified engineer. + +**It verifies only its tested range.** 123 cases; strap widths 13.4–15.875 mm; +corner radii 1.25–2.00 mm. Outside that, no measurements exist. Section 5's +radius limit is exactly why this matters. + +**It agrees with a reference; it is not proven exact.** Both programs draw +curves with flat segments. Section 5 bounds the absolute error by calculation; +the test suite only checks that the two agree. + +**Cross-section area is held looser than dimensions.** Area is derived from the +flat-segment approximation, so it inherits it. Two correct programs can disagree +slightly on area while agreeing exactly on every dimension. Area is not a +position — it places no material — so it is held to the 0.01 mm-equivalent +criterion rather than 0.0001 mm. + +**It says nothing about surface finish, material properties, or joining.** Per +section 0. + +**It does not generate machine instructions.** No toolpaths, no G-code, no slicing. + +--- + +## 8. Summary + +- A tolerance is a stated allowance describing the **worst** case. +- **Resolution is not accuracy.** +- Within additive and subtractive processes, real accuracy spans a factor of + several thousand. Grinding and polishing reach 0.001 mm and better. +- The design must be **much tighter than the machine**, so it contributes + nothing worth counting. +- This software holds every dimension to **0.0001 mm** — 100× tighter than + required. +- Curves: fine below **4.67 mm radius**; above that raise `facets`, which grows + with the square root of radius. +- Accuracy does **not** degrade with object size. +- **One member at a time. No assembly. No structural analysis. No toolpaths.** + +--- + +## 9. References + +Machining and grinding tolerances: +- https://www.tuofa-cncmachining.com/tuofa-blog/standard-machining-tolerances.html +- https://www.fiveflute.com/guide/first-principles-of-manufacturing-cnc-milling-tolerances/ +- https://www.zenithinmfg.com/grinding-vs-milling-tolerances-guide/ +- https://www.lkmixer.com/blog/what-is-the-difference-between-grinding-and-lapping/ + +3D printing accuracy, and resolution versus accuracy: +- https://protoplastic.pl/en/dimensional-tolerances-technology-versus-3d-printing-accuracy/ +- https://projet.my/guide-to-3d-printing-tolerances-accuracy-and-precision/ + +Concrete printing: +- https://www.sciencedirect.com/science/article/pii/S0008884622000643 + +Microgravity materials (out of scope; cited only in section 5): +- https://www.nature.com/articles/s41526-024-00410-7 + +Standards worth knowing by name: **ISO 286** (fits and IT grades), **ISO 2768** +(general tolerances where none is stated), **ISO 230-4** (how machine-tool +accuracy is measured). + +Figures from commercial sources are typical values published by suppliers, not +independently verified measurements, and are indicative only. The claims in +sections 6 and 7 are measurements from this project's own test suite, +reproducible with `make test`. + +--- + +## 10. Maintenance note + +**This document is scoped by section 0. Additions that widen the scope should be +refused, not accommodated.** + +If a reader needs casting tolerances, weld distortion, surface roughness or +lithography, the answer is a different document — not another row in section 3's +table. Every such row would look as authoritative as the measured ones while +carrying no evidence from this project. + +Section 7 should grow more readily than section 6. A limitation discovered and +written down costs nothing; a limitation discovered by someone who trusted this +document costs a great deal more.