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 | 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 5x 5x 5x 5x 5x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 240285x 240285x 240285x 240285x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 5x 5x 5x 5x 5x 5x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 5x 5x 5x 5x 5x 5x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 5x 5x 2x 2x 2x 2x 2x 2x 2x 2x 625388x 625388x 2x 2x 2x 2x 2x 10x 10x 10x 2x 2x 2x 2x 2x 10x 10x 10x | 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 } |