# d3-color-difference

See this Observable notebook for a demonstration.

## Installing

`$ npm install d3-color-difference`

## API Reference

### Euclidean Distances

# d3.**differenceEuclideanRGB**(*a*, *b*) <>

Computes the Euclidean distance between the colors *a* and *b* in the RGB color space.

# d3.**differenceEuclideanLab**(*a*, *b*) <>

Computes the Euclidean distance between the colors *a* and *b* in the Lab color space.

# d3.**differenceEuclideanHcl**(*a*, *b*) <>

Computes the Euclidean distance between the colors *a* and *b* in the HCL color space.

# d3.**differenceEuclideanHsl**(*a*, *b*) <>

Computes the Euclidean distance between the colors *a* and *b* in the HSL color space.

# d3.**differenceEuclideanCubehelix**(*a*, *b*) <>

Computes the Euclidean distance between the colors *a* and *b* in the Cubehelix color space.

### CIE Delta-E

Computes the CIE76 ΔE*_{ab} color difference between the colors *a* and *b*. The computation is done in the Lab color space and it is analogous to differenceEuclideanLab.

Computes the CIE94 ΔE*_{94} color difference between the colors *a* and *b*. The computation is done in the Lab color space, with the default weights *kL = 1*, *K1 = 0.045*, and *K2 = 0.015*.

# d3.**differenceCie94Weighted**(*kL*, *K1*, *K2*) <>

Returns a CIE94 difference function with custom weighting parameters.

# d3.**differenceCiede2000**(*a*, *b*) <>

Computes the CIEDE2000 ΔE*_{00} color difference between the colors *a* and *b* as implemented by G. Sharma. The computation is done in the Lab color space, with the default weights *kL = kC = kH = 1*.

# d3.**differenceCiede2000Weighted**(*kL*, *kC*, *kH*) <>

Returns a CIEDE2000 difference function with custom weighting parameters.

Computes the CMC l:c (1984) ΔE*_{CMC} color difference between the colors *a* and *b*. The computation is done in the Lab color space with the default weights *l = c = 1*.

*Note:* ΔE*_{CMC} is not considered a metric since it's not symmetrical, i.e. the distance from *a* to *b* is not always equal to the distance from *b* to *a*.

# d3.**differenceCmcWeighted**(*l*, *c*) <>

Returns a CMC l:c (1984) difference function with custom weighting parameters.

# d3.**differenceDin99o**(*a*, *b*) <>

Computes the DIN99o ΔE*_{99o} color difference between the colors *a* and *b*. The computation is done in the DIN99o color space with the default weights *kCH = kE = 1*.

# d3.**differenceDin99oWeighted**(*kCH*, *kE*) <>

Returns a DIN99o difference function with custom weighting parameters.

### Opacity

# d3.**differenceWithOpacity**(*differenceFunction*, *a*, *b*) <>

The difference functions don't take the colors' alpha channel into account when computing distances. This method allows you to factor the colors' opacities into the distance.