# (Demo) 2D Wave Here is a simple demo that draws a cool 2D time-based wave. The wave is the superposition of several sine waves. I found the original code here.

You can find in init.lua, the function that computes the wave:

```function update_curve_v2(curve, t) local step_angle = (2.0*PI) / curve.num_vertices local angle = 0 local x = -curve.x_size/2.0 local x_step = curve.x_size / curve.num_vertices   for i=0, curve.num_vertices-1 do local y = math.sin(angle * curve.frequency) y = y + math.sin(angle * curve.frequency * 2.1 + t) * 4.5 y = y + math.sin(angle * curve.frequency * 1.72 + t*1.121) * 4.0 y = y + math.sin(angle * curve.frequency * 2.221 + t*0.437) * 5.0 y = y + math.sin(angle * curve.frequency * 3.1122 + t*4.269) * 2.5 y = y * curve.amplitude angle = angle + step_angle gh_polyline.set_vertex_position(curve.line, i, x, y, 0, 1) x = x + x_step end end```

where curve is a structure defined as follows:

```curve = { line = 0, -- polyline num_vertices = 1000, x_size = winW * 0.9, color = {r=91/255, g=200/255, b=1.0, a=1.0}, amplitude = 10.0, frequency = 3.0, }```

In the demo, I added the possibility to tweak every parameter of the wave. Each coefficient can be changed.

I find this wave very relaxing, that’s why I decided to code this small demo. And if you need to draw a 2D curve, here is a ready-to-use template based on a polyline. 