色一覧の作成
プログラム概要
- このプログラムは色の gif 画像短冊を作成しそれを表示する HTML ファイルを作成するものです.
- このプログラムは,GMT,gnuplotおよびImageMagickに色一覧に対応するものです.
- フォントの gif 画像短冊は ImageMagick を用いて作成しています.
- ImageMagick コマンドの実行は Fortran プログラムの中で作成したバッチファイルを実行することで行っています.
- フォント名は gawk の関数 asort を用いて昇順に並べ替えてあります.
- Fortran プログラム実行用コマンドは以下のとおりです.
gfortran -o f90_COL_HTML.exe f90_COL_HTML.f90
f90_COL_HTML n c:\WANtaroHP_COL\col_inp_GPL.txt c:\WANtaroHP_COL\zesubGPLcol.html
f90_COL_HTML n c:\WANtaroHP_COL\col_inp_GMT.txt c:\WANtaroHP_COL\zesubGMTcol.html
f90_COL_HTML n c:\WANtaroHP_COL\col_inp_IMK.txt c:\WANtaroHP_COL\zesubIMKcol.html
上記コマンド中,引数 n は gif 画像を作成するためのフラグです.
この場合は,フォントの gif 画像短冊は作成されません.
もし y が入力されれば,Imagemagick は大量のフォントの gif 画像短冊を作成します.
ソースコードと関連文書
HTML 色一覧のため のawk スクリプト
HTML 色一覧に対しては,以下の awk スクリプトとデータが用いられています.awk スクリプト実行用バッチコマンドは以下のとおりです.
gawk -f awk_html_col.awk dat_html_col.txt > zesubHTMLcol.html
カレンダー
プログラム概要
- このプログラムは各月毎あるいは各年のカレンダーを表示する HTML ファイルを作成するものです.
- 用いた数学的なテクニックは,Zellerの公式による曜日の確定と閏年の判定です。関連する Web page の url を以下に示します.
- http://ja.wikipedia.org/wiki/ツェラーの公式
- http://en.wikipedia.org/wiki/Zeller%27s_congruence
- http://ja.wikipedia.org/wiki/閏年
- http://en.wikipedia.org/wiki/Leap_year
- 別途用意したファイルからの入力により,簡単な予定や実績のコメントを入力できます.
- html 文書の table の各要素(日付欄)は,ImageMagick で作成した画像を背景にしています.
実行用バッチファイル
01 | rem **************************
02 | rem Required files
03 | rem inp_2013_2nd_half.txt
04 | rem f90_CALDAT.f90
05 | rem f90_CALENDER.f90
06 | rem f90_CALSMALL.f90
07 | rem **************************
08 |
09 | gfortran -o f90_CALDAT.exe f90_CALDAT.f90
10 | f90_CALDAT 240 60 192 64 255 192
11 | rem f90_CALDAT 240 60 255 255 255 255
12 |
13 | gfortran -o f90_CALENDER.exe f90_CALENDER.f90
14 | f90_CALENDER 20130125 inp_2013_2nd_half.txt cal_201301.html
15 | f90_CALENDER 20130225 inp_2013_2nd_half.txt cal_201302.html
16 | f90_CALENDER 20130325 inp_2013_2nd_half.txt cal_201303.html
17 | f90_CALENDER 20130425 inp_2013_2nd_half.txt cal_201304.html
18 | f90_CALENDER 20130525 inp_2013_2nd_half.txt cal_201305.html
19 | f90_CALENDER 20130625 inp_2013_2nd_half.txt cal_201306.html
20 | f90_CALENDER 20130725 inp_2013_2nd_half.txt cal_201307.html
21 | f90_CALENDER 20130825 inp_2013_2nd_half.txt cal_201308.html
22 | f90_CALENDER 20130925 inp_2013_2nd_half.txt cal_201309.html
23 | f90_CALENDER 20131025 inp_2013_2nd_half.txt cal_201310.html
24 | f90_CALENDER 20131125 inp_2013_2nd_half.txt cal_201311.html
25 | f90_CALENDER 20131225 inp_2013_2nd_half.txt cal_201312.html
26 |
27 | gfortran -o f90_CALSMALL.exe f90_CALSMALL.f90
28 | f90_CALSMALL 2011 cal_all_2011.html
29 | f90_CALSMALL 2012 cal_all_2012.html
30 | f90_CALSMALL 2013 cal_all_2013.html
31 | f90_CALSMALL 2014 cal_all_2014.html
32 |
33 | del img1.png
34 | del img2.png
35 | del imgm.png
36 | del temp1.png
37 | del temp2.png
38 | del tempi.png
- 01-07
- コメント
- 09-10
- プログラムf90_CALDATのコンパイルと実行
- 13-25
- プログラムf90_CALENDERのコンパイルと実行
- 27-31
- プログラムf90_CALSMALLのコンパイルと実行
- 33-38
- 作業用ファイルの削除
f90_CALDATのコマンドライン引数
このプログラムはカレンダーの色を定義し,カレンダー表示のためのトップページ(html)を作成します.
f90_CALDAT Hmax Hmin Smax Smin Vmax Vmin
f90_CALDAT | 実行プログラム |
Hmax, Hmin | HSVカラーモデルにおける H の最大値と最小値 |
Smax, Smin | HSVカラーモデルにおける S の最大値と最小値 |
Vmax, Vmin | HSVカラーモデルにおける V の最大値と最小値 |
上記バッチファイルに示した事例では,前橋の月平均気温を以下のような関係で,HSVモデルに対応させている.
Temperature | Min. | ⇐ Middle ⇒ | Max. |
Hue | Max. | ⇐ Middle ⇒ | Min. |
Saturation | Min. | ⇐ Middle ⇒ | Max. |
Value | Min. | ⇐ Middle ⇒ | Max. |
データとして用いた前橋の月平均気温は,プログラム f90_CALDAT.f90 中の以下のコードで指定している.
real(4)::Te(1:12)=(/3.3,3.6,6.9,12.9,17.7,21.2,24.7,26.1,21.9,16.1,10.5,5.8/)
f90_CALENDERのコマンドライン引数
このプログラムは指定した月のカレンダー(html)を作成します.
f90_CALENDER yyyymmdd fnameR fnameW
f90_CALENDER | 実行プログラム |
yyyymmdd | 日付指定 (yyyy: 西暦, mm: 月, dd: 日) |
fnameR | コメント入力データファイル (テキストファイル) |
fnameW | 出力ファイル (htmlファイル) |
f90_CALSMALLのコマンドライン引数
このプログラムは,指定した年の全日のカレンダー(html)を作成します.
f90_CALSMALL | 実行プログラム |
yyyy | 西暦年指定 |
fnameW | 出力ファイル (htmlファイル) |
Source code by f90 and related documents
HSV カラーモデルによる色相環
プログラム概要
- このプログラムは,GMT により色相環図を出力するためのデータ作成用プログラムです.
- 色相 (H: hue) の決定は,こちらのサイト(http://homepage3.nifty.com/ishidate/vcpp_color/vcpp_color.htm)を参考に行っています.
- HSV から RGB への変換は,こちらのサイト(http://www.technotype.net/tutorial/tutorial.php?fileId={Image%20processing}§ionId={-converting-between-rgb-and-hsv-color-space})を参考に行っています.
Difinition of Hue |
Range of angle | R | G | B | Coloe name |
0/60 | max | min->max | min | Red->Yellow |
60/120 | max->min | max | min | Yellow->Lime |
120/180 | min | max | min->max | Green->Cyan |
180/240 | min | max->min | max | Cyan->Blue |
240/300 | min->max | min | max | Blue->Magenta |
300/360 | max | min | max->min | Magenta->Red |
Range of variables |
| R | G | B | H | S | V |
Max. | 255 | 255 | 255 | 359 | 255 | 255 |
Min. | 0 | 0 | 0 | 0 | 0 | 0 |
Kind | integer | integer | integer | integer | integer | integer |
R: red, G: green, B: blue |
H: hue, S: saturation, V: value |
実行用バッチファイル
gfortran -o f90_COLCIRC.exe f90_COLCIRC.f90
f90_COLCIRC 1 255 255 > bat_gmt_exe.bat
set fig=fig_gmt_colcirc1.eps
call bat_gmt_colcirc
f90_COLCIRC 1 128 255 > bat_gmt_exe.bat
set fig=fig_gmt_colcirc2.eps
call bat_gmt_colcirc
f90_COLCIRC 1 255 192 > bat_gmt_exe.bat
set fig=fig_gmt_colcirc3.eps
call bat_gmt_colcirc
f90_COLCIRC 1 128 192 > bat_gmt_exe.bat
set fig=fig_gmt_colcirc4.eps
call bat_gmt_colcirc
f90_COLCIRC 60 255 255 > bat_gmt_exe.bat
set fig=fig_gmt_colcirc0.eps
call bat_gmt_colcirc
del _*
実行用プログラム名は,f90_COLCIRC,コマンドライン引数の並びは,「H値の増分,S値,V値」および「出力ファイル名」(ここではファイル名 bat_gmt_exe.bat) です.
出力ファイルには,GMTで実行するバッチコマンドの一部が出力されます.
ソースコードと関連文書
多角形領域の内外判定
プログラム概要
- このプログラムは,指定した点が,予め定義した多角形領域に含まれるか否かを判定するためのものです.
- このプログラムの作成目的は,有限要素法の要素に対し,領域指定を行うことです.
入力データ事例
2 定義する領域の数
8 1つ目の領域を定義する座標点数
0.7 0.0 領域を指定する座標点の(x,y)座標
0.1 0.1 同上
0.0 0.7 同上
-0.1 0.1 同上 (作図事例中の青の十字を定義)
-0.7 0.0 同上
-0.1 -0.1 同上
0.0 -0.7 同上
0.1 -0.1 同上
8 2つ目の領域を定義する座標点数
0.50 0.50 領域を指定する座標点の(x,y)座標
0.05 0.00 同上
0.50 -0.50 同上
0.00 -0.05 同上 (作図事例中の緑のXを定義)
-0.50 -0.50 同上
-0.05 0.00 同上
-0.50 0.50 同上
0.00 0.05 同上
200000 内外判定を行う入力座標点数
-0.524425 -0.417869 判定を行う座標点の(x,y)座標
0.691628 -0.695583 以下,合計200,000個の(x,y)座標
0.171075 -0.613049 座標点範囲:(x,y)=(-1 / 1, -1 / 1)
・・・・・
実行用バッチファイル
gfortran -o f90_DOMAIN.exe f90_DOMAIN.f90
f90_DOMAIN inp_dom2.txt
rem *** GMT commands for drawing ***
set range=-1/1/-1/1
set paper=10/10
set inp0=_mat_00.txt
set inp1=_mat_01.txt
set inp2=_mat_02.txt
set fig=fig_gmt_dom2.eps
psxy %inp1% -R%range% -JX%paper% -SC0.01 -G0/0/255 -P -K > %fig%
psxy %inp2% -R -J -SC0.01 -G0/255/0 -O -K >> %fig%
psxy %inp0% -R -J -SC0.01 -G255/0/0 -O >> %fig%
実行結果作図事例
以下のルールに基づいて処理した結果を図化したものを示します.
- 後から領域定義したものが優先される.
- 領域境界線上の点はその領域に含まれる.ただし後からの定義が優先される.
- 領域境界点は時計回り・反時計回りいずれも可.境界が閉じる1点前までの座標を入力する.
入力は,上述入力データ事例に示したものです.
- 青十字と緑X字に含まれない領域は赤い点で表示しています.
- 判定を行った点数は20万個です.
- 乱数により -1 から 1 の範囲で (x,y) 座標を指定しました.
ソースコードと関連文書