# Sine Curve

Sine Curve from equations

Diminishing amplitude Sine Curve

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);

Diminishing amplitude Sine Curve along Base Curve

//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);

Diminishing amplitude Sine Curve along Base Curve with Attractor

//Number of Points

ct = 200;

//Amplitude Scale

as = 2;

//Period Scale

ps = 8;

//Base Curve

bc = NurbsCurve.ByControlPoints(Point.ByCoordinates([0,10,40,50],[0,20,20,0]));

cp = bc.PointAtParameter(0..1..#ct);

cn = bc.NormalAtParameter(0..1..#ct);

//Sine Curve

ds = Math.Sin(0..360*ps..#ct)*2;

ic = Math.RemapRange(at.DistanceTo(cp),as,0);

nc = NurbsCurve.ByPoints(cp.Translate(cn,ds*Math.Pow(ic,2)));

Last modified 2yr ago