モジュール詳細:セル・ラボ
幸いなことに、モジュールは有糸分裂をしない。
このモジュールは多くのテキストを表示する。これは3つの多細胞生物のデータである。しかし、いくつかのデータが失われている。モジュールを解除するには、このデータを修正する。注: H、S、Vはそれぞれ一度だけ計算する必要がある。
下の3行のテキストは、R(赤)、G(緑)、B(青)の値を0~255の範囲で表示する。これらはHSVに変換する必要がある。
RGB から HSVへの変換
色相(H)を求めるには、まずその色相がどの範囲にあるかを知る必要がある。表中の+はRGB内で最も高いチャンネル、-は最も低いチャンネルを示す。同値がある場合は、表で当てはまるもののうち、読み順で最初にあるものを選ぶ(255, 255, 0は+0-にも0+-にもなるが、このルールにより+0-を選ぶ)。
+0- | 0+- | -+0 | -0+ | 0-+ | +-0 |
0–60 | 60–120 | 120–180 | 180–240 | 240–300 | 300–360 |
次に、以下の式を使って初期値 O を求める。最小値、最大値、およびその中間の値をそれぞれC-、 C+、 C*と表記する。
O = (C* - C-)/(C+ - C-) * 60
もし、現在の色が表の奇数番目にあった場合、表内の左の値に O を加える。そうでない場合、表内の右の値から O を引く。小数点以下を切り捨て、色相(H)を求める。
彩度(S)を求めるには、以下の式を使用し、小数点以下を切り捨てる。
S = (C+ - C-)/C+ * 100
明度(V)を求めるには、以下の計算式を使用し、小数点以下を切り捨てる。
V = C+/2.55
ゼロによる除算により計算が意味をなさない場合、その値を無視する。その値は今後使われることはない。
注: 通常のHSV変換器とは、小数点以下の処理が異なる。誤差の判定に関するエラーを避けるため、これらの使用は控えること。