Algorithm/method Implemented By Surface.ShortPath?

Dear McNeel Devs,

I’m doing a writeup on some old scripts I wrote that implement the Rhino.Geometry.Surface.ShortPath method, and am trying to understand and (ideally) reference the underlying algorithm/method it implements. I have not been able to source more information about it other than its RhinoCommon documentation and the Rhino help. Would it be possible for you to point me to the algorithm/method it implements, or perhaps similar reference(s) that inspired it?

Thanks and best,


Hi @AndersDeleuran,

The comments for the internal function include, “compute geodesics on a surface”. Perhaps this helps?

– Dale

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
  • 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

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?

Maybe these are helpful?

1 Like

Yes, very, thanks so much. And here’s the key precedent it references by Takashi Maekawa (1996):

1 Like

Yesterday, I came across this:

Maybe it contains some additional information that could be relevant to you.
Full disclaimer, I haven’t watch it all! :wink:

1 Like