@Override public double minDist(SpatialComparable mbr1, SpatialComparable mbr2) { final int dim1 = mbr1.getDimensionality(), dim2 = mbr2.getDimensionality(); final int mindim = dim1 < dim2 ? dim1 : dim2; final NumberVector v1 = (mbr1 instanceof NumberVector) ? (NumberVector) mbr1 : null; final NumberVector v2 = (mbr2 instanceof NumberVector) ? (NumberVector) mbr2 : null; double agg = (v1 != null) // ? (v2 != null) ? preDistance(v1, v2, 0, mindim) : preDistanceVM(v1, mbr2, 0, mindim) // : (v2 != null) ? preDistanceVM(v2, mbr1, 0, mindim) : preDistanceMBR(mbr1, mbr2, 0, mindim); // first object has more dimensions. if(dim1 > mindim) { double b = (v1 != null) ? preNorm(v1, mindim, dim1) : preNormMBR(mbr1, mindim, dim1); agg = agg >= b ? agg : b; } // second object has more dimensions. if(dim2 > mindim) { double b = (v2 != null) ? preNorm(v2, mindim, dim2) : preNormMBR(mbr2, mindim, dim2); agg = agg >= b ? agg : b; } return agg; }
@Override public double distance(NumberVector v1, NumberVector v2) { final int dim1 = v1.getDimensionality(), dim2 = v2.getDimensionality(); final int mindim = dim1 < dim2 ? dim1 : dim2; double agg = preDistance(v1, v2, 0, mindim); if(dim1 > mindim) { double b = preNorm(v1, mindim, dim1); agg = agg >= b ? agg : b; } else if(dim2 > mindim) { double b = preNorm(v2, mindim, dim2); agg = agg >= b ? agg : b; } return agg; }
@Override public double norm(NumberVector v) { return preNorm(v, 0, v.getDimensionality()); }
@Override public double distance(NumberVector v1, NumberVector v2) { final int dim1 = v1.getDimensionality(), dim2 = v2.getDimensionality(); final int mindim = dim1 < dim2 ? dim1 : dim2; double agg = preDistance(v1, v2, 0, mindim); if(dim1 > mindim) { double b = preNorm(v1, mindim, dim1); agg = agg >= b ? agg : b; } else if(dim2 > mindim) { double b = preNorm(v2, mindim, dim2); agg = agg >= b ? agg : b; } return agg; }
@Override public double norm(NumberVector v) { return preNorm(v, 0, v.getDimensionality(), 0.); }
@Override public double minDist(SpatialComparable mbr1, SpatialComparable mbr2) { final int dim1 = mbr1.getDimensionality(), dim2 = mbr2.getDimensionality(); final int mindim = dim1 < dim2 ? dim1 : dim2; final NumberVector v1 = (mbr1 instanceof NumberVector) ? (NumberVector) mbr1 : null; final NumberVector v2 = (mbr2 instanceof NumberVector) ? (NumberVector) mbr2 : null; double agg = (v1 != null) // ? (v2 != null) ? preDistance(v1, v2, 0, mindim) : preDistanceVM(v1, mbr2, 0, mindim) // : (v2 != null) ? preDistanceVM(v2, mbr1, 0, mindim) : preDistanceMBR(mbr1, mbr2, 0, mindim); // first object has more dimensions. if(dim1 > mindim) { double b = (v1 != null) ? preNorm(v1, mindim, dim1) : preNormMBR(mbr1, mindim, dim1); agg = agg >= b ? agg : b; } // second object has more dimensions. if(dim2 > mindim) { double b = (v2 != null) ? preNorm(v2, mindim, dim2) : preNormMBR(mbr2, mindim, dim2); agg = agg >= b ? agg : b; } return agg; }
@Override public double distance(NumberVector v1, NumberVector v2) { final int dim1 = v1.getDimensionality(), dim2 = v2.getDimensionality(); final int mindim = (dim1 < dim2) ? dim1 : dim2; double agg = preDistance(v1, v2, 0, mindim, 0.); if(dim1 > mindim) { agg = preNorm(v1, mindim, dim1, agg); } else if(dim2 > mindim) { agg = preNorm(v2, mindim, dim2, agg); } return agg; }
@Override public double norm(NumberVector v) { return preNorm(v, 0, v.getDimensionality()); }
if(v1 != null) { if(v2 != null) { agg = preDistance(v1, v2, 0, mindim, agg); agg = preDistanceVM(v1, mbr2, 0, mindim, agg); agg = preDistanceVM(v2, mbr1, 0, mindim, agg); agg = preDistanceMBR(mbr1, mbr2, 0, mindim, agg); agg = preNorm(v1, mindim, dim1, agg); agg = preNormMBR(v1, mindim, dim1, agg); agg = preNorm(v2, mindim, dim2, agg); agg = preNormMBR(mbr2, mindim, dim2, agg);