# This file is automatically generated by pyo3_stub_gen
# ruff: noqa: E501, F401, F403, F405

import collections.abc
from raygeo.mesh import types
__all__ = [
    "trace_spiral",
]

def trace_spiral(mesh: types.TriangleMesh, u_field: collections.abc.Sequence[float], step_over: float, start_point: tuple[float, float] | None = None) -> collections.abc.Sequence[tuple[float, float, float]]:
    r"""
    Trace a spiral toolpath from inner to outer boundary.
    
    Uses the piecewise-constant gradient of the scalar field u to
    trace a smooth spiral that morphs from the inner boundary (u=0)
    to the outer boundary (u=1) without self-intersections.
    
    :param mesh: TriangleMesh with boundary tags from build_triangle_mesh.
    :param u_field: Scalar field from solve_laplace, one value per vertex.
    :param step_over: Desired radial step-over distance between spiral turns.
    :param start_point: Optional explicit start point (x,y).
    :returns: List of (x, y, z) points forming the spiral polyline.
    :complexity: O(n * s) where n = triangles, s = spiral steps
    """

