フルカラーのマンデルブロ集合の描画

「プログラミング言語Go」の練習問題3.5である、フルカラーの マンデルブロ集合(Mandelbrot set) を描画するプログラムを作成しました。元のプログラムで使われているcolor.Gray同様、color.RGBA型も引数がuint8なので、uint8型のインデックスでループをしています。

ここで、元のプログラムのmandelbrot関数の部分を見てみてください。

ループの数値を見るとわかるように、255 - contrast*nの部分がオーバーフローしています。しかし、uint8に収まらない上位ビットは自動的に破棄されますので、何の処理をする必要もなく、color.Grayの色は白から黒に変化した後、また白から黒へと変化します。
今回作成したプログラムでは、フルカラーを使っていますので、オーバーフローは発生していません。

参考文献

  • 「プログラミング言語Go」 Alan A.A. Donovan (著),‎ Brian W. Kernighan (著),‎ 柴田 芳樹 (翻訳)