標準装備の描画関数の使い方

ここではカスタマイズ用ファイルを使用せずに、標準装備の描画関数をそのまま使う方法について解説します。

2D描画関数

曲線:plg
等高線:plc
塗りつぶし等高線:plfc
ベクトル図:plv
多数の線分を描く:pldj
など(追加予定)

3D描画関数

簡易曲面:plwf
ポリゴン曲面:pl3surf
複数のポリゴン曲面:pl3tree
3次元等高面の生成:slice3
曲面の切断:slice2
など(追加予定)

plg:曲線

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:曲面の切断

補足