標準装備の描画関数の使い方
ここでは
カスタマイズ用ファイルを使用せずに、標準装備の描画関数をそのまま使う方法について解説します。
2D描画関数
・
曲線:plg
・
等高線:plc
・
塗りつぶし等高線:plfc
・
ベクトル図:plv
・
多数の線分を描く:pldj
など(追加予定)
3D描画関数
・
簡易曲面:plwf
・
ポリゴン曲面:pl3surf
・
複数のポリゴン曲面:pl3tree
・
3次元等高面の生成:slice3
・
曲面の切断:slice2
など(追加予定)
plg:曲線
- y:1次元ベクトル
- x:1次元ベクトル
- type=:線の種類(整数)
- color=:線の色(st.iで指定した色、またはchar型の数、またはベクトル[r,g,b]。ただしr,g,bはそれぞれ0-200までの整数に対応)
- width=:線の太さ(整数)
window,width=500,height=500,style="boxed.gs"; /* ウィンドウを表示(既に表示されている場合は不要) */
x=span(0,4,128); /* 0〜4まで等間隔に128点とりxに格納 */
y = sin(x^2); /* yをxの関数値として格納 */
fma; /* キャンバスのクリア */
plg,y,x,color="blue",width=3,type=1,marks=0; /*_/_/_/_/ 曲線の描画 _/_/_/_/*/
limits; /* 最大表示にする */
xytitles,"x-axis","y-axis"; /* 軸の名前の表示 */
補足
色はwhite,yellow,cyan,blue,green,red,blackがそのまま使えます。
plc:等高線
window,width=500,height=500,style="boxed.gs"; /* ウィンドウを表示(既に表示されている場合は不要) */
x= span(-3,3,128)(,-:1:128); /* xの値の2次元配列を作る */
y= transpose(x); /* xを転置してyの2次元配列を作る */
z= 0.5*sin(3*sqrt(x^2+y^2)+0.2)*cos((x-y+sin(0.1))); /* zをxとyの関数として計算 */
levs=span(-0.4,0.4,5); /* 等高線の値の設定 */
fma; /* キャンバスのクリア */
plc,z,y,x,levs=levs,marks=1,color="blue"; /*_/_/_/_/ 等高線の描画 _/_/_/_/*/
limits; /* 最大表示にする */
xytitles,"x-axis","y-axis"; /* 軸の名前の表示 */
補足
plfc:塗りつぶし等高線
window,width=500,height=500,style="boxed.gs"; /* ウィンドウを表示(既に表示されている場合は不要) */
x= span(-3,3,128)(,-:1:128); /* xの値の2次元配列を作る */
y= transpose(x); /* xを転置してyの2次元配列を作る */
z= 0.5*sin(3*sqrt(x^2+y^2)+0.2)*cos((x-y+sin(0.1))); /* zをxとyの関数として計算 */
levs=span(min(z),max(z),15); /* 等高線の値の設定 */
palette,"earth.gp"; /* パレットの指定 */
fma; /* キャンバスのクリア */
plfc,z,y,x,levs=levs; /*_/_/_/_/ 等高線の描画 _/_/_/_/*/
limits; /* 最大表示にする */
xytitles,"x-axis","y-axis"; /* 軸の名前の表示 */
補足
plv:ベクトル図
window,width=500,height=500,style="boxed.gs"; /* ウィンドウを表示(既に表示されている場合は不要) */
x= span(-3,3,20)(,-:1:20); /* xの値の2次元配列を作る */
y= transpose(x); /* xを転置してyの2次元配列を作る */
fma; /* キャンバスのクリア */
fma;plv,cos(x),sin(x),y,x,scale=0.2,color="blue"; /*_/_/_/_/ ベクトル図の描画 _/_/_/_/*/
limits; /* 最大表示にする */
xytitles,"x-axis","y-axis"; /* 軸の名前の表示 */
補足
pldj:多数の線分を描く
window,width=500,height=500,style="boxed.gs"; /* ウィンドウを表示(既に表示されている場合は不要) */
x= span(-3,3,20)(,-:1:20); /* xの値の2次元配列を作る */
y= transpose(x); /* xを転置してyの2次元配列を作る */
dx=cos(x)*0.2;
dy=sin(x)*0.2;
fma; /* キャンバスのクリア */
fma;pldj,x,y,x+dx,y+dy,width=3,color="red"; /*_/_/_/_/ ベクトル図の描画 _/_/_/_/*/
limits; /* 最大表示にする */
xytitles,"x-axis","y-axis"; /* 軸の名前の表示 */
補足
plwf:簡易曲面
include,"plwf.i"; /* plwf.i のインクルード */
window,width=500,height=500,style="nobox.gs"; /* ウィンドウを表示(既に表示されている場合は不要) */
window3; /* 3Dグラフ用のウィンドウの初期設定 */
x= span(-3,3,128)(,-:1:128); /* xの値の2次元配列を作る */
y= transpose(x); /* xを転置してyの2次元配列を作る */
z= 0.5*sin(3*sqrt(x^2+y^2)+0.2)*cos((x-y+sin(0.1))); /* zをxとyの関数として計算 */
palette,"heat.gp"; /* パレットの指定 */
fma; /* キャンバスのクリア */
plwf,z,y,x,shade=1,edges=0; /*_/_/_/_/ 曲面の描画 _/_/_/_/*/
limit3,-3,3,-3,3,-1,1; /* 箱の指定 */
cage3,1; /* 箱の表示 */
limits; /* 最大表示にする */
orient3; /* 角度の調整 */
補足
pl3surf:ポリゴン曲面
include, "plwf.i"; /* plwf関数のインクルード */
include, "pl3d.i"; /* 3次元描画関数群のインクルード */
include, "slice3.i"; /* 3次元等高面やポリゴン曲面描画関数のインクルード */
xyz= array(0.0, 3, 20,20,20);
/* 20(x方向)×20(y方向)×20(z方向)の格子を生成し,各々の格子点に3つの変数 (x座標,y座標,z座標)を持たせ,0.0で初期化. */
x= xyz(1,..)= span(-1.5,1.5,20);
y= xyz(2,..)= span(-1.5,1.5,20)(-,);
z= xyz(3,..)= span(-1.5,1.5,20)(-,-,);
/*各格子点のx,y,z座標に-1.5〜1.5までの値を代入*/
w= sin(1.5*exp(-x^2-z^2-y^2))*(x-sqrt(y^2))*sin(4*sqrt(x^2+y^2+z^2));
/*wをx,y,zの関数として定義*/
m3= mesh3(xyz, w);
/*各格子が(x,y,z,w)の4つの値をもつ3次元格子m3を生成*/
slice3, m3, 1,value=0.1, nv,xyzv;
/* m3においてwの値が0.1となる3次元等高面を生成し,頂点数データ,頂点データをそれぞれnv, xyzvに格納 */
window,width=500,height=500,style="nobox.gs"; /* ウィンドウを表示(既に表示されている場合は不要) */
window3; /* 3Dグラフ用のウィンドウの初期設定 */
palette,"heat.gp"; /* パレットの指定 */
clear3; /* キャンバスのクリア */
pl3surf, nv,xyzv; /*_/_/_/_/ 曲面の描画 _/_/_/_/*/
limit3,-1.5,1.5,-1.5,1.5,-1.5,1.5; /* 箱の指定 */
cage3,1; /* 箱の表示 */
limits; /* 最大表示にする */
orient3; /* 角度の調整 */
draw3,1;
補足
pl3tree:複数のポリゴン曲面
include, "plwf.i"; /* plwf関数のインクルード */
include, "pl3d.i"; /* 3次元描画関数群のインクルード */
include, "slice3.i"; /* 3次元等高面やポリゴン曲面描画関数のインクルード */
xyz= array(0.0, 3, 20,20,20);
/* 20(x方向)×20(y方向)×20(z方向)の格子を生成し,各々の格子点に3つの変数 (x座標,y座標,z座標)を持たせ,0.0で初期化. */
x= xyz(1,..)= span(-1.5,1.5,20);
y= xyz(2,..)= span(-1.5,1.5,20)(-,);
z= xyz(3,..)= span(-1.5,1.5,20)(-,-,);
/*各格子点のx,y,z座標に-1.5〜1.5までの値を代入*/
w= sin(1.5*exp(-x^2-z^2-y^2))*(x-sqrt(y^2))*sin(4*sqrt(x^2+y^2+z^2));
r=sqrt(x^2+y^2+z^2);
/*w,rをx,y,zの関数として定義*/
m3= mesh3(xyz, w,r);
/*各格子が(x,y,z,w)の4つの値をもつ3次元格子m3を生成*/
slice3, m3, 1,value=0.1, nv,xyzv;
/* m3においてwの値が0.1となる3次元等高面を生成し,頂点数データ,頂点データをそれぞれnv, xyzvに格納 */
slice3, m3, 2,value=0.7, nvb,xyzvb;
/* m3においてrの値が0.7となる3次元等高面を生成し,頂点数データ,頂点データをそれぞれnv, xyzvに格納 */
m3=xyz=[]; /* 大きい変数の消去 */
window,width=500,height=500,style="nobox.gs"; /* ウィンドウを表示(既に表示されている場合は不要) */
window3; /* 3Dグラフ用のウィンドウの初期設定 */
palette,"earth.gp"; /* パレットの指定 */
clear3; /* キャンバスのクリア */
pl3tree, nv,xyzv+[0,0,-1]; /*_/_/_/_/ 曲面の描画 _/_/_/_/*/
pl3tree, nvb,xyzvb+[0,0,1.5],nvb,cmin=1,cmax=6; /*_/_/_/_/ 曲面の描画 _/_/_/_/*/
limit3,-2,2,-2,2,-2,2; /* 箱の指定 */
cage3,1; /* 箱の表示 */
limits; /* 最大表示にする */
orient3; /* 角度の調整 */
draw3,1;
補足
slice3:3次元等高面の生成
補足
slice2:曲面の切断
補足