## 2 Materials and Methods  
### The Interpolation Nodes and Nearest Neighbor  
For an arbitrary point of point-based shape, the normal vector represents the tangent plane direction of the unknown isosurface. In order to calculate the normal vector for all points, we first construct the interpolation nodes and calculate the normal vector for these points based on Marching Cube algorithm, which was first developed as a result of the research on visualizing Computed Tomography data and Magnetic Resonance Imaging data [22]. Therefore, it is necessary to establish a spatial topology to speed up the local point cloud search. An automatic method was introduced to segment the point cloud into some small cubes, and then the hash table was established by assigning the indexes to these cubes. Given a point set \(\textbf{S}=\{\textbf{X}_{t}=(x_{t},\,y_{t},\,z_{t})\,|\,t=1,\,\ldots,\,N\}\), in which \(N\) is the number of the point set. The efficiency and the accuracy were strongly associated with the cube's size \(L\). Small \(L\) means high accuracy, while larger \(L\) means high efficiency. According to the literature [23], a reasonable computation of \(L\) can be easily extended from 2D to 3D:  
\[L=\sqrt[3]{\frac{(x_{\max}-x_{\min})\times(y_{\max}-y_{\min})\times(z_{\max}-z _{\min})}{N}} \tag{1}\]  
in which \(x_{\max}\), \(x_{\min}\), \(y_{\max}\), \(y_{\min}\), \(z_{\max}\), \(z_{\min}\) are the maximum and minimum values of point cloud along the \(X\), \(Y\), and \(Z\) axes, respectively. Once the size of the cube is determined, the total number of the cubes \(index_{i}\), \(index_{j}\), and \(index_{k}\) were calculated separately according to \(X\), \(Y\), and \(Z\) axes. \[\left\{ \begin{array}{l}index_{i}=(x_{\max}-x_{\min})/L\\ index_{j}=(y_{\max}-y_{\min})/L\\ index_{k}=(z_{\max}-z_{\min})/L\end{array} \right. \tag{2}\]  
The cube contains the point \(\textbf{X}_{t}=(x_{t},y_{t},z_{t})\) can be indexed with:  
\[\left\{ \begin{array}{l}i=(x_{t}-x_{\min})/L\\ j=(y_{t}-y_{\min})/L\\ k=(z_{t}-z_{\min})/L\end{array} \right. \tag{3}\]  
Then the point \(\textbf{X}_{t}\) can be mapped to hash table by the following hash function:  
\[key=index_{i}\times index_{j}\times k+index_{i}\times j+i \tag{4}\]  
This is a process of projection and quantization that places each point in a cube indexed with \((i,j,k)\) that can correspond to the integer \(key\) through the hash function. Given a cube with an index of \((i,j,k)\), the Marching Cubes algorithm calculates a signed distance for all eight vertices of each cube; then, the intersection points of the cube's edges and the unknown isosurface is calculated according to these signed distances of the vertex [24]. Since the normal vector of the point cloud is unknown, the signed distance cannot be calculated, so the coordinates of the intersection points cannot be obtained. However, we can project the grid point **p** to the tangent plane of the unknown isosurface to get the projection points \(\textbf{p}_{1}\) in Figure 1. We call the projection points  
Figure 1: Projecting the point **p** onto the tangent plane \(\pi\) to construct the interpolation node \(\textbf{p}_{1}\). The randomness of scattered point cloud leads to the fact that the neighborhood of a point is generally not symmetric. The normal vector of the same point will change according to the change of the neighborhood range. We avoid this problem by searching the given cube and the 26 surrounding cubes and get all the neighborhood points of the geometric center point \(\mathbf{p}\). When the cube is small enough, it is considered that the points in a cube are on the same tangent plane and have nearly the same normal vector \(\mathbf{n}\). Figure 1 shows that the vertex point \(\mathbf{p}\) is usually not on the unknown isosurface; it can be projected to the surface along the direction of the normal vector \(\mathbf{n}\) that is defined by the neighbor of point \(\mathbf{p}\). The interpolation node \(\mathbf{p}_{1}\) is on the tangent plane \(\pi\).