[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dennou-ruby:000988] DCL color maps, uetonc
堀之内です。
最近 ruby で DCL を使ってて、こうなるといいなあと思ったことです。
● color map の取り替えを容易に
現在 color map はデフォルトの colormap.x11 しか dcldbase ディレ
クトリーにインストールされませんが、dcl の配布パッケージ中には、
それ以外に幾つか埋もれているようです(findかけるとなんか出てきま
す)。これらを $prefix/dcldbase にインストールされるようにして頂
きたいと思います。demo/rakuraku 中に colormap2.x11,
colormap2.x11,.. というファイルがありますが、このように番号をつ
けて整理するといいと思います。こうすると、「何番のカラーマップを
使う」という表現(認識)ができて便利です。ついでに、各カラーマッ
プについて、一言そのポリシーのコメントがあればなおよしです。デフォ
ルトは「虹(もどき)」、1番はグレースケール、2番はパステル調、と
か。
今、カラーマップは sgopn の時に決められ、その後変更できないよう
ですが、対話的に使っているとカラーマップを取り替えて見てみたい、
ということがあります。途中でカラーマップを変更するサブルーチンが
欲しいです。そうすると既に書いた図の色も変ってしまうでしょうが、
それでも取り替えるという選択肢が欲しいです。そのためだけに grcls
& gropn するのは嬉しくないので。
● uetonc
ドキュメントがないので知る人ぞ知るモザイク描画ですね。この欠損値
処理がちゃんと出来てません。uetonf と比べて頂ければお分かりと思
いますが、色塗りのレベルの決定には欠損値が考慮されているのに、最
後に色番号を割り当てるときに欠損値を考慮し忘れています。このため、
欠損部分に色が付くことがあります。
uetonc.f:
67: IF (UX .EQ. RUNDEF) THEN
68: IMAGE(I) = 0
69: ELSE
70: IX = IUWGX(UX)
71: IY = IUWGY(UY)
72: IF (IX.EQ.IUNDEF .OR. IY.EQ.IUNDEF) THEN
73: IMAGE(I) = 0
74: ELSE
75: ZZ = Z(IX, IY)
76: IMAGE(I) = IUETON(ZZ)/1000
77: END IF
78: END IF
uetonf.f:
69: IF (UX.EQ.RUNDEF) THEN
70: IMAGE(I) = 0
71: ELSE
72: CALL UWQGXI(UX,IX,FX)
73: CALL UWQGYI(UY,IY,FY)
74: IF (IX.EQ.IUNDEF .OR. IY.EQ.IUNDEF) THEN
75: IMAGE(I) = 0
76: ELSE
77: IF (LMISS .AND.
78: + (Z(IX , IY ).EQ.RMISS .OR.
79: + Z(IX+1, IY ).EQ.RMISS .OR.
80: + Z(IX , IY+1).EQ.RMISS .OR.
81: + Z(IX+1, IY+1).EQ.RMISS) ) THEN
82: IMAGE(I) = 0
83: ELSE
84: ZZ = (Z(IX, IY )*(1-FX) + Z(IX+1,IY )*FX)*(1-FY)
85: + + (Z(IX, IY+1)*(1-FX) + Z(IX+1,IY+1)*FX)*FY
86: IMAGE(I) = IUETON(ZZ)/1000
87: END IF
88: END IF
89: END IF
もうひとつ気になるのが、描画範囲です。端のモザイクの幅が常に半分
になるようになってます。つまり下のようななブロックに色が塗られる
ようになってます。
_____________________
|_|___|___|___|___|_|
| | | | | | |
|_|___|___|___|___|_|
| | | | | | |
|_|___|___|___|___|_|
|_|___|___|___|___|_|
そうでなく、出来れば下のようになってくれると嬉しいです(あるいは、
パラメターでどちらか選べるようになるとか)。
_______________________
| | | | | | |
|___|___|___|___|___|___|
| | | | | | |
|___|___|___|___|___|___|
| | | | | | |
|___|___|___|___|___|___|
| | | | | | |
|___|___|___|___|___|___|
以上、パッチでなく単なる報告ですみません。
堀之内 武 horinout@xxxxxx
京都大学宙空電波科学研究センター 611-0011 宇治市五ヶ庄