[{"data":1,"prerenderedAt":1010},["ShallowReactive",2],{"navigation-docsTs":3,"lib-picker-navigation":156,"docsTs-\u002Fts\u002Fmodules\u002Ftetmesh":465,"docsTs-\u002Fts\u002Fmodules\u002Ftetmesh-surround":1005},[4],{"title":5,"path":6,"stem":7,"children":8,"page":32},"Ts","\u002Fts","ts",[9,33,110,115,137],{"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,100,105],{"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},"Fill","\u002Fts\u002Fmodules\u002Ffill","ts\u002F2.modules\u002F13.fill","i-lucide-paint-bucket",{"title":106,"path":107,"stem":108,"icon":109},"Tetmesh","\u002Fts\u002Fmodules\u002Ftetmesh","ts\u002F2.modules\u002F14.tetmesh","i-lucide-pyramid",{"title":111,"path":112,"stem":113,"icon":114},"Benchmarks","\u002Fts\u002Fbenchmarks","ts\u002F3.benchmarks","i-lucide-chart-bar-stacked",{"title":116,"path":117,"stem":118,"children":119,"icon":32},"Examples","\u002Fts\u002Fexamples","ts\u002F4.examples\u002F0.index",[120,122,127,132],{"title":39,"path":117,"stem":118,"icon":121},"i-lucide-book-open",{"title":123,"path":124,"stem":125,"icon":126},"Core Functionality","\u002Fts\u002Fexamples\u002Fcore-functionality","ts\u002F4.examples\u002F2.core-functionality","i-lucide-code",{"title":128,"path":129,"stem":130,"icon":131},"Alignment","\u002Fts\u002Fexamples\u002Falignment","ts\u002F4.examples\u002F3.alignment","i-lucide-move-3d",{"title":133,"path":134,"stem":135,"icon":136},"Raycast Rendering","\u002Fts\u002Fexamples\u002Fraycast-render","ts\u002F4.examples\u002F4.raycast-render","i-lucide-image",{"title":138,"icon":32,"path":139,"stem":140,"children":141,"page":32},"About","\u002Fts\u002Fabout","ts\u002F5.about",[142,146,151],{"title":143,"path":144,"stem":145,"icon":121},"Research","\u002Fts\u002Fabout\u002Fresearch","ts\u002F5.about\u002F1.research",{"title":147,"path":148,"stem":149,"icon":150},"Contributing","\u002Fts\u002Fabout\u002Fcontributing","ts\u002F5.about\u002F2.contributing","i-lucide-heart-handshake",{"title":152,"path":153,"stem":154,"icon":155},"License","\u002Fts\u002Fabout\u002Flicense","ts\u002F5.about\u002F3.license","i-lucide-file-text",{"cpp":157,"py":301,"ts":427},[158],{"title":159,"path":160,"stem":161,"children":162,"page":32},"Cpp","\u002Fcpp","cpp",[163,177,234,237,260,288],{"title":10,"path":164,"stem":165,"children":166,"icon":32},"\u002Fcpp\u002Fgetting-started","cpp\u002F1.getting-started\u002F1.index",[167,168,171,174],{"title":15,"path":164,"stem":165,"icon":16},{"title":18,"path":169,"stem":170,"icon":21},"\u002Fcpp\u002Fgetting-started\u002Finstallation","cpp\u002F1.getting-started\u002F2.installation",{"title":23,"path":172,"stem":173,"icon":26},"\u002Fcpp\u002Fgetting-started\u002Flive-examples","cpp\u002F1.getting-started\u002F3.live-examples",{"title":28,"path":175,"stem":176,"icon":31},"\u002Fcpp\u002Fgetting-started\u002Frelease-notes","cpp\u002F1.getting-started\u002F4.release-notes",{"title":34,"path":178,"stem":179,"children":180,"icon":32},"\u002Fcpp\u002Fmodules","cpp\u002F2.modules\u002F00.index",[181,182,185,188,191,194,197,200,203,206,209,212,215,218,223,226,231],{"title":39,"path":178,"stem":179,"icon":40},{"title":42,"path":183,"stem":184,"icon":45},"\u002Fcpp\u002Fmodules\u002Fcore","cpp\u002F2.modules\u002F01.core",{"title":47,"path":186,"stem":187,"icon":50},"\u002Fcpp\u002Fmodules\u002Fspatial","cpp\u002F2.modules\u002F02.spatial",{"title":52,"path":189,"stem":190,"icon":55},"\u002Fcpp\u002Fmodules\u002Ftopology","cpp\u002F2.modules\u002F03.topology",{"title":57,"path":192,"stem":193,"icon":60},"\u002Fcpp\u002Fmodules\u002Fgeometry","cpp\u002F2.modules\u002F04.geometry",{"title":62,"path":195,"stem":196,"icon":65},"\u002Fcpp\u002Fmodules\u002Fremesh","cpp\u002F2.modules\u002F05.remesh",{"title":67,"path":198,"stem":199,"icon":70},"\u002Fcpp\u002Fmodules\u002Fintersect","cpp\u002F2.modules\u002F06.intersect",{"title":72,"path":201,"stem":202,"icon":75},"\u002Fcpp\u002Fmodules\u002Farrangement","cpp\u002F2.modules\u002F07.arrangement",{"title":77,"path":204,"stem":205,"icon":80},"\u002Fcpp\u002Fmodules\u002Fiso","cpp\u002F2.modules\u002F08.iso",{"title":82,"path":207,"stem":208,"icon":85},"\u002Fcpp\u002Fmodules\u002Fcsg","cpp\u002F2.modules\u002F09.csg",{"title":87,"path":210,"stem":211,"icon":31},"\u002Fcpp\u002Fmodules\u002Fclean","cpp\u002F2.modules\u002F10.clean",{"title":91,"path":213,"stem":214,"icon":94},"\u002Fcpp\u002Fmodules\u002Freindex","cpp\u002F2.modules\u002F11.reidx",{"title":96,"path":216,"stem":217,"icon":99},"\u002Fcpp\u002Fmodules\u002Fio","cpp\u002F2.modules\u002F12.io",{"title":219,"path":220,"stem":221,"icon":222},"Volume","\u002Fcpp\u002Fmodules\u002Fvolume","cpp\u002F2.modules\u002F13.volume","i-lucide-box",{"title":101,"path":224,"stem":225,"icon":104},"\u002Fcpp\u002Fmodules\u002Ffill","cpp\u002F2.modules\u002F14.fill",{"title":227,"path":228,"stem":229,"icon":230},"Linalg","\u002Fcpp\u002Fmodules\u002Flinalg","cpp\u002F2.modules\u002F15.linalg","i-lucide-sigma",{"title":106,"path":232,"stem":233,"icon":109},"\u002Fcpp\u002Fmodules\u002Ftetmesh","cpp\u002F2.modules\u002F16.tetmesh",{"title":111,"path":235,"stem":236,"icon":114},"\u002Fcpp\u002Fbenchmarks","cpp\u002F3.benchmarks",{"title":238,"path":239,"stem":240,"children":241,"icon":32},"VTK","\u002Fcpp\u002Fvtk","cpp\u002F4.vtk\u002F1.index",[242,244,247,252,257],{"title":39,"path":239,"stem":240,"icon":243},"i-lucide-layers",{"title":42,"path":245,"stem":246,"icon":45},"\u002Fcpp\u002Fvtk\u002Fcore","cpp\u002F4.vtk\u002F2.core",{"title":248,"path":249,"stem":250,"icon":251},"Functions","\u002Fcpp\u002Fvtk\u002Ffunctions","cpp\u002F4.vtk\u002F3.functions","i-lucide-function-square",{"title":253,"path":254,"stem":255,"icon":256},"Filters","\u002Fcpp\u002Fvtk\u002Ffilters","cpp\u002F4.vtk\u002F4.filters","i-lucide-filter",{"title":116,"path":258,"stem":259,"icon":26},"\u002Fcpp\u002Fvtk\u002Fexamples","cpp\u002F4.vtk\u002F5.examples",{"title":116,"path":261,"stem":262,"children":263,"icon":32},"\u002Fcpp\u002Fexamples","cpp\u002F5.examples\u002F0.index",[264,265,269,274,279,283],{"title":39,"path":261,"stem":262,"icon":121},{"title":266,"path":267,"stem":268,"icon":222},"Geometry Walkthrough","\u002Fcpp\u002Fexamples\u002Fmesh-assembly","cpp\u002F5.examples\u002F1.mesh-assembly",{"title":270,"path":271,"stem":272,"icon":273},"Point Cloud Alignment","\u002Fcpp\u002Fexamples\u002Falignment","cpp\u002F5.examples\u002F2.alignment","i-lucide-move",{"title":275,"path":276,"stem":277,"icon":278},"Booleans and Domains from One Build","\u002Fcpp\u002Fexamples\u002Farrangements","cpp\u002F5.examples\u002F3.arrangements","i-lucide-layers-3",{"title":280,"path":281,"stem":282,"icon":243},"VTK Integration","\u002Fcpp\u002Fexamples\u002Fvtk","cpp\u002F5.examples\u002F4.vtk",{"title":284,"path":285,"stem":286,"icon":287},"Coming from Other Libraries","\u002Fcpp\u002Fexamples\u002Flibrary-comparisons","cpp\u002F5.examples\u002F5.library-comparisons","i-lucide-git-compare",{"title":138,"path":289,"stem":290,"children":291,"page":32},"\u002Fcpp\u002Fabout","cpp\u002F6.about",[292,295,298],{"title":143,"path":293,"stem":294,"icon":121},"\u002Fcpp\u002Fabout\u002Fresearch","cpp\u002F6.about\u002F1.research",{"title":147,"path":296,"stem":297,"icon":150},"\u002Fcpp\u002Fabout\u002Fcontributing","cpp\u002F6.about\u002F2.contributing",{"title":152,"path":299,"stem":300,"icon":155},"\u002Fcpp\u002Fabout\u002Flicense","cpp\u002F6.about\u002F3.license",[302],{"title":303,"path":304,"stem":305,"children":306,"page":32},"Py","\u002Fpy","py",[307,321,371,374,395,414],{"title":10,"path":308,"stem":309,"children":310,"icon":32},"\u002Fpy\u002Fgetting-started","py\u002F1.getting-started\u002F1.index",[311,312,315,318],{"title":15,"path":308,"stem":309,"icon":16},{"title":18,"path":313,"stem":314,"icon":21},"\u002Fpy\u002Fgetting-started\u002Finstallation","py\u002F1.getting-started\u002F2.installation",{"title":23,"path":316,"stem":317,"icon":26},"\u002Fpy\u002Fgetting-started\u002Flive-examples","py\u002F1.getting-started\u002F3.live-examples",{"title":28,"path":319,"stem":320,"icon":31},"\u002Fpy\u002Fgetting-started\u002Frelease-notes","py\u002F1.getting-started\u002F4.release-notes",{"title":34,"path":322,"stem":323,"children":324,"icon":32},"\u002Fpy\u002Fmodules","py\u002F2.modules\u002F00.index",[325,326,329,332,335,338,341,344,347,350,353,356,359,362,365,368],{"title":39,"path":322,"stem":323,"icon":40},{"title":42,"path":327,"stem":328,"icon":45},"\u002Fpy\u002Fmodules\u002Fcore","py\u002F2.modules\u002F01.core",{"title":47,"path":330,"stem":331,"icon":50},"\u002Fpy\u002Fmodules\u002Fspatial","py\u002F2.modules\u002F02.spatial",{"title":52,"path":333,"stem":334,"icon":55},"\u002Fpy\u002Fmodules\u002Ftopology","py\u002F2.modules\u002F03.topology",{"title":57,"path":336,"stem":337,"icon":60},"\u002Fpy\u002Fmodules\u002Fgeometry","py\u002F2.modules\u002F04.geometry",{"title":62,"path":339,"stem":340,"icon":65},"\u002Fpy\u002Fmodules\u002Fremesh","py\u002F2.modules\u002F05.remesh",{"title":67,"path":342,"stem":343,"icon":70},"\u002Fpy\u002Fmodules\u002Fintersect","py\u002F2.modules\u002F06.intersect",{"title":72,"path":345,"stem":346,"icon":75},"\u002Fpy\u002Fmodules\u002Farrangement","py\u002F2.modules\u002F07.arrangement",{"title":77,"path":348,"stem":349,"icon":80},"\u002Fpy\u002Fmodules\u002Fiso","py\u002F2.modules\u002F08.iso",{"title":82,"path":351,"stem":352,"icon":85},"\u002Fpy\u002Fmodules\u002Fcsg","py\u002F2.modules\u002F09.csg",{"title":87,"path":354,"stem":355,"icon":31},"\u002Fpy\u002Fmodules\u002Fclean","py\u002F2.modules\u002F10.clean",{"title":91,"path":357,"stem":358,"icon":94},"\u002Fpy\u002Fmodules\u002Freindex","py\u002F2.modules\u002F11.reidx",{"title":96,"path":360,"stem":361,"icon":99},"\u002Fpy\u002Fmodules\u002Fio","py\u002F2.modules\u002F12.io",{"title":219,"path":363,"stem":364,"icon":222},"\u002Fpy\u002Fmodules\u002Fvolume","py\u002F2.modules\u002F13.volume",{"title":101,"path":366,"stem":367,"icon":104},"\u002Fpy\u002Fmodules\u002Ffill","py\u002F2.modules\u002F14.fill",{"title":106,"path":369,"stem":370,"icon":109},"\u002Fpy\u002Fmodules\u002Ftetmesh","py\u002F2.modules\u002F15.tetmesh",{"title":111,"path":372,"stem":373,"icon":114},"\u002Fpy\u002Fbenchmarks","py\u002F3.benchmarks",{"title":375,"path":376,"stem":377,"children":378,"icon":32},"Blender","\u002Fpy\u002Fblender","py\u002F4.blender\u002F1.index",[379,381,386,390],{"title":39,"path":376,"stem":377,"icon":380},"i-vscode-icons:file-type-blender",{"title":382,"path":383,"stem":384,"icon":385},"Convert","\u002Fpy\u002Fblender\u002Fconvert","py\u002F4.blender\u002F2.convert","i-lucide-repeat",{"title":387,"path":388,"stem":389,"icon":243},"Scene","\u002Fpy\u002Fblender\u002Fscene","py\u002F4.blender\u002F3.scene",{"title":391,"path":392,"stem":393,"icon":394},"Plugin Architecture","\u002Fpy\u002Fblender\u002Fplugin","py\u002F4.blender\u002F4.plugin","i-lucide-puzzle",{"title":116,"path":396,"stem":397,"children":398,"icon":32},"\u002Fpy\u002Fexamples","py\u002F5.examples\u002F0.index",[399,400,403,406,410],{"title":39,"path":396,"stem":397,"icon":121},{"title":123,"path":401,"stem":402,"icon":126},"\u002Fpy\u002Fexamples\u002Fcore-functionality","py\u002F5.examples\u002F2.core-functionality",{"title":275,"path":404,"stem":405,"icon":278},"\u002Fpy\u002Fexamples\u002Farrangements","py\u002F5.examples\u002F3.arrangements",{"title":280,"path":407,"stem":408,"icon":409},"\u002Fpy\u002Fexamples\u002Fvtk-integration","py\u002F5.examples\u002F4.vtk-integration","i-lucide-grid-2x2",{"title":133,"path":411,"stem":412,"icon":413},"\u002Fpy\u002Fexamples\u002Fraycast-rendering","py\u002F5.examples\u002F5.raycast-rendering","i-lucide-scan-line",{"title":138,"path":415,"stem":416,"children":417,"page":32},"\u002Fpy\u002Fabout","py\u002F6.about",[418,421,424],{"title":143,"path":419,"stem":420,"icon":121},"\u002Fpy\u002Fabout\u002Fresearch","py\u002F6.about\u002F1.research",{"title":147,"path":422,"stem":423,"icon":150},"\u002Fpy\u002Fabout\u002Fcontributing","py\u002F6.about\u002F2.contributing",{"title":152,"path":425,"stem":426,"icon":155},"\u002Fpy\u002Fabout\u002Flicense","py\u002F6.about\u002F3.license",[428],{"title":5,"path":6,"stem":7,"children":429,"page":32},[430,436,453,454,460],{"title":10,"path":11,"stem":12,"children":431,"icon":32},[432,433,434,435],{"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":437,"icon":32},[438,439,440,441,442,443,444,445,446,447,448,449,450,451,452],{"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,"icon":109},{"title":111,"path":112,"stem":113,"icon":114},{"title":116,"path":117,"stem":118,"children":455,"icon":32},[456,457,458,459],{"title":39,"path":117,"stem":118,"icon":121},{"title":123,"path":124,"stem":125,"icon":126},{"title":128,"path":129,"stem":130,"icon":131},{"title":133,"path":134,"stem":135,"icon":136},{"title":138,"icon":32,"path":139,"stem":140,"children":461,"page":32},[462,463,464],{"title":143,"path":144,"stem":145,"icon":121},{"title":147,"path":148,"stem":149,"icon":150},{"title":152,"path":153,"stem":154,"icon":155},{"id":466,"title":106,"body":467,"description":997,"extension":998,"links":999,"meta":1000,"navigation":1001,"path":107,"seo":1002,"sitemap":1003,"stem":108,"__hash__":1004},"docsTs\u002Fts\u002F2.modules\u002F14.tetmesh.md",{"type":468,"value":469,"toc":992},"minimark",[470,478,481,526,531,695,800,807,811,862,865,869,879,957,988],[471,472,474],"note",{"icon":473},"i-lucide-info",[475,476,477],"p",{},"This module is in active development: its surface and its results may change between releases.",[475,479,480],{},"The Tetmesh module fills the solid a closed surface encloses with tetrahedra. The surface is recovered exactly: every input face is a union of tetrahedron faces, and the tetrahedralization is constrained Delaunay.",[482,483,487],"pre",{"className":484,"code":485,"language":7,"meta":486,"style":486},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import * as tf from \"@polydera\u002Ftrueform\";\n","",[488,489,490],"code",{"__ignoreMap":486},[491,492,495,499,503,506,510,513,516,520,523],"span",{"class":493,"line":494},"line",1,[491,496,498],{"class":497},"s7zQu","import",[491,500,502],{"class":501},"sMK4o"," *",[491,504,505],{"class":497}," as",[491,507,509],{"class":508},"sTEyZ"," tf ",[491,511,512],{"class":497},"from",[491,514,515],{"class":501}," \"",[491,517,519],{"class":518},"sfazB","@polydera\u002Ftrueform",[491,521,522],{"class":501},"\"",[491,524,525],{"class":501},";\n",[527,528,530],"h2",{"id":529},"tet-mesh","Tet Mesh",[482,532,534],{"className":484,"code":533,"language":7,"meta":486,"style":486},"const result = tf.tetMesh(mesh);\n\u002F\u002F result.tetrahedra: NDArrayInt32 [T, 4]; result.points: NDArrayFloat64 [P, 3]\nif (result.status === tf.TetMeshStatus.meshed) {\n  \u002F\u002F ...\n}\ntf.deleteTetMesh(result);\n\n\u002F\u002F off the main thread\nconst later = await tf.async.tetMesh(mesh, { tolerance: 1e-6 });\n",[488,535,536,563,570,602,608,614,630,637,643],{"__ignoreMap":486},[491,537,538,542,545,548,551,554,558,561],{"class":493,"line":494},[491,539,541],{"class":540},"spNyl","const",[491,543,544],{"class":508}," result ",[491,546,547],{"class":501},"=",[491,549,550],{"class":508}," tf",[491,552,553],{"class":501},".",[491,555,557],{"class":556},"s2Zo4","tetMesh",[491,559,560],{"class":508},"(mesh)",[491,562,525],{"class":501},[491,564,566],{"class":493,"line":565},2,[491,567,569],{"class":568},"sHwdD","\u002F\u002F result.tetrahedra: NDArrayInt32 [T, 4]; result.points: NDArrayFloat64 [P, 3]\n",[491,571,573,576,579,581,584,587,589,591,594,596,599],{"class":493,"line":572},3,[491,574,575],{"class":497},"if",[491,577,578],{"class":508}," (result",[491,580,553],{"class":501},[491,582,583],{"class":508},"status ",[491,585,586],{"class":501},"===",[491,588,550],{"class":508},[491,590,553],{"class":501},[491,592,593],{"class":508},"TetMeshStatus",[491,595,553],{"class":501},[491,597,598],{"class":508},"meshed) ",[491,600,601],{"class":501},"{\n",[491,603,605],{"class":493,"line":604},4,[491,606,607],{"class":568},"  \u002F\u002F ...\n",[491,609,611],{"class":493,"line":610},5,[491,612,613],{"class":501},"}\n",[491,615,617,620,622,625,628],{"class":493,"line":616},6,[491,618,619],{"class":508},"tf",[491,621,553],{"class":501},[491,623,624],{"class":556},"deleteTetMesh",[491,626,627],{"class":508},"(result)",[491,629,525],{"class":501},[491,631,633],{"class":493,"line":632},7,[491,634,636],{"emptyLinePlaceholder":635},true,"\n",[491,638,640],{"class":493,"line":639},8,[491,641,642],{"class":568},"\u002F\u002F off the main thread\n",[491,644,646,648,651,653,656,658,660,663,665,667,670,673,676,680,683,687,690,693],{"class":493,"line":645},9,[491,647,541],{"class":540},[491,649,650],{"class":508}," later ",[491,652,547],{"class":501},[491,654,655],{"class":497}," await",[491,657,550],{"class":508},[491,659,553],{"class":501},[491,661,662],{"class":508},"async",[491,664,553],{"class":501},[491,666,557],{"class":556},[491,668,669],{"class":508},"(mesh",[491,671,672],{"class":501},",",[491,674,675],{"class":501}," {",[491,677,679],{"class":678},"swJcz"," tolerance",[491,681,682],{"class":501},":",[491,684,686],{"class":685},"sbssI"," 1e-6",[491,688,689],{"class":501}," }",[491,691,692],{"class":508},")",[491,694,525],{"class":501},[696,697,698,714],"table",{},[699,700,701],"thead",{},[702,703,704,708,711],"tr",{},[705,706,707],"th",{},"Option",[705,709,710],{},"Type",[705,712,713],{},"Description",[715,716,717,737,755,769,786],"tbody",{},[702,718,719,725,734],{},[720,721,722],"td",{},[488,723,724],{},"splitConstraints",[720,726,727,730,731],{},[488,728,729],{},"boolean",", default ",[488,732,733],{},"true",[720,735,736],{},"Cut the crossings the recovery finds; without it the surface is meshed as given and a crossing in it refuses",[702,738,739,744,752],{},[720,740,741],{},[488,742,743],{},"tolerance",[720,745,746,730,749],{},[488,747,748],{},"number",[488,750,751],{},"0",[720,753,754],{},"Plane pooling, in the mesh's coordinates: near-coplanar faces pool onto one plane at the entrance, and it is the band of every drain",[702,756,757,762,766],{},[720,758,759],{},[488,760,761],{},"siteBudgetRatio",[720,763,764],{},[488,765,748],{},[720,767,768],{},"An integer: the sites a run may hold per site its entrance states. Default: the library's",[702,770,771,776,783],{},[720,772,773],{},[488,774,775],{},"returnReport",[720,777,778,730,780],{},[488,779,729],{},[488,781,782],{},"false",[720,784,785],{},"Also return the report, measured only when asked",[702,787,788,793,797],{},[720,789,790],{},[488,791,792],{},"returnIndexMap",[720,794,795],{},[488,796,733],{},[720,798,799],{},"Also return the index map",[475,801,802,803,806],{},"The points come back in float64 whatever the mesh's dtype: they are exact lattice positions mapped back, finer than a float32 holds. The mesh's transformation places it, so the points are world positions; its face membership and manifold edge link caches are reused. The result's arrays own WASM storage: release them with ",[488,804,805],{},"tf.deleteTetMesh",", which leaves the input mesh untouched.",[527,808,810],{"id":809},"the-index-map","The Index Map",[482,812,814],{"className":484,"code":813,"language":7,"meta":486,"style":486},"const r = tf.tetMesh(mesh, { returnIndexMap: true });\n\u002F\u002F r.facetOffsets [K + 1] \u002F r.facetTriangles [N, 3]: per facet, the boundary triangles covering it\n\u002F\u002F r.faceFacetOffsets [F + 1] \u002F r.faceFacets: per input face, the facets it lies in, ascending\n",[488,815,816,852,857],{"__ignoreMap":486},[491,817,818,820,823,825,827,829,831,833,835,837,840,842,846,848,850],{"class":493,"line":494},[491,819,541],{"class":540},[491,821,822],{"class":508}," r ",[491,824,547],{"class":501},[491,826,550],{"class":508},[491,828,553],{"class":501},[491,830,557],{"class":556},[491,832,669],{"class":508},[491,834,672],{"class":501},[491,836,675],{"class":501},[491,838,839],{"class":678}," returnIndexMap",[491,841,682],{"class":501},[491,843,845],{"class":844},"sfNiH"," true",[491,847,689],{"class":501},[491,849,692],{"class":508},[491,851,525],{"class":501},[491,853,854],{"class":493,"line":565},[491,855,856],{"class":568},"\u002F\u002F r.facetOffsets [K + 1] \u002F r.facetTriangles [N, 3]: per facet, the boundary triangles covering it\n",[491,858,859],{"class":493,"line":572},[491,860,861],{"class":568},"\u002F\u002F r.faceFacetOffsets [F + 1] \u002F r.faceFacets: per input face, the facets it lies in, ascending\n",[475,863,864],{},"Coplanar input triangles that meet wound alike are one facet; a face lies in one facet unless a crossing cut it. The map is only computed when asked for.",[527,866,868],{"id":867},"the-report","The Report",[475,870,871,874,875,878],{},[488,872,873],{},"result.status"," is the call's answer, a ",[488,876,877],{},"tf.TetMeshStatus"," value:",[696,880,881,891],{},[699,882,883],{},[702,884,885,888],{},[705,886,887],{},"Status",[705,889,890],{},"Meaning",[715,892,893,903,913,927,937,947],{},[702,894,895,900],{},[720,896,897],{},[488,898,899],{},"meshed",[720,901,902],{},"Every constraint recovered and the surface winds consistently; the mesh is the cells it winds positively",[702,904,905,910],{},[720,906,907],{},[488,908,909],{},"refused",[720,911,912],{},"Some constraint was refused, the entrance left a carrier without its triangles, or its lattice cannot resolve the crossings its passes kept naming; the report counts each kind. A mesh is returned only when the surface still winds consistently",[702,914,915,920],{},[720,916,917],{},[488,918,919],{},"open",[720,921,922,923,926],{},"The recovered surface has a hole, a rim of free edges that hangs off no non-manifold attachment; no mesh. ",[488,924,925],{},"tf.fillHoles"," closes a hole",[702,928,929,934],{},[720,930,931],{},[488,932,933],{},"unwound",[720,935,936],{},"The surface does not wind consistently, or it holds a sheet such as a flap whose free rim bounds nothing; no mesh",[702,938,939,944],{},[720,940,941],{},[488,942,943],{},"rankDeficient",[720,945,946],{},"The points span less than three dimensions",[702,948,949,954],{},[720,950,951],{},[488,952,953],{},"capacity",[720,955,956],{},"The cells or sites outgrew the index type",[475,958,959,960,963,964,967,968,971,972,975,976,978,979,982,983,987],{},"The rest of the report is opt-in. Under ",[488,961,962],{},"{ returnReport: true }",", ",[488,965,966],{},"result.report"," mirrors the C++ ",[488,969,970],{},"tf::tet_mesh_report"," in camelCase: ",[488,973,974],{},"status"," is a ",[488,977,877],{}," value, refusals are counted by kind, and ",[488,980,981],{},"census"," carries the constraint recovery's counts. See the ",[984,985,986],"a",{"href":232},"C++ Tetmesh module"," for every field.",[989,990,991],"style",{},"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 .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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);}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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 .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":486,"searchDepth":494,"depth":565,"links":993},[994,995,996],{"id":529,"depth":565,"text":530},{"id":809,"depth":565,"text":810},{"id":867,"depth":565,"text":868},"Constrained Delaunay tetrahedralization of closed surfaces.","md",null,{},{"icon":109},{"title":106,"description":997},{"loc":107},"Mawffu5d67w-Q7Fz0qIKUT3oHR6wichGsoWwg1PIjys",[1006,1008],{"title":101,"path":102,"stem":103,"description":1007,"icon":104,"children":-1},"Hole filling — patches that continue the surface around a mesh's boundary rims.",{"title":111,"path":112,"stem":113,"description":1009,"icon":114,"children":-1},"Performance comparisons against MeshLib, VTK, CGAL, libigl, Coal, FCL, and nanoflann.",1794391230601]