#ifndef HELIX_H
#define HELIX_H

#include <GL/gl.h>

#include <cassert>
#include <vector>
using namespace std;

#include <gobj.h>
#include <print.h>
#include <point.h>
#include <typedefs.h>



/*!
\brief Helix made of lines.

The length and radius can be changed before each draw.
*/
class helix : public gobj
{
  vector< point2<double> > angles;
  /** The number of spikes. */
  uint Nspikes;
public:

  /** The spikes length. */
  double length;
  /** The number of turns the helix has. */
  double radius;


  /** Do nothing constructor. */
  helix();

  /** Partially create a helix, assign length and radius 
      before drawing. */
  helix
  (
    doublec nturns,
    uintc Nspikes_
  );

  /** Create a helix. */
  helix
  (
    doublec nturns,
    uintc Nspikes_,
    doublec length_,
    doublec radius_
  );

  /** Partially create a helix, assign length and radius 
      before drawing. */
  void construct
  (
    doublec nturns,
    uintc Nspikes_
  );
      
  /** Draw the helix without color. */
  void draw();

};


#endif


