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

https://primer.dynamobim.org/05_Geometry-for-Computational-Design/5-4_curves.html

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.

2 Likes

Amazing!
Thank you for explaining :slight_smile:

You could also do it mathematically
(Should also be possible with nodes)
sine_2020-12-02_08-26-56

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
(Point.ByCoordinates([0,10,50],[0,10,0]));
//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);
4 Likes

Thanks a lot. That is going to help me.

1 Like