There are primitives to create helixes and spirals but I don’t see one for creating waves. How would one create a wave pattern like a sine wave for instance?
Create a one wavelength curve.
Use Array to repeat the curve as many times as desired, spacing is length of one wavelength curve
Join the curves into a polycurve. For a single curve use Match with merge option on adjacent curve ends.
Two methods for an “exact” sine wave cuve:

Generate a set of x,y points in Excel or similar for the sine wave; save as a .csv or .txt file; import points into Rhino; create a curve through the points using CurveThroughPt

Create a circle; use Divide to create set of equally spaced points on circle; move points so that they are at equal spacing along Xaxis; create a curve through the points using CurveThroughPt
Edit: If points are generated for a single wave length curve, then Array can be used to create a set of points for as many wavelengths as desired. Follow with CurveThroughPt.
With this plugin:
http://www.rhino3.de/_develop/__v3_plugins/math/
You can create curves and surfaces from mathematical equations.
Here is a script that make a “sine wave” surface:
I create a helix and then project the helix to c plane. I don’t know if this yields a mathematically pure sine wave but it seems to work well enough for my purposes and does not require scripting or Grasshopper.
Good method. If the helix is not tapered, and the axis of the helix is parallel to the CPlane, than the projection of the helix onto the CPlane will be a “pure” sine wave, within deviation from an exact sine wave due to the NURBS approximation of the helix.