Algorithm/method Implemented By Surface.ShortPath?

Cheers Dale, thanks so much for looking this up for me. I’m afraid it doesn’t add more information. With the Rhino help description being the most rich:

The ShortPath command creates the shortest possible curve (geodesic) between two points on a surface. A true shortest path exists, and if this path does not run along a surface boundary, it is a geodesic. Not all geodesic curves are shortest paths between their end points. For instance, a great circle on a sphere is a closed geodesic, it does not have endpoints. An arc of a great circle on a sphere containing more than 180 degrees is a geodesic, but it is not the shortest path between the end points. However, geodesics are locally shortest paths. This means that if you take a sufficiently small piece of a geodesic curve, it will be the shortest path between its endpoints.

This doesn’t describe/reference the underlying method/algorithm used to compute the geodesic though, which is what I was hoping to reference within my PhD thesis. For context, I’m referencing various methods for computing geodesics on triangle meshes for membrane pattern cutting, including:

  • Barnes, Michael R. (1999). “Form Finding and Analysis of Tension Structures by
    Dynamic Relaxation”. In: International Journal of Space Structures 14.2.
  • Ishii, Kazuo (1999). “Form Finding Analysis in Consideration of Cutting Patterns
    of Membrane Structures”. In: International Journal of Space Structures
    14.2.
  • Gründig, Lothar, Erik Moncrieff, Peter Singer, and Dieter Ströbel (2000). “Highperformance
    Cutting Pattern Generation of Architectural Textile Structures”.
    In: Fourth International Colloquium on Computation of Shell & Spatial Structures.
  • Kim, Jae Yeol and Jang Bog Lee (2002). “A New Technique for Optimum Cutting
    Pattern Generation of Membrane Structures”. In: Engineering Structures
    24.6.

These generally use dynamic relaxation or the force density method as their underlying method (similar to this approach). However, since I ended up using Surface.ShortPath for a project, I am now wondering how exactly it works, being that it operates on NURBS surfaces and not triangle meshes?