・RGBをHSLへ変換する際、小数点が発生することがあります
・とりあえず四捨五入したのですが、
・HSLからRGBへ再変換すると、上記端数処理の関係で微妙に結果がズレることがあります
(そのため何度も繰り返し処理すると段々おかしなことになっていくと思います)
・相互変換する場合、矛盾が生じないよう端数処理するためにはどうすれば良いでしょうか?
・必ず四捨五入する、という決まりを設定するのでしょうか?
・それとも、RGBをHSLへ変換する際は四捨五入で、逆は切り捨てという設定をするのでしょうか?
・端数が伴う(RGBからHSL)変換処理後に、再度逆変換(HSLからRGB)する際、必ず元の値へ戻すにはどうすればよいでしょうか?
No.1ベストアンサー
- 回答日時:
> ・相互変換する場合、矛盾が生じないよう端数処理するためにはどうすれば良いでしょうか?
そんな都合のいい方法はありません。
前にも書きましたが、有限のコンピュータの世界で扱っている限り、避けられません。
どこまで誤差が許されるのか、どれだけの資源が使えるのか、等の条件に合せて、適切と思われる方法を使うだけです。
例えば。
> RGBをHSLへ変換する際は四捨五入
なぜ、誤差を増やす「四捨五入」をするのでしょうか?
計算するだけなら、計算で出た小数点以下の値をできるだけそのままにしておく方が、誤差は少なくなるはずです。
> ・端数が伴う(RGBからHSL)変換処理後に、再度逆変換(HSLからRGB)する際、必ず元の値へ戻すにはどうすればよいでしょうか?
普通「ただ元に戻すだけ」なんて処理はしません。
それなら最初から変更しなれけばいいのです。
・回答ありがとうございました
>そんな都合のいい方法はありません
>前にも書きましたが、有限のコンピュータの世界で扱っている限り、避けられません
・そうですよね
・もしかしたら何か良い方法があるのかと思ったのですが…
・大変参考になりました
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CPU・メモリ・マザーボード パソコンに詳しい方、ご教授戴けましたなら 非常に助かります。 アドレサブルRGB(ARGB)端子の無 1 2022/10/13 18:03
- 環境学・エコロジー メタン 100 g を使って、コンバインドサイクル発電を行ったところ、34キロワット (34,000 2 2023/01/22 14:00
- Visual Basic(VBA) エクセル VBA 条件付き書式 簡略化したい 2 2022/06/02 17:46
- その他(ソフトウェア) CMYKのペイントソフトを探しています。 RGBで描いてCMYKに変換するものではなく、CMYKで描 2 2022/09/05 15:48
- Visual Basic(VBA) ダブルクリックでセルの色を変える 1 2022/12/24 15:52
- 統計学 教えてください! あるくじ引きには5枚に1枚の割合でアタリが入っていると宣伝しているが、実際には20 7 2023/05/29 09:10
- 統計学 統計学の問題です。教えてください(_ _) 数万人の有権者がいる選挙区で, 無作為に400人の標本を 2 2023/02/03 15:27
- Visual Basic(VBA) VBAの繰り返し処理について教えてください。 3 2022/08/02 13:21
- Excel(エクセル) Excel VBA 空白行があるセル範囲に色を付ける 3 2022/06/13 15:58
- Excel(エクセル) 計算結果を1の位で四捨五入 1 2022/11/12 17:33
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
16進をASCIIコードに変換する...
-
StretchBltを使ったミラーリング
-
sscanfの16進出力の逆処理
-
C#でListとDictionaryの判別方法
-
ウェブ内容をshift-jis変換する...
-
VB6.0の「vbFromUnicode」はVB....
-
VB.NETで1→A、2→B、26→Z、27→AA...
-
C++ 文字列変数と16進数の比較
-
WORD型をCString型に変換する方法
-
VBA、nullをemptyに変換
-
n進数の値を10進数の値に変換す...
-
【ExcelVBA】値を変更しながら...
-
VBA 変数名に変数を使用したい。
-
他のMDBのテーブルに追加したい
-
Dir関数で読み取り順を操作でき...
-
エクセルのテーブルを解除する...
-
Excel複数シートをaccessへ一括...
-
vba フィルター 複数条件 3つ以...
-
グラフの「項目軸ラベルに使用...
-
Redim とEraseの違いは?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB.NETで1→A、2→B、26→Z、27→AA...
-
VB6.0の「vbFromUnicode」はVB....
-
16進をASCIIコードに変換する...
-
バイト型のデータをLong型に変換
-
16進コード文字列を文字列に変換
-
【C++/CLI】int型からString型...
-
C++ 文字列変数と16進数の比較
-
vb6の桁数指定
-
2の補数の計算について
-
VBAのstrConv関数のUNICODE変換...
-
WORD型をCString型に変換する方法
-
VB6.0 String型→Long型変換方法...
-
数字→漢数字変換
-
C#でListとDictionaryの判別方法
-
文字型を日付/時刻型に変換する...
-
textbox.textやlabel.captionの...
-
Boolean型変数の値を反転する方法
-
エクセルでメールヘッダーを解...
-
2進数から10進数へ変換
-
対数変換のついて
おすすめ情報