Esempio n. 1
0
  private Record readTestRecord(final StreamTokenizer stok) throws IOException {
    final Record rec = new Record();
    final double[] vals;
    try {
      rec.poly1 = scanString(stok);
    } catch (final EOFException e) {
      return null;
    }
    rec.lineNumber = stok.lineno();
    rec.poly2 = scanString(stok);
    rec.X21.scan("[%s]", stok);
    rec.X12.invert(rec.X21);
    final Vector pairList = new Vector(10);
    String s;
    rec.minDist = Double.POSITIVE_INFINITY;

    while (true) {
      s = scanString(stok);
      if (s.equals("P")) rec.promote = true;
      else if (s.equals("D")) rec.maxPairDist = TokenScanner.scanDouble(stok);
      else break;
    }

    while (!s.equals("*")) {
      final ClosestPointPair pair = new ClosestPointPair();
      if (!s.equals("N")) {
        pair.feat1 = getDummyFeature(s, stok);
        pair.feat2 = getDummyFeature(scanString(stok), stok);
        final Point3dX p1 = new Point3dX();
        p1.scan("[%v]", stok);
        pair.pnt1.set(p1);
      }
      final Vector3dX dir = new Vector3dX();
      dir.scan("[%v]", stok);
      dir.normalize();
      pair.nrml.set(dir);
      pair.dist = TokenScanner.scanDouble(stok);

      if (!s.equals("N")) pair.pnt2.scaleAdd(pair.dist, pair.nrml, pair.pnt1);

      if (pair.dist < rec.minDist) {
        rec.minDist = pair.dist;
        rec.minNrml = new Vector3d(pair.nrml);
      }

      pairList.add(pair);
      s = scanString(stok);
    }
    rec.basePairs = (ClosestPointPair[]) pairList.toArray(new ClosestPointPair[0]);
    rec.testPairs = new ClosestPointPair[rec.basePairs.length];
    for (int i = 0; i < rec.testPairs.length; i++)
      rec.testPairs[i] = new ClosestPointPair(rec.basePairs[i]);
    return rec;
  }