List<Double> A = lists.remove(i); List<Double> B = lists.remove(i); lists.add(i, joinLists(A, B, epsilon));
List<Double> A = lists.remove(i); List<Double> B = lists.remove(i); lists.add(i, joinLists(A, B, epsilon));
@Test public void testJoiningWithSingleton () { List<Double> base = Arrays.asList(0.0, 1.0, 2.0, 3.0, 4.0); Assert.assertEquals(Arrays.asList(-1.0, 0.0, 1.0, 2.0, 3.0, 4.0), ListUtilities.joinLists(base, Arrays.asList(-1.0), EPSILON)); Assert.assertEquals(base, ListUtilities.joinLists(base, Arrays.asList(0.0), EPSILON)); Assert.assertEquals(base, ListUtilities.joinLists(base, Arrays.asList(1.0), EPSILON)); Assert.assertEquals(base, ListUtilities.joinLists(base, Arrays.asList(2.0), EPSILON)); Assert.assertEquals(Arrays.asList(0.0, 1.0, 2.0, 2.5, 3.0, 4.0), ListUtilities.joinLists(base, Arrays.asList(2.5), EPSILON)); Assert.assertEquals(base, ListUtilities.joinLists(base, Arrays.asList(3.0), EPSILON)); Assert.assertEquals(base, ListUtilities.joinLists(base, Arrays.asList(4.0), EPSILON)); Assert.assertEquals(Arrays.asList(0.0, 1.0, 2.0, 3.0, 4.0, 5.0), ListUtilities.joinLists(base, Arrays.asList(5.0), EPSILON)); }
@Test public void testJoiningWithZerosList () { List<Double> base = Arrays.asList(0.0, 1.0, 2.0, 3.0, 4.0); Assert.assertEquals(base, ListUtilities.joinLists(base, Arrays.asList(0.0, 0.0, 0.0, 0.0, 0.0), EPSILON)); } }
protected Track weightedAverageWithDirection (Track them, double ourWeight, double theirWeight) { double theirRelWeight = theirWeight/(ourWeight+theirWeight); // Get all parameterization points List<Double> ourParameterization = getParameterization(); List<Double> theirParameterization = them.getParameterization(); List<Double> joinedParameterization = ListUtilities.joinLists(ourParameterization, theirParameterization, _parameters.getPrecision()); // Average the tracks along each parameterization point List<Position> meanPath = new ArrayList<Position>(); for (double d: joinedParameterization) { Position pUs = getLengthParamterizedPoint(d); Position pThem = them.getLengthParamterizedPoint(d); Position weightedMean = interpolate(pUs, pThem, theirRelWeight); meanPath.add(weightedMean); } return createTrack(meanPath); }
protected Track weightedAverageWithDirection (Track them, double ourWeight, double theirWeight) { double theirRelWeight = theirWeight/(ourWeight+theirWeight); // Get all parameterization points List<Double> ourParameterization = getParameterization(); List<Double> theirParameterization = them.getParameterization(); List<Double> joinedParameterization = ListUtilities.joinLists(ourParameterization, theirParameterization, _parameters.getPrecision()); // Average the tracks along each parameterization point List<Position> meanPath = new ArrayList<Position>(); for (double d: joinedParameterization) { Position pUs = getLengthParamterizedPoint(d); Position pThem = them.getLengthParamterizedPoint(d); Position weightedMean = interpolate(pUs, pThem, theirRelWeight); meanPath.add(weightedMean); } return createTrack(meanPath); }
private double getDistanceWithDirection (Track them) { List<Double> ourParameterization = getParameterization(); List<Double> theirParameterization = them.getParameterization(); List<Double> joinedParameterization = ListUtilities.joinLists(ourParameterization, theirParameterization, _parameters.getPrecision()); Position pALast = null; Position pBLast = null; double dLast = 0; double totalDistance = 0.0; for (double d : joinedParameterization) { Position pA = getLengthParamterizedPoint(d); Position pB = them.getLengthParamterizedPoint(d); if (null != pALast) { double startDistance = getSegmentDistance(pALast, pBLast); double endDistance = getSegmentDistance(pA, pB); totalDistance += (startDistance + endDistance) / 2 * (d - dLast); } dLast = d; pALast = pA; pBLast = pB; } return totalDistance / ((_length + them._length) / 2.0); }
private double getDistanceWithDirection (Track them) { List<Double> ourParameterization = getParameterization(); List<Double> theirParameterization = them.getParameterization(); List<Double> joinedParameterization = ListUtilities.joinLists(ourParameterization, theirParameterization, _parameters.getPrecision()); Position pALast = null; Position pBLast = null; double dLast = 0; double totalDistance = 0.0; for (double d : joinedParameterization) { Position pA = getLengthParamterizedPoint(d); Position pB = them.getLengthParamterizedPoint(d); if (null != pALast) { double startDistance = getSegmentDistance(pALast, pBLast); double endDistance = getSegmentDistance(pA, pB); totalDistance += (startDistance + endDistance) / 2 * (d - dLast); } dLast = d; pALast = pA; pBLast = pB; } return totalDistance / ((_length + them._length) / 2.0); }