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
19
inline
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
30
inline
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.hpp
RGB.hpp
Udon::HSV
HSV色空間
Definition
HSV.hpp:20
Udon::HSV::HSV
constexpr HSV() noexcept
デフォルトコンストラクタ
Definition
HSV.hpp:35
Udon::RGB
RGB色空間
Definition
RGB.hpp:21
Udon::RGB::ValueType
uint8_t ValueType
要素の型
Definition
RGB.hpp:24
Udon::RGB::r
ValueType r
赤成分
Definition
RGB.hpp:27
Udon::RGB::g
ValueType g
緑成分
Definition
RGB.hpp:30
Udon::RGB::toHSV
HSV toHSV() const noexcept
HSV色空間に変換
Definition
RGB.hpp:30
Udon::RGB::b
ValueType b
青成分
Definition
RGB.hpp:33