## 4 Methodology
### Extract Feature Paths
#### 4.1.3 Generate Feature Paths from Centroids  
A set of feature sections, denoted as \(\{S_{i}\}\), is positioned to encompass the segmented manifold mesh patch of the solid feature being reconstructed. This is achieved by connecting the center of mass of the vertices intercepted by each section sequentially, resulting in the formation of a polyline. The detailed steps involved in this process are outlined below:  
Step 1: From feature section \(S_{1}\), the algorithm iterates through all the first-order neighboring points of the initial sampling point \(v_{i}\) to identify the point \(v_{j}\) that has the smallest angle with respect to the vector connecting it to \(v_{i}\) and the normal vector of \(S_{1}\). Step 2: Continue traversing all first-order neighborhood points, starting from \(v_{j}\), and repeat _Step 1_ until the algorithm returns to \(v_{i}\). Step 3: Calculate the centroid for all the vertices extracted in _Step 2_ using the Formula (3), where \(x_{c}\), \(y_{c}\), \(z_{c}\) represent the X, Y, and Z coordinates of the centroid, respectively. \(N\) represents the total number of sampling points in the current feature section. RepeatStep 1 and Step 2 until the centroids of all the feature sections have been calculated, then connect the centroids that have already been calculated sequentially to form polyline \(\Lambda\). \[\left\{ \begin{aligned} x_{c}&=\sum_{k=1}^{N}x_{k}/N\\ y_{c}&=\sum_{k=1}^{N}y_{k}/N\\ z_{c}&=\sum_{k=1}^{N}z_{k}/N\end{aligned} \right. \tag{3}\]  
The subsequent procedure involves classifying the line type of polyline \(\Lambda\) using the curvature and normal vector of the centroids, as illustrated in Figure 5.  
For the discrete centroid point sequence \(\left\{v_{1}^{c},v_{2}^{c},\cdots,v_{n}^{c}\right\}\), the curvature \(K_{i}\) of centroid \(v_{i}^{c}\) is determined based on itself, as well as its preceding and succeeding neighbor points \(v_{i-1}^{c}\) and \(v_{i+1}^{c}\), calculated using the following formula [27]:  
\[K_{i}=\frac{4S_{\triangle}v_{i-1}^{c}v_{i}^{c}v_{i+1}^{c}}{\overline{v_{i}^{c }v_{i-1}^{c}v_{i+1}^{c}v_{i}^{c}}\cdot\overline{v_{i+1}^{c}v_{i-1}^{c}}} \tag{4}\]  
where \(S_{\triangle}v_{i-1}^{c}v_{i}^{c}v_{i+1}^{c}\) represents the area of the triangle formed by vertices \(v_{i-1}^{c}\), \(v_{i}^{c}\), and \(v_{i+1}^{c}\), calculated using [PERSON]'s formula based on the triangle's side lengths. In addressing the curvature calculation for the polyline \(\Lambda\)'s endpoints \(v_{1}^{c}\) and \(v_{n}^{c}\), the edges \(\overline{v_{1}^{c}v_{2}^{c}}\) and \(\overline{v_{n-1}^{c}v_{n}^{c}}\) are extended equidistantly in opposite directions to points \(v_{0}^{c}\) and \(v_{n+1}^{c}\), ensuring \(K_{0}=K_{n+1}=0\). Additionally, the normal vector of the centroid \(v_{i}^{c}\) is formulated as:  
\[\mathbf{n}_{i}=\frac{\mathbf{n}_{i-1,i}\times\mathbf{n}_{i,i+1}}{\|\mathbf{n} _{i-1,i}\times\mathbf{n}_{i,i+1}\|} \tag{5}\]  
where \(\mathbf{n}_{i-1,i}\) and \(\mathbf{n}_{i,i+1}\) represent the normal vectors of edges \(\overline{v_{i-1}^{c}v_{i}^{c}}\) and \(\overline{v_{i}^{c}v_{i+1}^{c}}\), which are formulated as:  
\[\left\{ \begin{aligned} \mathbf{n}_{i-1,i}&=\frac{ \mathbf{s}_{i-1,i}\times(\mathbf{s}_{i-1,i}\times\mathbf{s}_{i+1})}{\|\mathbf{ s}_{i-1,i}\times\mathbf{s}_{i-1,i}\times\mathbf{s}_{i+1}\|}\|\\ \mathbf{n}_{i,i+1}&=\frac{\mathbf{s}_{i+1}\times( \mathbf{s}_{i-1,i}\times\mathbf{s}_{i+1})}{\|\mathbf{s}_{i+1}\times(\mathbf{s} _{i-1,i}\times\mathbf{s}_{i+1})\|}\end{aligned} \right. \tag{6}\]  
where \(\mathbf{s}_{i-1,i}\) and \(\mathbf{s}_{i,i+1}\) represent the direction vectors of edges \(\overline{v_{i-1}^{c}v_{i}^{c}}\) and \(\overline{v_{i}^{c}v_{i+1}^{c}}\), respectively. Commencing from the initial point \(v_{1}^{c}\) of polyline \(\Lambda\), tolerance processing is conducted on the centroid curvature \(K_{i}\) and the angle between the normal vector \(\varphi_{i-1,i}\). The defined tolerance conditions are as follows:  
\[\left\{ \begin{aligned} 0&\leq K_{i}\leq 0.1\\ 0&\leq\varphi_{i-1,i}\leq 2^{\circ}\end{aligned} \right.