respect to this reference coordinate axis. We interpolate the argument of the representation vector linearly over the triangle. This is possible because in a non-singular triangle, the argument is continuous as it circulates the boundary. Using this interpolation, we trace out the streamlines using Heun’s method [@kowalski_pde_2013].

### Singular Triangles {#sec:singular-triangles}

Previously, no streamline tracing methods have been suitable for accurately tracing streamlines in the neighborhood of a singular triangle. Numerical integration methods such as Heun’s method and other Runge-Kutta methods [@kowalski_pde_2013; @fogg_automatic_2015; @viertel_approach_2019; @zhang_vector_2006] are inaccurate in the neighborhood of a singularity since cross directions can change arbitrarily fast. They frequently compute discretizations of the streamline that “cut the corner” rather than traversing around the singularity as they should (see ). Streamline tracing methods based on edge maps [@ray_robust_2014; @myles_robust_2014] are guaranteed to never result in tangential crossings, but since paths are discretized by straight lines through each triangle, they are limited in their ability to resolve the path of a trajectory around a streamline by the number of triangles that meet at a singular point.

![An illustration of a numerically traced streamline that “cuts the corner” and does not traverse around the singularity.[]{data-label="fig:cut-the-corner"}](cut-corners.pdf){width="15.00000%"}

Here we develop a new 