最終更新 2024/2/3
数値計算結果の画像化など
今まで、数値計算結果を数値表にして、gnuplotでグラフ描画をすることはやっていたのですが、
そのうちに、画像そのものを描きたい、と思うようになりました。
(画像を右クリックして "Open image in new tab" などを選択すると、拡大表示ができます。)
Windows 11 環境で、Borland C++ Compiler を使っています。
まず mspaint で「真っ白」な BMP ファイルを作成しておき(600*600、256 色ビットマップ)、
それを自作のプログラムで読み込みます。計算結果をカラーコードに変換して描画領域に書き込み、
その画像データを別名の BMP ファイルとして保存した後、mspaint <file> を実行します。
すると mspaint は、先ほど作成した画像を読み込んで表示します。
コンパイルをしたり作成したプログラムを起動するとき cmd を使うなら、ソースプログラムなどを置いている
ディレクトリを explorer で開き、アドレスバーの右端(文字がない所)を左クリックして cmd と入力し、
RETURN キーを押すと、cmd のカレントディレクトリーが、その場所になって便利です。
関数 x = fn(x) の繰り返し計算をするとして(x の値が次々と変わっていく)、それをどうやって
「2次元+色つき」のグラフにするか。
関数の戻り値を 0 <= x < 1.0 の範囲として、それを 10 段階に分けて、色を割り当てることにしました。
この場合、カラーコード(整数)= 10*x という関係になります。カラーコードと色の関係は:

0 は黒、1 は灰色、2 は少し薄い灰色、・・・ 9 は白です。
この Web ページの最初のグラフ画像は、座標の値 X*Y をスケーリングして (X*Y/262144)
カラーコードに変換し、プロットしたものです。
(0 <= X < 512, 0 <= Y < 512 です。オマケがついていますが、後述します。)
ソース プログラム chc.cpp
カナ漢字が文字化けするかもしれません。
ソース プログラム chc.cpp
クリックするとダウンロードされます。
コンパイルして作成した chc.exe は、コマンド アーギュメント を受け付けます。
c:前掲のカラーバー、そして 1, 2, 3, 4.
上記の画像は、"chc 2", "chc 3", "chc 4" を実行して png 形式に変換したものです。
その説明は、かなり長くなるので、「ざっと」に留めておきます。
"chc 1" は(この Web ページ最初の画像)、XY 座標の原点を画像の左下隅として、
注目する点の X, Y 座標の値を乗算し、さらにスケール係数を乗算した後、カラーコードに変換したものです。
上端のオマケは、8bit/pixel 全256色の mspaint 標準のカラーバー、
右端のオマケは、「ここで描画範囲は終わりです」という「縦の点線」です。
"chc 2" と "chc 3" には、一次元世界での「拡散」という考えが入っています。
画像下端で初期値を設定し、「朱に交われば赤くなる」という数値計算を逐次実行し、
その様子を画面の上端に向かって進めていったものです。 ・・2 と ・・3 は初期値が違うだけです。
"chc 4" は、仮想的な点を決めて、そこからの距離に応じて、カラーコードに変換して
プロットしたものです。まあ、練習。
"chc 5" は、平地に「憧れの都」が2か所あったとして、「そこに行きたい人が多い」 。
その場合、人口密度はどうなるだろうか。イイカゲンに計算してみました。
はははー。
今後は、RGB 24bit 画像とかも、作ってみようと思っています。
次のページへ