[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 宇治市五ヶ庄