Three tessellations of an analytic cylinder
A cylinder supplies a curved reference whose radius is known independently of the generated mesh. Holding angular deflection fixed lets this experiment show what changes when the requested linear deflection becomes finer. The table records each output rather than assuming the requested tolerance is a measured error.
How this was measured
Create an analytic cylinder with radius 10 mm and height 20 mm, then import its STEP file at absolute linear deflections of 1, 0.1, and 0.01 mm with angular deflection fixed at 1 radian. Export and reread each STL. On horizontal edges of side triangles, compare the midpoint radius against the known 10 mm radius and report the largest sampled radial sag. Parse timings are single observations and include a cold first kernel load.
| Measurement | Value |
|---|---|
| reference / radius Mm | 10 |
| reference / height Mm | 20 |
| reference / volume Mm3 | 6283.18531 |
| settings / 0 / linear Mm | 1 |
| settings / 0 / angular Radians | 1 |
| settings / 0 / triangles | 48 |
| settings / 0 / dimensions | 19.70941817426052 × 19.85417748196108 × 20 |
| settings / 0 / units | mm |
| settings / 0 / open Edges | 0 |
| settings / 0 / inconsistent Edges | 0 |
| settings / 0 / non Manifold Edges | 0 |
| settings / 0 / degenerate Triangles | 0 |
| settings / 0 / components | 1 |
| settings / 0 / bytes | 2484 |
| settings / 0 / sampled Chord Error Mm | 0.290581826 |
| settings / 0 / parse Ms | 79.53425 |
| settings / 1 / linear Mm | 0.1 |
| settings / 1 / angular Radians | 1 |
| settings / 1 / triangles | 124 |
| settings / 1 / dimensions | 20 × 20 × 20 |
| settings / 1 / units | mm |
| settings / 1 / open Edges | 0 |
| settings / 1 / inconsistent Edges | 0 |
| settings / 1 / non Manifold Edges | 0 |
| settings / 1 / degenerate Triangles | 0 |
| settings / 1 / components | 1 |
| settings / 1 / bytes | 6284 |
| settings / 1 / sampled Chord Error Mm | 0.0481527333 |
| settings / 1 / parse Ms | 6.244083 |
| settings / 2 / linear Mm | 0.01 |
| settings / 2 / angular Radians | 1 |
| settings / 2 / triangles | 396 |
| settings / 2 / dimensions | 20 × 20 × 20 |
| settings / 2 / units | mm |
| settings / 2 / open Edges | 0 |
| settings / 2 / inconsistent Edges | 0 |
| settings / 2 / non Manifold Edges | 0 |
| settings / 2 / degenerate Triangles | 0 |
| settings / 2 / components | 1 |
| settings / 2 / bytes | 19884 |
| settings / 2 / sampled Chord Error Mm | 0.00493439634 |
| settings / 2 / parse Ms | 9.4495 |
| method | Maximum radial sag at sampled horizontal edges of side triangles against the analytic radius. This is sampled chord error, not a whole-surface error guarantee. |
What the result does not establish
The sampled chord error is not a whole-surface error bound or a manufacturing tolerance. Coarse mesh vertices may not reach the exact CAD bounding box. The counts and sizes apply to this source and kernel version; another surface or angular setting can give a different result.
Try these files
These samples were created by this project and released under CC0. They contain no visitor files. Sizes and SHA-256 hashes identify the exact bytes measured in this experiment.
- Project-created cylinder: radius 10 mm, height 20 mm. (STEP, 5,664 bytes)
SHA-256
0004159d7b2a121deb50aeba379c153ed27b412a8a38782a65513b3a58583a1e - Cylinder mesh requested at 1 mm and 1 radian deflection. (STL, 2,484 bytes)
SHA-256
bdc9ccb6e114a8551ddd7be048fc196698fdb7515809ac823cd8caeb6f05d48f - Cylinder mesh requested at 0.1 mm and 1 radian deflection. (STL, 6,284 bytes)
SHA-256
6b3f48cde1ce6947679e17bb4dfb113aae53e67a64ed5c651f2311551ddded9a - Cylinder mesh requested at 0.01 mm and 1 radian deflection. (STL, 19,884 bytes)
SHA-256
7eda344c85a068e99ebb04bd64850c96282c19f2b1ac88bcdc32c7a3f96de883
Use this result
Versions and reproduction
Evidence generated 2026-09-05T21:13:29.140Z. The checked-in generator rebuilds the sample collection and measurements with one command:
node --experimental-strip-types scripts/build-workbench-evidence.tsCAD source generation: scripts/build-workbench-cad.py with cadquery-ocp 7.9.3.1.1; checked-in analytic cylinder outputs. The STEP and IGES outputs are checked in so ordinary evidence rebuilds do not require Python.
- @astrojs/cloudflare
- 14.3.0
- @cloudflare/containers
- 0.3.7
- astro
- 7.3.1
- fflate
- 0.8.3
- jose
- 6.2.12
- occt-import-js
- 0.0.23
- rhino3dm
- 8.32.2
- three
- 0.185.1
Geometry source and generator SHA-256 hashes:
- core/affine.ts
- cff986695025f835e54c530ef654a3b7b19862d5f5feba08a361f2db708fbe65
- core/bytes.ts
- 850a1863a411549bbaf73e85d339dd3109fb57aca4e89e1cbeb0a06cdb3cc924
- core/convert.ts
- e9e96ecbb498338b85bc122a7e328ae9d96666b2dadce581e4f86e8b7b59689d
- core/deflate-validation.ts
- 7427464082422b2a484cb4b845e21a41dbb015ffddb83a4d1f938b6c32cb40f1
- core/detect.ts
- 4c64ca45732c4339749fed372b20e6996f17e1f4d307046ad71e047723ccf3e9
- core/formats.ts
- f037f0543d19f5ffebe97ea40450c5b646d6d5164ae4e816bf3dce6cf3685479
- core/index.ts
- 6dcf467a7b1952cf270fd834927404b19eb58bc6d1f2542d8c420bda90d4e3f7
- core/inspect.ts
- 44100ac51622e986e3ab63e49d6704dde539141454e273b76d5be70b5115a1ec
- core/model.ts
- bef860184a185c098d72d30a12cfaa7fe3199b96dbde0e65428b8f3bfe6c79a5
- core/read/3dm.ts
- f26a7d22c86dc6780ce218822eafa4cc5dbf76f35289a6266f6f2161bd84127e
- core/read/3ds.ts
- 0142d9f82937566220d6616c52800ffa856fff500bab3e26e90c0cdc0c6f7e32
- core/read/3mf-package.ts
- 11ad7a82d1dc5698412479d0c6351c5b88cfbc308ebee4a5d91fdc71d969af51
- core/read/3mf.ts
- 9378aa3156d5b908d4ce2ac551b76500247762de75a21b29ae0b2feb341a950e
- core/read/amf.ts
- b68b2de1c27d3c374ce4e2ce4215c8a6edcfbccac3e9a7ed0f623956cfe4afde
- core/read/dae.ts
- acf671ba4ea931ca4e958a67886978e61da9c7cb936cb835265f86d3b271b2c5
- core/read/fbx-scene.ts
- 89bb4fa1718fafa1e8dd8ec27197e83752fe8af7bf0c04b5d49586f611d9812d
- core/read/fbx.ts
- 33c87b835bf7ba11a2dd937fd78ff21a094076e9b9d95e7d24e40ea859c16bf3
- core/read/gltf.ts
- 23296adfe9591efb9a7179413bf5a1ffe9a47acffa3daf997055c20ebd249c6c
- core/read/obj.ts
- 86fe1097ed8c07d052753255a17adcd746d3ccd847351a5632f78ecb7b8f8605
- core/read/occt.ts
- 1c129dc8ffb4f03bc992dd8940681acb92a4ed03271ce47485f3ac1533182117
- core/read/ply.ts
- 3cac9da6d62be20ae016cef751b01c14c0ebccd67d921107c56e8297835d2933
- core/read/scene-validation.ts
- 62e1f08faf9a9253e3b5d6c15395cbc97bc093e3867ce1aab87a3af8db704ebc
- core/read/stl.ts
- ac53b792bd9cb8bff4366331fa0bb49844c7d6fcf9df47819cc75544e812dec9
- core/read/usdz.ts
- caded369def6d998931378c616c271c565840ad280e5d797d4674f2ab1222fcb
- core/read/workbench-3mf-reader.ts
- 5f5ec69531981e06ef5246debe02b89323b065c928988bdc85c5d4f7675660da
- core/read/wrl-preflight.ts
- 2a4ef48b020ef98b381ab33aa34266bb5c43de716e2e38256598d69996d235ac
- core/read/wrl.ts
- ad3d6869874f7a3ac51ca09d885af0dec0376249f395bc083f5d8961d8c228af
- core/report.ts
- 3758e6ea6f7453b23bb21682caa8828464add92d839c0cc8ae30fe46c4ca54fa
- core/three-bridge.ts
- 84d16dd2834354c360a85453499abfbc462cc616714fe7a04992ab18ab5037ff
- core/units.ts
- f5367c6aa2932463c90769fd0ac080e8a42aec71facf63ae32b0b08337020963
- core/wasm.ts
- 5022bce9c3bfcf438525245373c798ff153c5ba716203ce1224318f1093da739
- core/workbench/export.ts
- cd663d1787eb8b97268bf12c9967e598223b98a9701fcd5bc948913b39725f62
- core/workbench/geometry.ts
- 7228ab0996857e68d69ccb5575be641f07159bc340bbc9b660d31d39f7deea31
- core/workbench/tessellation.ts
- f0b644e54709887e5651cdd6264e8678ed56fb9c3aebf1bd4f20124ca8cc4aea
- core/workbench/workbench-capability-report.ts
- 4f06ec57789c96892f7691c8c691867364ce80822f5cfc97bdcbe896f47e45d4
- core/write/3mf.ts
- bf9afa50480b3cb71a2a768897b7dfd5347cafa6f4d3d59550c19edf4c80446a
- core/write/gltf.ts
- f650b65a62d81b2c617448053726e89b4a6e0beb27955dea8e1d413d4156c0a0
- core/write/obj.ts
- cb0b5571284c4fe9b217a82057fd0758d406bba0fd50815313fe4ca4d4f0248c
- core/write/ply.ts
- cd71a26936091a3619cd67f9dc609101aea8a1ee84bc7b5c7fafcc551a328797
- core/write/step.ts
- 05b888318d999a952aa5d9b2bddc47a79ef9d361b6828058df4b834c6ca886fd
- core/write/stl.ts
- bed130d62ee6a645d79ea8fdd70441e9abb0962354963798387601f458167323
- core/write/usdz.ts
- 4cd8d9bf0d1aa1755c374980e5fb863b3045979e8201f8d79fc8e0857c09e962
- core/xml-namespaces.ts
- 10820125e1331ee730f577319faea4f279f1dd5a7b29a4bb7ec56475b7a9b0d8
- core/xml.ts
- b1b9e09cda3013013956dd0c0ad915dc17d6ee499d9d0ec7cd6298aa5c625184
- core/zip-strict.ts
- 76bdd9135e717129fa130c5597134b96056e77dbe2f3b4ed493dacd98a1ba972
- core/zip-write.ts
- 4db10ba581fe543ff7b3330276c8843a6ca709884b570444ab523d49aa642771
- core/zip.ts
- 71749962d39fec82ede645be7d9193edaaec800b3de71527c2e32a80ad54f529
- corpus/workbench/cylinder.iges
- 81274edc6d86ea10fe439b7077d4a0451159d16bc9802d4c778556425631a507
- corpus/workbench/cylinder.step
- 0004159d7b2a121deb50aeba379c153ed27b412a8a38782a65513b3a58583a1e
- package-lock.json
- af6a2e949a477492e6adfcc9042705c4a785cff25715acf2ed4e85578a304627
- package.json
- f506303de4ba20f6ad49a2e862be535b1374ac2d6485f1875b01c04fc1426b8f
- scripts/build-workbench-cad.py
- 6498bdf6347ba27e6d12d3818b5793113c2e74d0d227c68ba9fab7d22dba97b1
- scripts/build-workbench-evidence.ts
- 68716afd03c0d6e79a051eac57cc7a37a26218b9b119857f35dfb1663ac8770a
- test/core/workbench-3mf-baseline.test.ts
- 486b840aae41494b9a501d1403cb98f8c991725327e40132d96d2e53788ae4de
- test/core/workbench-3mf-integration.test.ts
- 7486085c9367e2a543f321d63a49dc621670141812a90b46e7651a718a0e165c
- test/core/workbench-3mf-package.test.ts
- 6a44fe9c9c5e79b026155a3d25bcfd31e41a588fcd5b0cfddb9de9f370fe444d
- test/core/workbench-3mf-reader.test.ts
- 41b8112430e7a77b34e15e7bbe081f8548d4d686c5a98ac42dc72b7d651ddb40
- test/core/workbench-collada-transforms.test.ts
- a3a0191626f4f1603d8d393437312609cdd7b32e620a77e30965bb739eb03c70
- test/core/workbench-fbx-transforms.test.ts
- 3601ac964baaae9eecda62c2301babd740a850f7e6c0d6a7569545a412105cdb
- test/core/workbench-writer-transforms.test.ts
- 03e8b9524d2b952f94c2ffef015d3e9b6d3a2f1882f16cb2138e96eeb5b85af0
- test/core/workbench-wrl.test.ts
- eb2f2188c418080e14a4695f3b3025aaeb507a7ab5ea11be55cd7e17c4af76e4
- test/core/workbench-xml-namespaces.test.ts
- de2661f4bd9414972a916eb9616c3b4f2baf4ff2a71de8268ee3a77fe8e271f5
- test/core/workbench-zip-strict.test.ts
- 36b56e2b3b46c3e0fbeba5ee022057a33b3dd91a68af83e58c388af028fe4a6c
- test/fixtures/3mf-reader-baseline.json
- 91ebcb16f07e8154612d02724e55282727fec77f831535400b294ec9b61655ff
- test/fixtures/collada-transforms-baseline.json
- aaaeeb63ed51414e8a8e44e7d8fb0b5341cc3d9f96a6107c4fe4d3ef9a407150
- test/fixtures/workbench-3mf.ts
- 1b81c046312396e774bbf4c5ee7199c2eabc02ec4253d4fa2501ba8635b1a026
- test/fixtures/workbench-challenges.ts
- 1d452755c74fed6b00b607f3b794a7213dc3c82011471b33721dafefe69715ba
- test/fixtures/workbench-rhino.ts
- 2dc0df1e0ae5bdd1142d3ffadcedc767c613fe59fb66cf59e8a9067e253461f3
- test/fixtures/workbench-scene-readers.ts
- e2c424f846248286392ff58a6d7c01a4ecf251e4dc69a32c31e4bd59dc0cd950
- test/fixtures/workbench-wrl.ts
- 808710bd63fa0d1b2cec322184cf916ffaaa21152190e62b4f723d419fa6e5fa
- test/fixtures/workbench.ts
- 06a23ec65d5e9aaf663aca6ec65a5f2005f52d4e76d7cb8f77f088cdd1b992a5
- test/fixtures/writer-transforms-baseline.json
- f421c74d527e73d00cd191611ccc0beebc0f8c37899969418446724f84fb8172
- test/fixtures/writer-transforms.ts
- 42848e9870398b7858285e1b3450147d71a2c2dc91d4c614f950cd4ac6327555