UdonLibrary 1.0.0
機械システム研究部 C++ ライブラリ
読み取り中…
検索中…
一致する文字列を見つけられません
RGB.hpp
[詳解]
1//
2// RGB色空間
3//
4// Copyright (c) 2022-2024 udonrobo
5//
6
7#pragma once
8
9#include "Forward/RGB.hpp"
10#include "Forward/HSV.hpp"
11
12#ifdef _MSC_VER
13# pragma warning(push)
14# pragma warning(disable : 26495)
15#endif
16
19inline Udon::HSV::HSV(const RGB& rgb) noexcept
20 : HSV(rgb.toHSV())
21{
22}
23
24#ifdef _MSC_VER
25# pragma warning(pop)
26#endif
27
30inline Udon::HSV Udon::RGB::toHSV() const noexcept
31{
32 const ValueType max = std::max({ r, g, b });
33 const ValueType min = std::min({ r, g, b });
34 const ValueType d = max - min;
35 const ValueType s = max == 0 ? 0 : d * 255 / max;
36 const ValueType v = max;
37 if (d == 0)
38 {
39 return { 0, 0, v };
40 }
41 const ValueType h = [&]() -> ValueType
42 {
43 if (max == r)
44 {
45 return (g - b) * 42 / d + (g < b ? 255 : 0);
46 }
47 if (max == g)
48 {
49 return (b - r) * 42 / d + 85;
50 }
51 return (r - g) * 42 / d + 170;
52 }();
53 return { h, s, v };
54}
HSV色空間
Definition HSV.hpp:20
constexpr HSV() noexcept
デフォルトコンストラクタ
Definition HSV.hpp:35
RGB色空間
Definition RGB.hpp:21
uint8_t ValueType
要素の型
Definition RGB.hpp:24
ValueType r
赤成分
Definition RGB.hpp:27
ValueType g
緑成分
Definition RGB.hpp:30
HSV toHSV() const noexcept
HSV色空間に変換
Definition RGB.hpp:30
ValueType b
青成分
Definition RGB.hpp:33