How to project a geometry on a surface following a curve and considering the deformations of the geometry

Hi all,
I will be very grateful if someone could help me to generate a new curve on a surface.
Firstly, I have a reference curve on a surface and I have divided this curve into several points with a fixed length. I have placed a perpendicular frame to a surface in each point. Also, I have a tangent reference axis to the first plane that can be rotate and can be defined for the user. This reference axis can be a line on the surface, and its function is to define the direction of the red lines.

what I would like to do in grasshopper is to build a curve from the blue points shown in the image, this new curve must be on the surface too. The problem is that I would like to find the blue points on the curve, according to the following conditions.

  • Each blue dot is the vertex of a rhombus.
  • The rhombus has two green sides with the same length and two red sides with the same length.
  • The length of the sides of the rhombus are known and can be fixed by the user.
  • The rhombus can only change the angle, but not the dimensions.

How can I project a length on a 3D surface? Is this possible in grasshopper?

What I try to do is divide the surface, but maintain the same lateral distance and maintain the distance of the sides of the rhombus.

The right side of the image shows what I would like to do but in the plane.

Thank you very much for your time.
Surface 3d rhino.3dm (85.8 KB) Surface 3d (5.4 KB)

Hello sailor!
I’m not sure if I get it… you want to project the rhombus on the surface, following the curve’s path and avoiding any kind of deformation? If not, please try to exemplify better… I can’t find our friend the rhombus inside the files you uploaded…
Best regards,
Sir Ernest Shackleton

Hi Ernest,

Yes, I would like to project the rhombus on the surface, following the curve’s path. The rhombus is deformed, but only in the angle angle_i and the sides keep their lengths as if it were a 4-bar mechanism.

In the figure below you can see an example in 2D and I would like to do this but on a 3D surface.

The Reference axis is useful to fixing the L1 side of the first rhombus.
I can’t fine how to do this in grasshopper.

If you can help me, I will be very grateful.


There are several things you are not taking into account.

  1. A straight segment is not the same as curved one, so when you trace your curve and divide it by lenght 10, you are creating a curved segment that will have 10 from end point to start point but along it’s curved path. Therefore, when you take those points and try to create the L3/L4 side the geometry will have slight variations in lenght due to this division of the curve… What I’m trying to say is that this approach will create slight errors and maybe you should try something else…

  1. When you project something, the length will be variable depending on what you are projecting it. If it’s a flat surface and both geometries are parallel, the deformation will be zero. Otherwise, deformation will appear. Think about map projections of the earth… no map is accurate because it’s impossible to project something round onto something flat (or the other way round) without any level of deformation.

Here’s what I managed to do:

Surface 3d (19.2 KB) Surface 3d rhino.3dm (42.0 KB)

Best regards,
Sir Ernest Shackleton