Skip to content

Instantly share code, notes, and snippets.

@hisasann
Created October 24, 2018 07:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hisasann/449353260e26399ce83c4fc6813ae316 to your computer and use it in GitHub Desktop.
Save hisasann/449353260e26399ce83c4fc6813ae316 to your computer and use it in GitHub Desktop.
RGBからHSVに変換するTypeScript
// https://lab.syncer.jp/Web/JavaScript/Snippet/66/
/**
* rgb から hsv に変換する
* @param {[number]} rgb
* @returns {[number]}
*/
const rgb2hsv = (rgb: [number, number, number]) => {
const r: number = rgb[0] / 255;
const g: number = rgb[1] / 255;
const b: number = rgb[2] / 255;
const max: number = Math.max(r, g, b);
const min: number = Math.min(r, g, b);
const diff: number = max - min;
let h: number = 0;
switch (min) {
case max:
h = 0;
break;
case r:
h = 60 * ((b - g) / diff) + 180;
break;
case g:
h = 60 * ((r - b) / diff) + 300;
break;
case b:
h = 60 * ((g - r) / diff) + 60;
break;
}
const s: number = max === 0 ? 0 : diff / max;
const v: number = max;
return [h, s, v] as [number, number, number];
};
export { rgb2hsv };
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment