private void drawLines() {

    for (int i = 0; i < inter.size(); i++) {
      ii = inter.get(i);
      a = lines.get(i * 2);
      b = lines.get(i * 2 + 1);

      if (ii != null) {
        UMB.pnoFill().pstroke(p.color(255, 255, 0)).pline(a, ii);
        UMB.pstroke(p.color(255, 0, 128)).pline(b, ii);
        p.text(ii.str(), ii.x, 20);
        UMB.ppush().ptranslate(ii);
        p.box(10);
        p.box(1);
        UMB.ppop();

        UMB.ppush().ptranslate(b);
        p.box(5);
        UMB.ppop();

      } else UMB.pstroke(0xffff0000).pline(a, b);
    }
  }
  public void draw() {

    p.translate(p.width / 2, p.height / 2);
    p.lights();
    main.nav.doTransforms();

    p.stroke(255);
    //    UMB.ppush().protX(HALF_PI).prect(1000,1000).ppop();
    p.noFill();

    if (f != null) {
      UMB.ppush();
      f.draw().drawNormal(100);
      //      f.pline(f.getV()[0], f.centroid());
      //      f.pline(f.getV()[1], f.centroid());
      //      f.pline(f.getV()[2], f.centroid());
      UMB.ppop();
    }

    if (fv != null) {
      int cnt = 0;
      for (UVertex vv : fv)
        if (vv != null) {
          UMB.pstroke(p.color(255, (cnt++) % 2 * 255, 0));
          UMB.pline(vv, new UVertex());

          UMB.ppush().pstroke(0xffffffff).pfill(0xffff000).pellipse(vv, R, R).ppop();
        }
    }

    plane.draw();
    if (lines != null) drawLines();
    else {

    }
  }