class DerivateDistance extends AWeightedTrigometricDistance {

	@Override
	public double distance(final double[] a, final double[] b) {
		double[] derivateA = this.derivate.transform(a);
		double[] derivateB = this.derivate.transform(b);

		return this.getA() * this.timeSeriesDistance.distance(a, b) + this.getB() * this.baseDerivateDistance.distance(derivateA, derivateB);
	}

	public  DerivateDistance(final double alpha, final ADerivateFilter derivate, final IDistanceMetric timeSeriesDistance, final IDistanceMetric derivateDistance);
	public  DerivateDistance(final double alpha, final IDistanceMetric timeSeriesDistance, final IDistanceMetric derivateDistance);
	public  DerivateDistance(final double alpha, final ADerivateFilter derivate, final IDistanceMetric distance);
	public  DerivateDistance(final double alpha, final IDistanceMetric distance);

}