Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 3x 3x 3x 3x 3x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 7x 7x 7x 7x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 3x 3x 3x 3x 3x 3x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 3x 3x 3x 3x 3x 3x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 3x 3x 1x 1x 1x 1x 1x 1x 1x 1x 12x 12x 1x 1x 1x 1x 1x 6x 6x 6x 1x 1x 1x 1x 1x 6x 6x 6x | import { ciede2000 } from './color-ciede2000-diff.js'
import { rgbToLab } from './color-convert.js'
const { sqrt } = Math
/**
*
* @param {number} r1 - rgb 1 red value
* @param {number} g1 - rgb 1 green value
* @param {number} b1 - rgb 1 blue value
* @param {number} r2 - rgb 2 red value
* @param {number} g2 - rgb 2 green value
* @param {number} b2 - rgb 2 blue value
* @returns {number} RGB distance value
*/
export function distRGB (r1, g1, b1, r2, g2, b2) {
const dr = r1 - r2
const dg = g1 - g2
const db = b1 - b2
return sqrt(dr * dr + dg * dg + db * db)
}
/**
*
* @param {number} r1 - rgb 1 red value
* @param {number} g1 - rgb 1 green value
* @param {number} b1 - rgb 1 blue value
* @param {number} r2 - rgb 2 red value
* @param {number} g2 - rgb 2 green value
* @param {number} b2 - rgb 2 blue value
* @returns {number} CIEDE2000 distance value
*/
export function distCIEDE2000 (r1, g1, b1, r2, g2, b2) {
const c1 = rgbToLab({ R: r1, G: g1, B: b1 })
const c2 = rgbToLab({ R: r2, G: g2, B: b2 })
return ciede2000(c1, c2)
}
/**
*
* @param {number} r1 - rgb 1 red value
* @param {number} g1 - rgb 1 green value
* @param {number} b1 - rgb 1 blue value
* @param {number} r2 - rgb 2 red value
* @param {number} g2 - rgb 2 green value
* @param {number} b2 - rgb 2 blue value
* @returns {number} RieRGB distance value
*/
export function distRieRGB (r1, g1, b1, r2, g2, b2) {
const mr = (r1 + r2) / 2
const dr = r1 - r2
const dg = g1 - g2
const db = b1 - b2
return sqrt((2 + mr / 256) * dr * dr + 4 * dg * dg + (2 + (255 - mr) / 256) * db * db)
}
/**
*
* @param {number} r1 - rgb 1 red value
* @param {number} g1 - rgb 1 green value
* @param {number} b1 - rgb 1 blue value
* @param {number} r2 - rgb 2 red value
* @param {number} g2 - rgb 2 green value
* @param {number} b2 - rgb 2 blue value
* @returns {number} YIQ distance value
*/
export function distYIQ (r1, g1, b1, r2, g2, b2) {
const y = rgb2y(r1, g1, b1) - rgb2y(r2, g2, b2)
const i = rgb2i(r1, g1, b1) - rgb2i(r2, g2, b2)
const q = rgb2q(r1, g1, b1) - rgb2q(r2, g2, b2)
return sqrt(y * y * 0.5053 + i * i * 0.299 + q * q * 0.1957)
}
/**
* @param {number} r1 - rgb 1 red value
* @param {number} g1 - rgb 1 green value
* @param {number} b1 - rgb 1 blue value
* @param {number} r2 - rgb 2 red value
* @param {number} g2 - rgb 2 green value
* @param {number} b2 - rgb 2 blue value
* @returns {number} YIQ delta value
*/
export function distYIQBrightness (r1, g1, b1, r2, g2, b2) {
return rgb2y(r1, g1, b1) - rgb2y(r2, g2, b2)
}
/**
* @param {number} r - rgb red value
* @param {number} g - rgb green value
* @param {number} b - rgb blue value
* @returns {number} brightness value
*/
export function rgb2y (r, g, b) {
return r * 0.29889531 + g * 0.58662247 + b * 0.11448223
}
/**
* @param {number} r - rgb red value
* @param {number} g - rgb green value
* @param {number} b - rgb blue value
*/
function rgb2i (r, g, b) {
return r * 0.59597799 - g * 0.27417610 - b * 0.32180189
}
/**
* @param {number} r - rgb red value
* @param {number} g - rgb green value
* @param {number} b - rgb blue value
*/
function rgb2q (r, g, b) {
return r * 0.21147017 - g * 0.52261711 + b * 0.31114694
}
|