https://github.com/megidd/tetrahedron-table
A prerequisite for generating tetrahedra throughout the volume of a 3D model
https://github.com/megidd/tetrahedron-table
finite-element-analysis finite-elements
Last synced: 3 months ago
JSON representation
A prerequisite for generating tetrahedra throughout the volume of a 3D model
- Host: GitHub
- URL: https://github.com/megidd/tetrahedron-table
- Owner: Megidd
- License: apache-2.0
- Created: 2023-05-10T15:08:15.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2023-10-28T12:34:07.000Z (over 2 years ago)
- Last Synced: 2025-12-18T20:31:38.245Z (5 months ago)
- Topics: finite-element-analysis, finite-elements
- Language: OpenSCAD
- Homepage:
- Size: 1.28 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# Publication
A journal paper is being prepared based on this repository and that PR: https://github.com/deadsy/sdfx/pull/68
Its DOI will be available when ready.
# Input & output
Input is triangle table. Output is tetrahedron table. The output is filled out manually by going over all the cases from `0` to `255`.
# Background
There is a source code that generates surface triangles. The isosurface is generated for the iso-value of `0`. The source code uses a table for `2^8=256` possible *inside/outside*, i.e. *negative/positive*, combinations of `8` scalar values at `8` cube corners. The table returns an array. Every `3` consecutive array items would correspond to a triangle. The array items could be from `0` to `11`, pointing to the `12` edges a cube has. Probably this table comes from a published paper in the field of mathematics or computer science:
https://github.com/deadsy/sdfx/blob/2d4e9502ec6fe898e8774020882cb8150f16a6a6/render/march3.go#L360
# Objective
I'm trying to adapt the above *marching cubes* source code, and its *tables*, to generate tetrahedra throughout the volume of a 3D model. The code would extract tetrahedra elements with all the non-positive, i.e. `<=0`, values. Non-positive means the 3D space *on* and *inside* the isosurface of the `0` value.
# Question
For some reason, I cannot find any publication for extracting a tetrahedral mesh *on* and *inside* the isosurface from a three-dimensional discrete scalar field. Maybe I'm not looking at the right places. Am I missing something? Or do I have to come up with the *tables* myself? It looks like a daunting task to me. Let's do it...
# Reference
https://github.com/deadsy/sdfx/pull/68#issuecomment-1447714965
# Node numbering
The node numbering follows the convention of CalculiX solver [documentation](http://www.dhondt.de/ccx_2.20.pdf). Like this:

# Example
## Case 0
Case 0 is trivial. No cube corner has zero/negative value. No tetrahedron is generated.
## Case 1
Case 1 result is below. A cube corner has zero/negative value.

## Case 2

## Case 3

## Case 4

## Case 5

## Case 6
