コメントを残すさて、ちょっとした用件で色空間の変換をする事になりました。カラータイルを作成するプログラムを作成しました。大昔、それも学生の頃、何度か色空間の変換をするプログラムは書きました。Pascal、処理系も様々でしたが、一応動いていました。あまりに古いため手元にソースコードがあるか定かではありません。探して見つかるような生易しい環境ではないのです。仕方ないので、手元の書籍やネットで検索してアルゴリズムを拾ってきました。正規化されているものすら見当たりません。探し方に問題があったのかも知れませんが。計算すると言うのは正直無し線です。適当な整数でデータを保持して扱うように仕様を定めました。10ビットずつ使う事にしました。範囲を持てるわけです。ここから実際のプログラムを書くわけですが、チープな環境で掛け算、割り算、余りの計算を繰り返すとかなり処理が遅くなってしまうため、ビットシフトを使って掛け算や割り算を代替する手法をメインにしました。以下のようになります。環境依存のコードがありますが気にしないで下さい。型への変換オペレータとして実装しました。別名ですが)の派生クラスのようなものです。三つの引数からインスタンスを生成するコンストラクタがあります。コンポーネントを取得するメンバ関数です。上のサンプルプログラムは可読性のために若干冗長になっていますが、コンパイラが最適化するので問題ありません。5の値を取得しています。使用しますが、すぐ次の行でも使用しています。6倍)の範囲で引き算を行っています。