戻る|進む
DCL:ごくらくDCL:おまかせ二次元図
 
6.4 トーン付き等高線とベクトル場の重ね書き
     
最後にトーン付の等高線図とベクトル場を重ね書きした例を示します(u2d4).  ugvect, udcntr, uetone のメソッド(元サブルーチン)を順     
に呼んでいます. ここでは, uestlvルーチンでトーンをつけるレベルと     
パターンを指定しています.      
     
     
     
- NumRu::DCL.uestlv(tlev1,tlev2,ipat) [トーンを塗り分けるレベルと     
                                      パターンの設定]         
     
| tlev1 | (実数型) | 塗り分けるレベルの下限値. |  | tlev2 | (実数型) | 塗り分けるレベルの上限値. |  | ipat | (整数型) | トーンパターン番号. |  
 
      
 
- トーンパターン番号 [3桁の整数 ijk]     
       
     
| i | パターンの種類. 0:ドット, 1:横線, 2:斜線(右上がり),      
3:縦線, 4:斜線(左上がり), 5:格子(縦横), 6:格子(斜め). |  | j | ドットの大きさや斜線の太さ.      
0から5まで値が大きくなるにつれて, ドットは大きく, 線は太くなる. |  | k | ドットや斜線の密度.     
0から5まで値が大きくなるにつれて, 密度が高くなる. |  
 
 
    
 
# u2d4.rb
require "narray"
require "numru/dcl"
include NumRu
include NMath
nx = 21
ny = 21
xmin = -10.0
xmax = 10.0
ymin = -10.0
ymax = 10.0
kmax = 5
pmin = 0.0
pmax = 1.0
dx = (xmax-xmin)/(nx-1)
dy = (ymax-ymin)/(ny-1)
dp = (pmax-pmin)/kmax
u = NArray.sfloat(nx, ny)
v = NArray.sfloat(nx, ny)
p = NArray.sfloat(nx, ny)
#-- data ----
xi = xmin + NArray.sfloat(nx).indgen! * dx
yj = ymin + NArray.sfloat(ny).indgen! * dy
for j in 0..ny-1; u[true,j] = xi; end
for i in 0..nx-1; v[i,true] = -yj; end
p = exp(-xi.reshape(nx,1)**2/64 - yj.reshape(1,ny)**2/25)
#-- graph ----
iws = (ARGV[0] || (puts ' WORKSTATION ID (I)  ? ;'; DCL::sgpwsn; gets)).to_i
DCL::gropn iws
DCL::sglset('LSOFTF', true)
DCL::grfrm
DCL::grswnd(xmin, xmax, ymin, ymax)
DCL::uspfit
DCL::grstrf
DCL::usdaxs
DCL::ugvect(u, v)
DCL::udcntr(p)
for k in 0..kmax-1
  tlev1 = k*dp
  tlev2 = tlev1 + dp
  ipat  = 600 + k
  DCL::uestlv(tlev1, tlev2, ipat)
end
DCL::uetone(p)
DCL::grcls
     
program u2d4         
     
     
     
 u2d4.rb: frame1
     
     
u2d4.rb: frame1     
     
      
     
     
戻る|進む
     
DCL:ごくらくDCL:おまかせ二次元図