anchor.diff:      var line = new Line(geometry, material);
       scene.add(line);
     }
  -}
  -
  -void drawTriangles() {
  -
  -  // Triangle test
  -  var geometry = new Geometry();
  -  
  -  int numIterations = 8;
  -  double xModifier = 20.0 / numIterations;
  -  Math.Random rand = new Math.Random();
  -  geometry.vertices.add(new Vector3(-10.0, -2.0, 1.0));
  -  for (int i = 0; i < numIterations + 1; i++) {
  -    // start at -10, go to 10
  -    // 0 to 20
  -    double x = -10.0 + i * xModifier;
  -    double y = Math.sin(i.toDouble());
  -    y = rand.nextDouble() * 2.0;
  -    double z = 1.0;
  -    geometry.vertices.add(new Vector3(x, y, z));
  -  }
  -  
  -  for (int i = 0; i < numIterations; i+= 2) {
  -    geometry.faces.add(new Face4(i, i + 1, i + 2, 0));
  -    print("added face " + i.toString() + ", " + (i + 1).toString() + ", " + (i + 2).toString());
  -  }
  -  
  -//  geometry.vertices.add(new Vector3(1.0, 0.0, 0.0));
  -//  geometry.vertices.add(new Vector3(1.0, 1.0, 0.0));
  -//  geometry.vertices.add(new Vector3(0.0, 0.0, 0.0));
  -//  geometry.faces.add(new Face3(0, 1, 2));
  -  
  -  var material = new MeshLambertMaterial(color: 0xcc0000);
  -  
  -  mesh = new Mesh(geometry, material);
  -  scene.add(mesh);
  -}
  -
  -void drawLines() {
  -  var material = new LineBasicMaterial(linewidth: 100.0, color: 0x0077dd);
  -  var geometry = new Geometry();
  -  int numIterations = 100;
  -  double xModifier = 20.0 / numIterations;
  -  Math.Random rand = new Math.Random();
  -  for (int i = 0; i < numIterations; i++) {
  -    // start at -10, go to 10
  -    // 0 to 20
  -    double x = -10.0 + i * xModifier;
  -    double y = Math.sin(i.toDouble());
  -    y = rand.nextDouble() * 2.0;
  -    double z = 1.0;
  -    geometry.vertices.add(new Vector3(x, y, z));
  -  }
  -
  -  var line = new Line(geometry, material);
  -  scene.add(line);
  -  
  -  geometry = new Geometry();
  -  for (int i = 0; i < numIterations; i++) {
  -    // start at -10, go to 10
  -    // 0 to 20
  -    double x = -10.0 + i * xModifier;
  -    double y = Math.sin(i.toDouble());
  -    y = 0.75 + rand.nextDouble() * 2.0;
  -    double z = 0.0;
  -    geometry.vertices.add(new Vector3(x, y, z));
  -  }
  -  
  -  line = new Line(geometry, material);
  -  scene.add(line);
   }
positive.code:   
    calculateLines();
    drawLineSegments();
    //drawTriangles();
    //drawLines();
    
    for (Vector2 intersectionPoint in intersectionPoints) {
      var material = new MeshBasicMaterial(color: 0x00ff00);
  
negative.code:         break;
        
        LineSegment line = Lines[i][counter];
        if (!hideTest) {
          geometry.vertices.add(new Vector3(line.start.x, line.start.y, 0.0));
          geometry.vertices.add(new Vector3(line.end.x, line.end.y, 0.0));
        } else {
          if (!line.hidden) {
            geometry.vertices.add(new Vector3(line.start.x, line.start.y, 0.0));
            geometry.vertices.add(new Vector3(line.end.x, line.end.y, 0.0));
          } else {
            var line = new Line(geometry, material);
            scene.add(line);
            geometry = new Geometry();
          } 
        }
        counter++;
      }
  