package math;

/**
 * A Metric is a function that satisfies the following properties
 * for all a, b, c:
 *
 *     distance(a,b) >= 0
 *     distance(a,b) == 0 iff a == b
 *     distance(a,b) == distance(b,a)
 *     distance(a,b) <= distance(a,c) + distance(b,c) 
 *
 * (The last of these properties is called the triangle inequality.)
 *
 * @author  Prof. David Bernstein, James Madison University
 * @version 1.0
 */
public interface Metric
{
    /**
     * Calculate the distance between two n-dimensional points
     *
     * @param a   One n-dimensional point
     * @param b   Another n-dimensional point
     * @return    The distance
     */
    public abstract double distance(double[] a, double[] b);    
    
}
