Thanks for releasing this amazing project! I have read your thesis and tried your code.
I learned from your thesis that:
[1] The limitation of gStar4D is that it is not quite efficient for input points from the surface of an object.
[2] This is because the quality of the output of gFlip3D is not as good for points on a surface as it is for points distributed inside a volume.
It seem that your thesis mainly focuses on speedup rather than accuracy, and your method is surely efficient and exact for those nearly randomly distributed points (e.g. gaussian noise). But after some experiments, I found that your method deviates from the ground truth (the exact solution) severely when points are on a manifold (e.g. a sphere, or even a cube defined by its eight vertices).
I also noticed that one of your testing instance, Brain, has some interior points inside its surface, and therefore achieves the best performance, as seen below
[3] In contrast, the Brain input has both surface points and points from inside the object. gFlip3D performs better on Brain than all the other inputs.
For example, in my experiments, for 1000 points distributed on a unit sphere, scipy found 1992 simplices in total, while gDel3D found 3051 (after removal of the last infinity point index). I also test the total volume of all the tetrahedrons, scipy has 4.136784915799923, and gDel3D has 4.540920245600749
I also tried a cube with its 8 vertices inside the range [-1, 1]^3. Your method only got 5 simplices while scipy got 6. The simplices index obtained by your method is:
Thanks for releasing this amazing project! I have read your thesis and tried your code.
I learned from your thesis that:
It seem that your thesis mainly focuses on speedup rather than accuracy, and your method is surely efficient and exact for those nearly randomly distributed points (e.g. gaussian noise). But after some experiments, I found that your method deviates from the ground truth (the exact solution) severely when points are on a manifold (e.g. a sphere, or even a cube defined by its eight vertices).
I also noticed that one of your testing instance,
Brain
, has some interior points inside its surface, and therefore achieves the best performance, as seen belowFor example, in my experiments, for 1000 points distributed on a unit sphere,
scipy
found 1992 simplices in total, while gDel3D found 3051 (after removal of the last infinity point index). I also test the total volume of all the tetrahedrons,scipy
has4.136784915799923
, and gDel3D has4.540920245600749
I also tried a cube with its 8 vertices inside the range [-1, 1]^3. Your method only got 5 simplices while
scipy
got 6. The simplices index obtained by your method is:the input point cloud is:
I found that
scipy
got the right volume of 8.0, while your method had the wrong number:So I was wondering how we can get more accurate results for points on a manifold surface?