1. ホーム
  2. c++

[解決済み] HSBとHSLとHSVの比較

2022-03-03 16:12:10

質問事項

私は、c++で非常に基本的なグラフィックスAPIの一部として、Colorクラスを作成しています。そこで、Microsoftの.NETフレームワークを調べてみたところ、ColorクラスにHSB用の関数があることに気づきました。

そこで、HSB、HSL、HSVのどれを提供すべきか、あるいはそれらすべてをクラスで提供すべきかを決定するために調査を開始しました。

そこで、HSB、HSL、HSVについて3つの質問をさせていただきます。

  1. HSBはHSLと同じですか?

  2. もしそうでないなら、なぜHSBLやHSBLVも存在しないのでしょうか?

  3. これらの値を計算する様々な方法がありますが、どなたか一番早い方法を教えてください。

どのように解決するのですか?

<ブロッククオート

HSBはHSLと同じですか?

いいえ、HSBはHSVと同じですが、HSLは別物です。いずれもRGBの色を表現するための親しみやすい方法として使われています。WikipediaのHSLとHSVの記事には、色票を使ってその違いが説明されています。 HSLとHSV 基本的にHSBとHSLでは、色相は同じですが、彩度の取り方が異なり、明度、明度も異なります。

<ブロッククオート

そうでないなら、なぜHSBL、あるいはHSBLVがないのでしょうか?

意味がわからない。HSB/HSVもHSLもRGBのどの色も表現できる。BとLを独立させることは、その定義の仕方からして不可能です。HSBの明るさと彩度は、固定された明るさに関連付けられています。実際、これらの間の変換は非常に簡単です。

<ブロッククオート

これらの値を計算する様々な方法がありますが、どなたか最も早い方法を教えてください。

RGBからHSBを算出する方法については、こちらにも似たような質問があります。 高速、最適化、正確なRGB <-> HSB変換コード(C言語版 そこにJavaの実装があるので、参考になるかもしれません。HSB/HSVとHSL間の変換については、以下を参照してください。 HSLとHSBとHSVの比較