How to create a decreasing sine curve amplitude?

Hello everyone

I need to modify the amplitude of the sine curve offered in the Dynamo Primer

I need something like the solution applied for Grasshopper, but in Dynamo

Thanks a lot

Hi @joavegaco !
Kinf of topic i love :slight_smile:
You can play with that script (it is a work in progress…) :

curve_by_cos_C.dyn (30.1 KB)

1 Like

Just out of curiosity…

What do you use these kind of scripts for?

Thanks a lot. That’s great. I’m going to adapt it to my needings.

I have to create a script for the facade of Messe Basel Hall of Herzog & de Meuron.

As you can see, the peak of each element converges with an imaginary surface. And the axis of each sequence of elements converges with the isolines of imaginary surface.


Thank you for explaining :slight_smile:

You could also do it mathematically
(Should also be possible with nodes)

n = 500;
w = 10;
h = 4;
x = 0..Math.PI*2*10..#n;
y = Math.Sin(0..360*w..#n) * (h..0.1..#n);
p = Point.ByCoordinates(x,y);
c = NurbsCurve.ByPoints(p);

To make it flow along a base curve, a little more work

//Base Curve
c1 = NurbsCurve.ByPoints
//Number of Divisions
n = 500;
//Scale Wave Extent
w = 10;
//Scale Wave Height
h = 5;
//Points on Curve
p1 = c1.PointAtParameter(0..1..#n);
//Normal at Points
n1 = c1.NormalAtParameter(0..1..#n);
//Scale wrt Base Curve Length
s = c1.Length/(Math.PiTimes2*w);
y = Math.Sin(0..360*w..#n) * (h..0.1..#n) * s;
p2 = p1.Translate(n1,y);
//Nurbs Curve
c2 = NurbsCurve.ByPoints(p2);

Thanks a lot. That is going to help me.

1 Like