Grasshopper

algorithmic modeling for Rhino

Hi,

 

Has anyone managed to emulate rhino's "Fin" command ? Through a custom component, VB / C# components, or just by using normal components ?

 

Thanks,

Kayin

Views: 2901

Replies to This Discussion

This might help get you started.

Fins are interpolated based on sampling surface normals.

Attachments:
Thanks Taz,

I like this definition a lot !

But I am looking for something a little more vague, the sort of 'notion' of a normal 'sweep' of a curve on a surface giving the fin, but I guess this is not possible ...

To visualise, something along these lines :


But without having to sample the points...

So, if Rhino's "fin" command does it by sampling points, then you do lose some accuracy, and that explains the 'thickness' variations of the fin. But how does Rhino generate sufficient points to make an accurate 'enough' fin ? How does it decide ? (More vague questions ...)

Many thanks !
Kayin
I'm not sure how the fin command works, but I can't think of a way of replicating it in GH without sampling points from a surface to get the normal vectors.

Maybe someone else can weigh in.
As Taz says, you have to sample points to ge the normals, there's just no way around it. The decision as to where to add points to the fin is based on testing to see if the resulting curve/surface is within tolerance. If it is than it can be considered as being "On the surface", although if you look closely enough (I'm talking VERY close), then there will always be a gap between a curve that lies on a surface and the surface itself.

Anyway, the Fin command doesn't use a standard surfacing command such as Loft or Sweep 2 rails or something. It constructs the nurbs surface directly, so it can take care of its own sampling. This is something that's likely to be overkill or extremely involved to try and replicate in GH. So if you're going to be using loft to recreate a fin, then throwing a bunch of points at it is pretty much all you can really do. If you throw enough at it (and by enough, I'd say from a couple dozen to about 50, depending on the complexity of the surface), then the resulting surface will be close enough to lying on the original surface.
Ah, just the someone else I was thinking of...

The only other idea I can think of would be to iteratively evaluate curve curvature (or maybe surface curvature) to increase the sampling rate at locations with extreme curvature. This would definitely need to be scripted.

Overall accuracy might be better, but maybe not significantly more than by just sampling with a lot of points.
A way to do this without scripting would be to run a dense polyline through the curve, then Reduce it to a given accuracy. This would automatically result in more (shorter) segments near highly curved portions. Then you either use the Polyline corners as samples, or divide each polyline segment into N points for more accurate sampling.

--
David Rutten
david@mcneel.com
Poprad, Slovakia
Hi, i was searching for a way to fin my curves on a surface too. but this time my curve is not divided from the surface itself using the divide surface command in GH which definitely gives me the Normal of each curve. The curve that im using is a curve interpolated on the surface itself. using the definition given by Taz alone is good enough for me but is there a way to extract the Normal of the curve interpolated on the surface so that i can plug it into the amplitude command?

THANK YOU IN ADVANCE!!!

Guan
Hi, im here again lol. anyways i have found the tool where i can get the normal of the intersecting interpolated curve on the surface. however, when i fin the surface, it seems that the fin is not to the normal any ideas to make it 100% to the normal??? I have attached an image, the GH definition along with the rhino file for help!!

THANK YOU!!

Guan
Attachments:

RSS

About

Translate

Search

Photos

  • Add Photos
  • View All

Videos

  • Add Videos
  • View All

© 2024   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service