Grasshopper

algorithmic modeling for Rhino

# Geodesic distance from points on mesh

Here is a script to calculate exact geodesic distance from points on mesh. It is a transcription of "Fast Exact and Approximate Geodesics on Meshes" from "http://research.microsoft.com/en-us/um/people/hoppe/geodesics.pdf" link. It could be used with one or more points. Many points could be used as an approximation of a curve.

The script need a mesh (without too many points) and some source points (at least one).

It outputs distances on each Vertex of the mesh, Isolines are calculated using Millepede plugin. As the script is not optimized it could lead to long calculations (~ 1 min with the example provided).

Views: 6909

Attachments:

### Replies to This Discussion

Thanks Laurent. I hope the Bunny is not being abused with all this attention its getting :)

Question: Can these Isotherms also be flattened into horizontal planes, like contour lines?Looks good I think! , unfortunately a 3d print will collapse :(

I don't really understand what you mean, but as Iso-distances are represented by curves they could be flattened. They could be used to generate sort of UV map on a mesh.

You could also use a planar contour as points of departure and generate iso-distance from this contour. Here is an example, I cut the mesh, generate points and fed these points int the script. As iso distance use existing mesh it is not very good at the beginning (green line). I could (must) add an output with exact arcs. But the first improvement must be to speed up calculation and doing "windows mergins".

This script was used for my album

http://www.grasshopper3d.com/photo/albums/geodesic

My fault, .... see picignore the stepping effect (which in model building would be the various cardboard layers making the contours)

Kim, what do you imagine the difference between a contour and an a isolines flattended to horizontal plane is?

Yikes, lets for argument purposes agree isolines and contour lines are the same thing.

Architecturally speaking contour lines denote points of equal height. I imagine that the geometry (bunny) could be cut up in slices, like a loaf of bread, in the X or Y or Z planes, related to the orthographic projections the bunny occupies.

Now instead of cutting the bunny into slices, we just draw a contour line around the bunny where the cutting would take place.

Hi, can we control the gap size of every contour's curve? i'm trying to use this definition to generate robotic 3d printing path, and the distance from one curve to another should be based on the diameter of the nozzle.

Thanks

The script output distance in the unit on rhino model on each vertex from points. So you could set an interval on contour lines. We also had a discussion on this subject here.

http://www.grasshopper3d.com/forum/topics/an-idea-to-generate-milli...

But the script work for mesh without too many triangles, because I didn't implement the simplification process described on the paper I cited.

is it possible to get the geodesic distance between two points with this script?

Yes it is possible
As source input one point and you will get distance at all vertex

Sorry for my misunderstanding, but is it possible to get the geodesic distance from a start point to a end point? Like the normal geodesic component in Grasshopper?

Thanks

I have not my PC now. So I don't now is G is a distance or a path. If you speak of distance, yes this could be done with adding some components. If it is a path that you want it is more complicated.

Look at §3.5 of this publication

http://hhoppe.com/geodesics.pdf

Hi, Laurent,

Thanks for sharing, the component is quite effective and very helpful indeed!  I'd like to know if you have ever tried "geodesis in heat"  method for geodesic curves in grasshopper?The detailed introduction of this method is on this website:

https://www.cs.cmu.edu/~kmcrane/Projects/HeatMethod/

I find this heat method more robust for complacted surface and it even works for discrete objects , however, I also find it very difficlut to write the code of it in grasshopper, so I am wondering have you ever tried this method, or do you have any suggestions?

Many Thanks!

Yige

by kgm

by kgm

by kgm