package arida.ufc.br.moap.optics.functions;
import arida.ufc.br.moap.core.beans.Trajectory;
import arida.ufc.br.moap.function.api.IDistanceFunction;
public class ODDistanceFunction<S,T> implements IDistanceFunction<Trajectory<S,T >> {
private final IDistanceFunction<S> spatialFunction;
public ODDistanceFunction(IDistanceFunction<S> spatialFunction){
this.spatialFunction = spatialFunction;
}
@Override
public String getName() {
// TODO Auto-generated method stub
return "Origin-Destination distance function";
}
@Override
public Double evaluate(Trajectory<S, T> arg0, Trajectory<S, T> arg1) {
// TODO Auto-generated method stub
double d1 = this.spatialFunction.evaluate(arg0.getPoint(0),arg1.getPoint(0) );
double d2 = this.spatialFunction.evaluate(arg0.getPoint(arg0.getPointCount()-1),arg1.getPoint(arg1.getPointCount()-1) );
return (d1+d2)/2;
}
}