## 3 Algorithms
### Direction Parallel Algorithms
#### 3.1.3 Seeded Ortho-Isogeodesics (Ortheo)  
The core idea of this algorithm is to generate a path with subcurves that are orthogonal to the isogeodesics computed from a seed curve. This approach stems from the observation that the resulting path can be utilized in combination with the FInA algorithm to form a grid-like structure similar to the carbon fiber fabric used in layer stacking, which can be seen in Figure 3. This composition, where the fibers meet at right angles is unachievable by the classical method of draping a fabric, as the process of draping around a curvature necessarily introduces gaps in the cloth, which are filled with extra segments by the algorithm inducing the need for discontinuities. Additionally, it offers a new notion of directionality: at every point in the path the subcurves point along the gradient \(\
abla\phi\). It was hypothesized that the maximum principle directions would align with \(\
abla\phi\) if the load is applied in the direction of this gradient at the boundary curves. The algorithm in its current form is in need of optimization for manufacturability as a lot of short segments are included in the path that, when regarding the distance between cutter and nozzle, can impede the ability to extrude the material. As this algorithm has not even been described for the planar case as of yet, the elaboration will be performed in more detail in the following.  
The inputs for this algorithm are the triangular surface mesh \(\mathcal{T}\), the isocontour resolution \(d_{iso}\), the spacing \(d\), the travel height \(h_{r}\) and a triangular mesh \(\mathcal{T}_{s}\) regarded as the \"source mesh\" from which the seed curve \(\gamma\) can be calculated. This is performed to enable the use of other existing components as the source, where the load could be applied.  
Computation starts by finding \(\gamma\) from the intersection of \(\mathcal{T}\) and \(\mathcal{T}_{s}\). Like before, the isocontours \(c_{i}=\{x_{p}|\phi(x_{p})=i\cdot d_{iso}\}\) are extracted after applying the heat method, note the usage of \(d_{iso}\) for the distance between the isocontours instead of \(d\). The set of path segments are initialized as \(1\)-tupels \(S_{path}=\{s_{j}\,with\,j\in 1,\ldots,\lceil\frac{\log_{\gamma}}{d}\rceil\}\) by extracting equidistant points from \(\gamma\) with spacing \(d\) and arc length \(l_{arc}\) of \(\gamma\). The path segments are then grown by iterating over the \(c_{i}\). For every \(c_{i+1}\), the path segments \(s_{j}\) are extended by finding the closest points in \(c_{i+1}\) to the points \(s_{j}(i)\) and appending it to the tupel. If the spacing between two chosen points \(s_{j}(i+1)\) and \(s_{j+1}(i+1)\) on \(c_{i+1}\) exceeds \(d\), a new path segment is started by inserting an additional \(s_{j}\) into \(S_{path}\) and adjusting the indices for the every \(s_{l}\) with \(l>j\). This way, gaps between path segments, which emerge due to the curvature of the surface are filled with new path segments, decreasing the unfilled area and increasing the area fraction while maintaining the directionality of the paths. Similarly, when the spacing decreases enough, segments are ended and removed from \(S_{path}\). The resulting path segments are resampled and smoothed by a Savitzky-Golay filter to eliminate sharp turns.  
When the iteration reaches the last isocontour the path segments are connected with travel motions by offsetting start- and endpoints of the path segments by \(h_{r}\) along the normal direction which yields the final path. A result of this procedure is displayed in Figure 2c for an exemplary surface. Because of the high amount of travel motions, a lot of cutting can occur when fiber paths are short. A possible improvement would be to significantly decrease the number of travel motions by implementing a back and forth motion in a weaving manner, as it cannot be achieved continuously due to the curvature-induced possibility that startpoints might be unreachable from previous endpoints without crossing already traversed regions.