function Tesselator() {
  /*** state needed for collecting the input data ***/
  this.mesh = null;
  /* stores the input contours, and eventually
  the tessellation itself */

  /*** state needed for projecting onto the sweep plane ***/

  this.normal = [0.0, 0.0, 0.0];
  /* user-specified normal (if provided) */

  this.sUnit = [0.0, 0.0, 0.0];
  /* unit vector in s-direction (debugging) */

  this.tUnit = [0.0, 0.0, 0.0];
  /* unit vector in t-direction (debugging) */

  this.bmin = [0.0, 0.0];
  this.bmax = [0.0, 0.0];
  /*** state needed for the line sweep ***/

  this.windingRule = Tess2.WINDING_ODD;
  /* rule for determining polygon interior */

  this.dict = null;
  /* edge dictionary for sweep line */

  this.pq = null;
  /* priority queue of vertex events */

  this.event = null;
  /* current sweep event being processed */

  this.vertexIndexCounter = 0;
  this.vertices = [];
  this.vertexIndices = [];
  this.vertexCount = 0;
  this.elements = [];
  this.elementCount = 0;
}
state needed for collecting the input data **