private void checkVclipResults( final Record rec, final Vector3d offset, final DistanceReport rep, final double retDist, final FeaturePair fpair) { for (int i = 0; i < rec.testPairs.length; i++) { rec.testPairs[i].pnt2.add(rec.basePairs[i].pnt2, offset); rec.testPairs[i].dist = rec.basePairs[i].dist + offset.dot(rec.minNrml); } if (rep.getClosestDistance() != retDist) { final String msg = "dist returned=" + retDist + " closestDistance=" + rep.getClosestDistance(); printError(msg, rec, rep, fpair); } if (rep.numClosePairs() == 0) { final ClosestPointPair cpair = rep.getClosestPair(); boolean expectedCollision = false; for (final ClosestPointPair testPair : rec.testPairs) if (testPair.dist <= 0) { expectedCollision = true; break; } if (expectedCollision) { if (cpair.dist > 0) printError("Expected collision", rec, rep, fpair); } else if (rec.testPairs.length != 1 || !matchPair(rep.getClosestPair(), rec.testPairs[0])) printError(null, rec, rep, fpair); } else { final int n = rep.numClosePairs(); if (n != rec.testPairs.length) printError(null, rec, rep, fpair); final ClosestPointPair[] pairs = new ClosestPointPair[n]; for (int i = 0; i < n; i++) pairs[i] = rep.getClosePairs()[i]; for (int i = 0; i < n; i++) { int j; for (j = 0; j < n; j++) if (pairs[j] != null && matchPair(rec.testPairs[i], pairs[j])) { pairs[j] = null; break; } if (j == n) printError(null, rec, rep, fpair); } } }
private void printError( final String msg, final Record rec, final DistanceReport rep, final FeaturePair fpair) { System.out.println("Error, line " + rec.lineNumber); if (msg != null) System.out.println(msg); System.out.println("Wanted:"); for (final ClosestPointPair testPair : rec.testPairs) System.out.println(pairToStr(testPair)); System.out.println("Got:"); if (rep.numClosePairs() > 0) { final ClosestPointPair[] pairs = rep.getClosePairs(); for (int i = 0; i < rep.numClosePairs(); i++) System.out.println(pairToStr(pairs[i])); } else System.out.println(pairToStr(rep.getClosestPair())); System.out.println("Initial Features: " + fpair.first.getName() + " " + fpair.second.getName()); System.exit(1); }
private void printResults(final DistanceReport rep, final FeaturePair fpair) { final Vector3dX del = new Vector3dX(); final ClosestPointPair cpp = rep.getClosestPair(); del.sub(cpp.pnt2, cpp.pnt1); System.out.println("Initial Features: " + fpair.first.getName() + " " + fpair.second.getName()); System.out.println("dist=" + rep.getClosestDistance()); System.out.println("del=" + del); System.out.println("pnt1_1=" + cpp.pnt1); System.out.println("pnt2_1=" + cpp.pnt2); System.out.println("nrml_1=" + cpp.nrml); if (cpp.feat1 != null) System.out.println("feature1=" + cpp.feat1.getClass().getName() + " " + cpp.feat1.name); else System.out.println("feature1=null"); if (cpp.feat2 != null) System.out.println("feature2=" + cpp.feat2.getClass().getName() + " " + cpp.feat2.name); else System.out.println("feature2=null"); }