[{"data":1,"prerenderedAt":1145},["ShallowReactive",2],{"navigation-docsTs":3,"lib-picker-navigation":146,"docsTs-\u002Fts\u002Fgetting-started\u002Frelease-notes":429,"docsTs-\u002Fts\u002Fgetting-started\u002Frelease-notes-surround":1140},[4],{"title":5,"path":6,"stem":7,"children":8,"page":32},"Ts","\u002Fts","ts",[9,33,100,105,127],{"title":10,"path":11,"stem":12,"children":13,"icon":32},"Getting Started","\u002Fts\u002Fgetting-started","ts\u002F1.getting-started\u002F1.index",[14,17,22,27],{"title":15,"path":11,"stem":12,"icon":16},"Introduction","i-lucide-house",{"title":18,"path":19,"stem":20,"icon":21},"Installation","\u002Fts\u002Fgetting-started\u002Finstallation","ts\u002F1.getting-started\u002F2.installation","i-lucide-download",{"title":23,"path":24,"stem":25,"icon":26},"Live Examples","\u002Fts\u002Fgetting-started\u002Flive-examples","ts\u002F1.getting-started\u002F3.live-examples","i-lucide-play",{"title":28,"path":29,"stem":30,"icon":31},"Release Notes","\u002Fts\u002Fgetting-started\u002Frelease-notes","ts\u002F1.getting-started\u002F4.release-notes","i-lucide-sparkles",false,{"title":34,"path":35,"stem":36,"children":37,"icon":32},"Modules","\u002Fts\u002Fmodules","ts\u002F2.modules\u002F00.index",[38,41,46,51,56,61,66,71,76,81,86,90,95],{"title":39,"path":35,"stem":36,"icon":40},"Overview","i-lucide-library",{"title":42,"path":43,"stem":44,"icon":45},"Core","\u002Fts\u002Fmodules\u002Fcore","ts\u002F2.modules\u002F01.core","i-lucide-atom",{"title":47,"path":48,"stem":49,"icon":50},"Spatial","\u002Fts\u002Fmodules\u002Fspatial","ts\u002F2.modules\u002F02.spatial","i-lucide-scale-3d",{"title":52,"path":53,"stem":54,"icon":55},"Topology","\u002Fts\u002Fmodules\u002Ftopology","ts\u002F2.modules\u002F03.topology","i-lucide-git-graph",{"title":57,"path":58,"stem":59,"icon":60},"Geometry","\u002Fts\u002Fmodules\u002Fgeometry","ts\u002F2.modules\u002F04.geometry","i-lucide-ruler",{"title":62,"path":63,"stem":64,"icon":65},"Remesh","\u002Fts\u002Fmodules\u002Fremesh","ts\u002F2.modules\u002F05.remesh","i-lucide-triangle",{"title":67,"path":68,"stem":69,"icon":70},"Intersect","\u002Fts\u002Fmodules\u002Fintersect","ts\u002F2.modules\u002F06.intersect","i-lucide-squares-intersect",{"title":72,"path":73,"stem":74,"icon":75},"Arrangement","\u002Fts\u002Fmodules\u002Farrangement","ts\u002F2.modules\u002F07.arrangement","i-lucide-scissors",{"title":77,"path":78,"stem":79,"icon":80},"Iso","\u002Fts\u002Fmodules\u002Fiso","ts\u002F2.modules\u002F08.iso","i-lucide-waves",{"title":82,"path":83,"stem":84,"icon":85},"CSG","\u002Fts\u002Fmodules\u002Fcsg","ts\u002F2.modules\u002F09.csg","i-lucide-shapes",{"title":87,"path":88,"stem":89,"icon":31},"Clean","\u002Fts\u002Fmodules\u002Fclean","ts\u002F2.modules\u002F10.clean",{"title":91,"path":92,"stem":93,"icon":94},"Reindex","\u002Fts\u002Fmodules\u002Freindex","ts\u002F2.modules\u002F11.reidx","i-lucide-shuffle",{"title":96,"path":97,"stem":98,"icon":99},"I\u002FO","\u002Fts\u002Fmodules\u002Fio","ts\u002F2.modules\u002F12.io","i-lucide-file-input",{"title":101,"path":102,"stem":103,"icon":104},"Benchmarks","\u002Fts\u002Fbenchmarks","ts\u002F3.benchmarks","i-lucide-chart-bar-stacked",{"title":106,"path":107,"stem":108,"children":109,"icon":32},"Examples","\u002Fts\u002Fexamples","ts\u002F4.examples\u002F0.index",[110,112,117,122],{"title":39,"path":107,"stem":108,"icon":111},"i-lucide-book-open",{"title":113,"path":114,"stem":115,"icon":116},"Core Functionality","\u002Fts\u002Fexamples\u002Fcore-functionality","ts\u002F4.examples\u002F2.core-functionality","i-lucide-code",{"title":118,"path":119,"stem":120,"icon":121},"Alignment","\u002Fts\u002Fexamples\u002Falignment","ts\u002F4.examples\u002F3.alignment","i-lucide-move-3d",{"title":123,"path":124,"stem":125,"icon":126},"Raycast Rendering","\u002Fts\u002Fexamples\u002Fraycast-render","ts\u002F4.examples\u002F4.raycast-render","i-lucide-image",{"title":128,"icon":32,"path":129,"stem":130,"children":131,"page":32},"About","\u002Fts\u002Fabout","ts\u002F5.about",[132,136,141],{"title":133,"path":134,"stem":135,"icon":111},"Research","\u002Fts\u002Fabout\u002Fresearch","ts\u002F5.about\u002F1.research",{"title":137,"path":138,"stem":139,"icon":140},"Contributing","\u002Fts\u002Fabout\u002Fcontributing","ts\u002F5.about\u002F2.contributing","i-lucide-heart-handshake",{"title":142,"path":143,"stem":144,"icon":145},"License","\u002Fts\u002Fabout\u002Flicense","ts\u002F5.about\u002F3.license","i-lucide-file-text",{"cpp":147,"py":276,"ts":393},[148],{"title":149,"path":150,"stem":151,"children":152,"page":32},"Cpp","\u002Fcpp","cpp",[153,167,208,211,234,263],{"title":10,"path":154,"stem":155,"children":156,"icon":32},"\u002Fcpp\u002Fgetting-started","cpp\u002F1.getting-started\u002F1.index",[157,158,161,164],{"title":15,"path":154,"stem":155,"icon":16},{"title":18,"path":159,"stem":160,"icon":21},"\u002Fcpp\u002Fgetting-started\u002Finstallation","cpp\u002F1.getting-started\u002F2.installation",{"title":23,"path":162,"stem":163,"icon":26},"\u002Fcpp\u002Fgetting-started\u002Flive-examples","cpp\u002F1.getting-started\u002F3.live-examples",{"title":28,"path":165,"stem":166,"icon":31},"\u002Fcpp\u002Fgetting-started\u002Frelease-notes","cpp\u002F1.getting-started\u002F4.release-notes",{"title":34,"path":168,"stem":169,"children":170,"icon":32},"\u002Fcpp\u002Fmodules","cpp\u002F2.modules\u002F00.index",[171,172,175,178,181,184,187,190,193,196,199,202,205],{"title":39,"path":168,"stem":169,"icon":40},{"title":42,"path":173,"stem":174,"icon":45},"\u002Fcpp\u002Fmodules\u002Fcore","cpp\u002F2.modules\u002F01.core",{"title":47,"path":176,"stem":177,"icon":50},"\u002Fcpp\u002Fmodules\u002Fspatial","cpp\u002F2.modules\u002F02.spatial",{"title":52,"path":179,"stem":180,"icon":55},"\u002Fcpp\u002Fmodules\u002Ftopology","cpp\u002F2.modules\u002F03.topology",{"title":57,"path":182,"stem":183,"icon":60},"\u002Fcpp\u002Fmodules\u002Fgeometry","cpp\u002F2.modules\u002F04.geometry",{"title":62,"path":185,"stem":186,"icon":65},"\u002Fcpp\u002Fmodules\u002Fremesh","cpp\u002F2.modules\u002F05.remesh",{"title":67,"path":188,"stem":189,"icon":70},"\u002Fcpp\u002Fmodules\u002Fintersect","cpp\u002F2.modules\u002F06.intersect",{"title":72,"path":191,"stem":192,"icon":75},"\u002Fcpp\u002Fmodules\u002Farrangement","cpp\u002F2.modules\u002F07.arrangement",{"title":77,"path":194,"stem":195,"icon":80},"\u002Fcpp\u002Fmodules\u002Fiso","cpp\u002F2.modules\u002F08.iso",{"title":82,"path":197,"stem":198,"icon":85},"\u002Fcpp\u002Fmodules\u002Fcsg","cpp\u002F2.modules\u002F09.csg",{"title":87,"path":200,"stem":201,"icon":31},"\u002Fcpp\u002Fmodules\u002Fclean","cpp\u002F2.modules\u002F10.clean",{"title":91,"path":203,"stem":204,"icon":94},"\u002Fcpp\u002Fmodules\u002Freindex","cpp\u002F2.modules\u002F11.reidx",{"title":96,"path":206,"stem":207,"icon":99},"\u002Fcpp\u002Fmodules\u002Fio","cpp\u002F2.modules\u002F12.io",{"title":101,"path":209,"stem":210,"icon":104},"\u002Fcpp\u002Fbenchmarks","cpp\u002F3.benchmarks",{"title":212,"path":213,"stem":214,"children":215,"icon":32},"VTK","\u002Fcpp\u002Fvtk","cpp\u002F4.vtk\u002F1.index",[216,218,221,226,231],{"title":39,"path":213,"stem":214,"icon":217},"i-lucide-layers",{"title":42,"path":219,"stem":220,"icon":45},"\u002Fcpp\u002Fvtk\u002Fcore","cpp\u002F4.vtk\u002F2.core",{"title":222,"path":223,"stem":224,"icon":225},"Functions","\u002Fcpp\u002Fvtk\u002Ffunctions","cpp\u002F4.vtk\u002F3.functions","i-lucide-function-square",{"title":227,"path":228,"stem":229,"icon":230},"Filters","\u002Fcpp\u002Fvtk\u002Ffilters","cpp\u002F4.vtk\u002F4.filters","i-lucide-filter",{"title":106,"path":232,"stem":233,"icon":26},"\u002Fcpp\u002Fvtk\u002Fexamples","cpp\u002F4.vtk\u002F5.examples",{"title":106,"path":235,"stem":236,"children":237,"icon":32},"\u002Fcpp\u002Fexamples","cpp\u002F5.examples\u002F0.index",[238,239,244,249,254,258],{"title":39,"path":235,"stem":236,"icon":111},{"title":240,"path":241,"stem":242,"icon":243},"Geometry Walkthrough","\u002Fcpp\u002Fexamples\u002Fmesh-assembly","cpp\u002F5.examples\u002F1.mesh-assembly","i-lucide-box",{"title":245,"path":246,"stem":247,"icon":248},"Point Cloud Alignment","\u002Fcpp\u002Fexamples\u002Falignment","cpp\u002F5.examples\u002F2.alignment","i-lucide-move",{"title":250,"path":251,"stem":252,"icon":253},"Booleans and Domains from One Build","\u002Fcpp\u002Fexamples\u002Farrangements","cpp\u002F5.examples\u002F3.arrangements","i-lucide-layers-3",{"title":255,"path":256,"stem":257,"icon":217},"VTK Integration","\u002Fcpp\u002Fexamples\u002Fvtk","cpp\u002F5.examples\u002F4.vtk",{"title":259,"path":260,"stem":261,"icon":262},"Coming from Other Libraries","\u002Fcpp\u002Fexamples\u002Flibrary-comparisons","cpp\u002F5.examples\u002F5.library-comparisons","i-lucide-git-compare",{"title":128,"path":264,"stem":265,"children":266,"page":32},"\u002Fcpp\u002Fabout","cpp\u002F6.about",[267,270,273],{"title":133,"path":268,"stem":269,"icon":111},"\u002Fcpp\u002Fabout\u002Fresearch","cpp\u002F6.about\u002F1.research",{"title":137,"path":271,"stem":272,"icon":140},"\u002Fcpp\u002Fabout\u002Fcontributing","cpp\u002F6.about\u002F2.contributing",{"title":142,"path":274,"stem":275,"icon":145},"\u002Fcpp\u002Fabout\u002Flicense","cpp\u002F6.about\u002F3.license",[277],{"title":278,"path":279,"stem":280,"children":281,"page":32},"Py","\u002Fpy","py",[282,296,337,340,361,380],{"title":10,"path":283,"stem":284,"children":285,"icon":32},"\u002Fpy\u002Fgetting-started","py\u002F1.getting-started\u002F1.index",[286,287,290,293],{"title":15,"path":283,"stem":284,"icon":16},{"title":18,"path":288,"stem":289,"icon":21},"\u002Fpy\u002Fgetting-started\u002Finstallation","py\u002F1.getting-started\u002F2.installation",{"title":23,"path":291,"stem":292,"icon":26},"\u002Fpy\u002Fgetting-started\u002Flive-examples","py\u002F1.getting-started\u002F3.live-examples",{"title":28,"path":294,"stem":295,"icon":31},"\u002Fpy\u002Fgetting-started\u002Frelease-notes","py\u002F1.getting-started\u002F4.release-notes",{"title":34,"path":297,"stem":298,"children":299,"icon":32},"\u002Fpy\u002Fmodules","py\u002F2.modules\u002F00.index",[300,301,304,307,310,313,316,319,322,325,328,331,334],{"title":39,"path":297,"stem":298,"icon":40},{"title":42,"path":302,"stem":303,"icon":45},"\u002Fpy\u002Fmodules\u002Fcore","py\u002F2.modules\u002F01.core",{"title":47,"path":305,"stem":306,"icon":50},"\u002Fpy\u002Fmodules\u002Fspatial","py\u002F2.modules\u002F02.spatial",{"title":52,"path":308,"stem":309,"icon":55},"\u002Fpy\u002Fmodules\u002Ftopology","py\u002F2.modules\u002F03.topology",{"title":57,"path":311,"stem":312,"icon":60},"\u002Fpy\u002Fmodules\u002Fgeometry","py\u002F2.modules\u002F04.geometry",{"title":62,"path":314,"stem":315,"icon":65},"\u002Fpy\u002Fmodules\u002Fremesh","py\u002F2.modules\u002F05.remesh",{"title":67,"path":317,"stem":318,"icon":70},"\u002Fpy\u002Fmodules\u002Fintersect","py\u002F2.modules\u002F06.intersect",{"title":72,"path":320,"stem":321,"icon":75},"\u002Fpy\u002Fmodules\u002Farrangement","py\u002F2.modules\u002F07.arrangement",{"title":77,"path":323,"stem":324,"icon":80},"\u002Fpy\u002Fmodules\u002Fiso","py\u002F2.modules\u002F08.iso",{"title":82,"path":326,"stem":327,"icon":85},"\u002Fpy\u002Fmodules\u002Fcsg","py\u002F2.modules\u002F09.csg",{"title":87,"path":329,"stem":330,"icon":31},"\u002Fpy\u002Fmodules\u002Fclean","py\u002F2.modules\u002F10.clean",{"title":91,"path":332,"stem":333,"icon":94},"\u002Fpy\u002Fmodules\u002Freindex","py\u002F2.modules\u002F11.reidx",{"title":96,"path":335,"stem":336,"icon":99},"\u002Fpy\u002Fmodules\u002Fio","py\u002F2.modules\u002F12.io",{"title":101,"path":338,"stem":339,"icon":104},"\u002Fpy\u002Fbenchmarks","py\u002F3.benchmarks",{"title":341,"path":342,"stem":343,"children":344,"icon":32},"Blender","\u002Fpy\u002Fblender","py\u002F4.blender\u002F1.index",[345,347,352,356],{"title":39,"path":342,"stem":343,"icon":346},"i-vscode-icons:file-type-blender",{"title":348,"path":349,"stem":350,"icon":351},"Convert","\u002Fpy\u002Fblender\u002Fconvert","py\u002F4.blender\u002F2.convert","i-lucide-repeat",{"title":353,"path":354,"stem":355,"icon":217},"Scene","\u002Fpy\u002Fblender\u002Fscene","py\u002F4.blender\u002F3.scene",{"title":357,"path":358,"stem":359,"icon":360},"Plugin Architecture","\u002Fpy\u002Fblender\u002Fplugin","py\u002F4.blender\u002F4.plugin","i-lucide-puzzle",{"title":106,"path":362,"stem":363,"children":364,"icon":32},"\u002Fpy\u002Fexamples","py\u002F5.examples\u002F0.index",[365,366,369,372,376],{"title":39,"path":362,"stem":363,"icon":111},{"title":113,"path":367,"stem":368,"icon":116},"\u002Fpy\u002Fexamples\u002Fcore-functionality","py\u002F5.examples\u002F2.core-functionality",{"title":250,"path":370,"stem":371,"icon":253},"\u002Fpy\u002Fexamples\u002Farrangements","py\u002F5.examples\u002F3.arrangements",{"title":255,"path":373,"stem":374,"icon":375},"\u002Fpy\u002Fexamples\u002Fvtk-integration","py\u002F5.examples\u002F4.vtk-integration","i-lucide-grid-2x2",{"title":123,"path":377,"stem":378,"icon":379},"\u002Fpy\u002Fexamples\u002Fraycast-rendering","py\u002F5.examples\u002F5.raycast-rendering","i-lucide-scan-line",{"title":128,"path":381,"stem":382,"children":383,"page":32},"\u002Fpy\u002Fabout","py\u002F6.about",[384,387,390],{"title":133,"path":385,"stem":386,"icon":111},"\u002Fpy\u002Fabout\u002Fresearch","py\u002F6.about\u002F1.research",{"title":137,"path":388,"stem":389,"icon":140},"\u002Fpy\u002Fabout\u002Fcontributing","py\u002F6.about\u002F2.contributing",{"title":142,"path":391,"stem":392,"icon":145},"\u002Fpy\u002Fabout\u002Flicense","py\u002F6.about\u002F3.license",[394],{"title":5,"path":6,"stem":7,"children":395,"page":32},[396,402,417,418,424],{"title":10,"path":11,"stem":12,"children":397,"icon":32},[398,399,400,401],{"title":15,"path":11,"stem":12,"icon":16},{"title":18,"path":19,"stem":20,"icon":21},{"title":23,"path":24,"stem":25,"icon":26},{"title":28,"path":29,"stem":30,"icon":31},{"title":34,"path":35,"stem":36,"children":403,"icon":32},[404,405,406,407,408,409,410,411,412,413,414,415,416],{"title":39,"path":35,"stem":36,"icon":40},{"title":42,"path":43,"stem":44,"icon":45},{"title":47,"path":48,"stem":49,"icon":50},{"title":52,"path":53,"stem":54,"icon":55},{"title":57,"path":58,"stem":59,"icon":60},{"title":62,"path":63,"stem":64,"icon":65},{"title":67,"path":68,"stem":69,"icon":70},{"title":72,"path":73,"stem":74,"icon":75},{"title":77,"path":78,"stem":79,"icon":80},{"title":82,"path":83,"stem":84,"icon":85},{"title":87,"path":88,"stem":89,"icon":31},{"title":91,"path":92,"stem":93,"icon":94},{"title":96,"path":97,"stem":98,"icon":99},{"title":101,"path":102,"stem":103,"icon":104},{"title":106,"path":107,"stem":108,"children":419,"icon":32},[420,421,422,423],{"title":39,"path":107,"stem":108,"icon":111},{"title":113,"path":114,"stem":115,"icon":116},{"title":118,"path":119,"stem":120,"icon":121},{"title":123,"path":124,"stem":125,"icon":126},{"title":128,"icon":32,"path":129,"stem":130,"children":425,"page":32},[426,427,428],{"title":133,"path":134,"stem":135,"icon":111},{"title":137,"path":138,"stem":139,"icon":140},{"title":142,"path":143,"stem":144,"icon":145},{"id":430,"title":28,"body":431,"description":1132,"extension":1133,"links":1134,"meta":1135,"navigation":1136,"path":29,"seo":1137,"sitemap":1138,"stem":30,"__hash__":1139},"docsTs\u002Fts\u002F1.getting-started\u002F4.release-notes.md",{"type":432,"value":433,"toc":1120},"minimark",[434,439,460,464,469,492,498,504,508,514,517,521,524,826,833,837,856,888,892,963,966,972,976,1014,1054,1065,1069,1110,1116],[435,436,438],"h2",{"id":437},"v0101","v0.10.1",[440,441,442,443,447,448,451,452,455,456,459],"p",{},"Repairs; no API breaks. ",[444,445,446],"code",{},"orient_faces_consistently"," and\n",[444,449,450],{},"ensure_positive_orientation"," now return whether the surface is\norientable: every reversal is decided against the input winding and\napplied after the walk, so one call settles every orientable\nmanifold-edge component, and a non-orientable component is left\nuntouched rather than half-repaired. An integral coordinate type votes\nby face count, its lattice not holding a squared area.\n",[444,453,454],{},"euler_characteristic"," counts boundary edges correctly — a disk is 1,\nan uncapped tube 0. ",[444,457,458],{},"fit_similarity_alignment"," measures the source\nspread in the same space as its covariance, so a scaled frame no longer\nskews the recovered scale. The VTK wrappers delegate orientation to the\ncore and surface its verdict.",[435,461,463],{"id":462},"v0100-one-engine","v0.10.0 — one engine",[465,466,468],"h3",{"id":467},"the-engine","The engine",[440,470,471,475,476,479,480,483,484,487,488,491],{},[472,473,474],"strong",{},"Every boolean runs on the CSG engine."," ",[444,477,478],{},"tf.booleanUnion",",\n",[444,481,482],{},"tf.booleanIntersection",", and ",[444,485,486],{},"tf.booleanDifference"," build the same N-form\narrangement that powers ",[444,489,490],{},"tf.csgGraph"," and evaluate the operation as a\nboolean expression over it. One arrangement answers any number of boolean\nexpressions, domain reads, and curve extractions; there is one pipeline, one\ntriangulator, one classification tier.",[440,493,494,497],{},[472,495,496],{},"The arrangement is two tiers."," The identity tier classifies polygon\nintersections exactly: every crossing, landing, and coincidence names one\ncreated identity on an exact integer lattice — a point's identity is a\ncanonical name, not a coordinate. Coplanar faces, within a mesh and across\nmeshes, pool onto one geometric plane, so coincident walls cannot disagree.\nThe triangulation tier triangulates each plane against its own constraint\nset, resolving what cannot stand as given — split at its crossings, welded\nat its coincidences — in recovery waves that repeat until nothing new is\nstated. Classification reads the finished arrangement, and every product\n(boolean meshes, domain cells, the outer shell, intersection curves) is a\nread.",[440,499,500,503],{},[472,501,502],{},"Coincidence is resolved at the root."," When quantization collapses\ngeometry — duplicate vertices, sub-epsilon edges, folded slivers, vertices\nlanding on the intersection curve — the arrangement resolves each such\ncoincidence to a single created identity, and the surrounding faces re-emit\nconformed to it. Raw arrangements are watertight by construction at these\nsites.",[465,505,507],{"id":506},"tolerance-is-a-statement-about-the-input","Tolerance is a statement about the input",[440,509,510,513],{},[472,511,512],{},"A tolerance is the pitch the input's planes are quantized to; it never\nwidens a predicate."," One converter is built over the union of the input\nforms; every face's plane — direction and offset — is rounded onto a grid\nof that pitch, so two faces whose planes differ by less than it share one\nplane. Every original vertex is then placed, at most the tolerance away,\nonto the quantized planes its own faces stand on — the meet of three where\nit is a corner, a line of two where it lies on a crease, its own tangent\nplane where the surface is smooth. The result is the exact arrangement of\nthat moved mesh: every predicate below the placement runs exact, and a\nweld is an identity, never a proximity. A tolerance of zero is the\nidentity — nothing moves, no placement table is built, and the result is\nbyte-identical to the exact arrangement of the input as given.",[440,515,516],{},"A wall doubled at less than the pitch becomes one wall; one doubled at\nmore stays two. A vertex a weld retires has no output point of its own —\nthe index map reports it absent. Plane identity is quantized-name\nequality, so results from calls with different converter domains are not\nidentity-comparable; a session that needs one perturbation across calls\npins one converter.",[465,518,520],{"id":519},"provenance-selection","Provenance selection",[440,522,523],{},"One arrangement, any read. A selection names which forms' faces reach the\noutput, orthogonally to the boolean algebra:",[525,526,530],"pre",{"className":527,"code":528,"language":7,"meta":529,"style":529},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","const graph = await tf.csgGraph([a, b, c]);   \u002F\u002F a=0, b=1, c=2\nconst expr = tf.op(0).or(tf.op(1)).sub(tf.op(2));\n\nconst solid = graph.mesh(expr);                       \u002F\u002F as always\nconst partA = graph.mesh(expr, { selection: [0] });   \u002F\u002F a's walls of it\nconst inA = graph.mesh(tf.op(0), { inside: [2] });    \u002F\u002F c inside a\nconst embed = graph.mesh({ selection: [0] });         \u002F\u002F a cut by all, no boolean\n","",[444,531,532,584,652,659,685,734,786],{"__ignoreMap":529},[533,534,537,541,545,549,553,556,559,563,566,569,572,574,577,580],"span",{"class":535,"line":536},"line",1,[533,538,540],{"class":539},"spNyl","const",[533,542,544],{"class":543},"sTEyZ"," graph ",[533,546,548],{"class":547},"sMK4o","=",[533,550,552],{"class":551},"s7zQu"," await",[533,554,555],{"class":543}," tf",[533,557,558],{"class":547},".",[533,560,562],{"class":561},"s2Zo4","csgGraph",[533,564,565],{"class":543},"([a",[533,567,568],{"class":547},",",[533,570,571],{"class":543}," b",[533,573,568],{"class":547},[533,575,576],{"class":543}," c])",[533,578,579],{"class":547},";",[533,581,583],{"class":582},"sHwdD","   \u002F\u002F a=0, b=1, c=2\n",[533,585,587,589,592,594,596,598,601,604,608,611,613,616,619,621,623,625,628,631,633,636,638,640,642,644,647,649],{"class":535,"line":586},2,[533,588,540],{"class":539},[533,590,591],{"class":543}," expr ",[533,593,548],{"class":547},[533,595,555],{"class":543},[533,597,558],{"class":547},[533,599,600],{"class":561},"op",[533,602,603],{"class":543},"(",[533,605,607],{"class":606},"sbssI","0",[533,609,610],{"class":543},")",[533,612,558],{"class":547},[533,614,615],{"class":561},"or",[533,617,618],{"class":543},"(tf",[533,620,558],{"class":547},[533,622,600],{"class":561},[533,624,603],{"class":543},[533,626,627],{"class":606},"1",[533,629,630],{"class":543},"))",[533,632,558],{"class":547},[533,634,635],{"class":561},"sub",[533,637,618],{"class":543},[533,639,558],{"class":547},[533,641,600],{"class":561},[533,643,603],{"class":543},[533,645,646],{"class":606},"2",[533,648,630],{"class":543},[533,650,651],{"class":547},";\n",[533,653,655],{"class":535,"line":654},3,[533,656,658],{"emptyLinePlaceholder":657},true,"\n",[533,660,662,664,667,669,672,674,677,680,682],{"class":535,"line":661},4,[533,663,540],{"class":539},[533,665,666],{"class":543}," solid ",[533,668,548],{"class":547},[533,670,671],{"class":543}," graph",[533,673,558],{"class":547},[533,675,676],{"class":561},"mesh",[533,678,679],{"class":543},"(expr)",[533,681,579],{"class":547},[533,683,684],{"class":582},"                       \u002F\u002F as always\n",[533,686,688,690,693,695,697,699,701,704,706,709,713,716,719,721,724,727,729,731],{"class":535,"line":687},5,[533,689,540],{"class":539},[533,691,692],{"class":543}," partA ",[533,694,548],{"class":547},[533,696,671],{"class":543},[533,698,558],{"class":547},[533,700,676],{"class":561},[533,702,703],{"class":543},"(expr",[533,705,568],{"class":547},[533,707,708],{"class":547}," {",[533,710,712],{"class":711},"swJcz"," selection",[533,714,715],{"class":547},":",[533,717,718],{"class":543}," [",[533,720,607],{"class":606},[533,722,723],{"class":543},"] ",[533,725,726],{"class":547},"}",[533,728,610],{"class":543},[533,730,579],{"class":547},[533,732,733],{"class":582},"   \u002F\u002F a's walls of it\n",[533,735,737,739,742,744,746,748,750,752,754,756,758,760,762,764,766,769,771,773,775,777,779,781,783],{"class":535,"line":736},6,[533,738,540],{"class":539},[533,740,741],{"class":543}," inA ",[533,743,548],{"class":547},[533,745,671],{"class":543},[533,747,558],{"class":547},[533,749,676],{"class":561},[533,751,618],{"class":543},[533,753,558],{"class":547},[533,755,600],{"class":561},[533,757,603],{"class":543},[533,759,607],{"class":606},[533,761,610],{"class":543},[533,763,568],{"class":547},[533,765,708],{"class":547},[533,767,768],{"class":711}," inside",[533,770,715],{"class":547},[533,772,718],{"class":543},[533,774,646],{"class":606},[533,776,723],{"class":543},[533,778,726],{"class":547},[533,780,610],{"class":543},[533,782,579],{"class":547},[533,784,785],{"class":582},"    \u002F\u002F c inside a\n",[533,787,789,791,794,796,798,800,802,804,807,809,811,813,815,817,819,821,823],{"class":535,"line":788},7,[533,790,540],{"class":539},[533,792,793],{"class":543}," embed ",[533,795,548],{"class":547},[533,797,671],{"class":543},[533,799,558],{"class":547},[533,801,676],{"class":561},[533,803,603],{"class":543},[533,805,806],{"class":547},"{",[533,808,712],{"class":711},[533,810,715],{"class":547},[533,812,718],{"class":543},[533,814,607],{"class":606},[533,816,723],{"class":543},[533,818,726],{"class":547},[533,820,610],{"class":543},[533,822,579],{"class":547},[533,824,825],{"class":582},"         \u002F\u002F a cut by all, no boolean\n",[440,827,828,829,832],{},"The per-form parts partition the result face-for-face and re-weld into the\nsolid. ",[444,830,831],{},"inside"," reads the other side of the same question — the named\nforms' surface lying INSIDE the expression's region, both sides of a piece\nin it, kept in the form's stored winding, which is how a sheet's surface\nwithin a solid is asked for. Domain reads take the same selection — each\ncell's walls by contributor — with the boundary read only. Every existing\nexpression call is unchanged.",[465,834,836],{"id":835},"the-module-map-breaking","The module map (breaking)",[440,838,839,840,843,844,847,848,851,852,855],{},"The ",[444,841,842],{},"cut"," module was named for the verb its first consumer needed. Its\nground is split by mechanism — ",[444,845,846],{},"arrangement"," for the arrangements and their\nreads, ",[444,849,850],{},"iso"," for the scalar-field tier, ",[444,853,854],{},"csg"," for the booleans, expressions,\nselections, domains, and the outer shell. There is no compatibility shim:\nthe old names are gone, not deprecated.",[440,857,858,859,861,862,861,864,479,866,861,869,861,872,447,875,878,879,882,883,887],{},"The surviving entry points keep their names, their overloads and their\noptions: ",[444,860,478],{},", ",[444,863,482],{},[444,865,486],{},[444,867,868],{},"tf.meshArrangements",[444,870,871],{},"tf.polygonArrangements",[444,873,874],{},"tf.isobands",[444,876,877],{},"tf.isocontours"," are called exactly as before, sync and ",[444,880,881],{},"tf.async"," alike.\nOnly the modules they are documented and implemented under moved — and the\nbooleans moved once more, to ",[884,885,82],"a",{"href":886},"\u002Fts\u002Fmodules\u002Fcsg#boolean-operations",",\nwhose two-operand case they are.",[465,889,891],{"id":890},"removed-entry-points","Removed entry points",[893,894,895,908],"table",{},[896,897,898],"thead",{},[899,900,901,905],"tr",{},[902,903,904],"th",{},"Removed",[902,906,907],{},"Use instead",[909,910,911,924,936,953],"tbody",{},[899,912,913,919],{},[914,915,916],"td",{},[444,917,918],{},"embeddedIntersectionCurves",[914,920,921],{},[444,922,923],{},"meshArrangements(meshes, { returnCurves: true })",[899,925,926,931],{},[914,927,928],{},[444,929,930],{},"embeddedSelfIntersectionCurves",[914,932,933],{},[444,934,935],{},"polygonArrangements(mesh, { returnCurves: true })",[899,937,938,944],{},[914,939,940,941],{},"type ",[444,942,943],{},"CutResultWithCurves",[914,945,946,949,950],{},[444,947,948],{},"MeshArrangementResultWithCurves"," \u002F ",[444,951,952],{},"PolygonArrangementResultWithCurves",[899,954,955,960],{},[914,956,940,957],{},[444,958,959],{},"OuterShellOptions",[914,961,962],{},"— (see below)",[440,964,965],{},"The embedded curve entries answered a question the arrangements answer\nwhole: the recut mesh and the curves embedded in it are one product of one\narrangement, read through its own entry.",[440,967,968,971],{},[444,969,970],{},"outerShell(mesh)"," takes no options. The shell is a structural read of a\nsettled arrangement — the boundary between the unbounded universe and\neverything the mesh encloses — so there is nothing left to configure.",[465,973,975],{"id":974},"types","Types",[893,977,978,988],{},[896,979,980],{},[899,981,982,985],{},[902,983,984],{},"Old",[902,986,987],{},"New",[909,989,990,1002],{},[899,991,992,997],{},[914,993,994],{},[444,995,996],{},"LabeledCutResult",[914,998,999],{},[444,1000,1001],{},"LabeledBooleanResult",[899,1003,1004,1009],{},[914,1005,1006],{},[444,1007,1008],{},"LabeledCutResultWithCurves",[914,1010,1011],{},[444,1012,1013],{},"LabeledBooleanResultWithCurves",[440,1015,1016,1017,949,1020,949,1023,1026,1027,861,1029,479,1032,483,1035,1038,1039,1042,1043,861,1046,1049,1050,1053],{},"The result of ",[444,1018,1019],{},"booleanUnion",[444,1021,1022],{},"booleanIntersection",[444,1024,1025],{},"booleanDifference"," is\nnamed for the operation that produces it. Its fields — ",[444,1028,676],{},[444,1030,1031],{},"labels",[444,1033,1034],{},"faceLabels",[444,1036,1037],{},"curves"," under ",[444,1040,1041],{},"{ returnCurves: true }"," — are unchanged.\n",[444,1044,1045],{},"IsobandsResult",[444,1047,1048],{},"MeshArrangementResult"," and ",[444,1051,1052],{},"PolygonArrangementResult"," keep\ntheir names.",[440,1055,1056,1057,1060,1061,1064],{},"Both types are re-exported from the package root, so a ",[444,1058,1059],{},"tf.LabeledCutResult","\nannotation becomes ",[444,1062,1063],{},"tf.LabeledBooleanResult","; nothing else in a call site\nchanges.",[465,1066,1068],{"id":1067},"documentation","Documentation",[893,1070,1071,1081],{},[896,1072,1073],{},[899,1074,1075,1078],{},[902,1076,1077],{},"Page",[902,1079,1080],{},"Contents",[909,1082,1083,1092,1101],{},[899,1084,1085,1089],{},[914,1086,1087],{},[884,1088,72],{"href":73},[914,1090,1091],{},"mesh and polygon arrangements, formerly Cut",[899,1093,1094,1098],{},[914,1095,1096],{},[884,1097,82],{"href":886},[914,1099,1100],{},"the booleans, formerly on the Cut page",[899,1102,1103,1107],{},[914,1104,1105],{},[884,1106,77],{"href":78},[914,1108,1109],{},"isocontours and isobands, formerly split across Cut and Intersect",[440,1111,1112,1113,558],{},"For the C++ names behind these bindings, see the\n",[884,1114,1115],{"href":165},"C++ release notes",[1117,1118,1119],"style",{},"html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":529,"searchDepth":536,"depth":586,"links":1121},[1122,1123],{"id":437,"depth":586,"text":438},{"id":462,"depth":586,"text":463,"children":1124},[1125,1126,1127,1128,1129,1130,1131],{"id":467,"depth":654,"text":468},{"id":506,"depth":654,"text":507},{"id":519,"depth":654,"text":520},{"id":835,"depth":654,"text":836},{"id":890,"depth":654,"text":891},{"id":974,"depth":654,"text":975},{"id":1067,"depth":654,"text":1068},"trueform v0.10.0 — one engine.","md",null,{},{"icon":31},{"title":28,"description":1132},{"loc":29},"I7XQvUcl8z6y5c_FwmvqkAzNH8LpijBak0I0PVOpMaA",[1141,1143],{"title":23,"path":24,"stem":25,"description":1142,"icon":26,"children":-1},"Try trueform in your browser — no installation required.",{"title":39,"path":35,"stem":36,"description":1144,"icon":40,"children":-1},"Modules and import convention.",1788524235126]