57. パッケージ rgl


rgl は,三次元的なプロットを行うための関数が凝縮されているパッケージである.三次元的なプロットを作ることができ,プロットした図をマウスで動かすことや,拡大・縮小を行うことが出来る.

rgl 事始

パッケージをインストールしてから example を表示するまでの命令の例を示す.プロットした後は,左クリックで図形を持ったままマウスを動かすことで図形を回転したり,マウスホイールを回すことで図形の拡大や縮小を行うことが出来る.

 
 install.packages("rgl")                # パッケージのインストール
 library(rgl)                           # パッケージの呼び出し
 open3d()                               # デバイスの起動
 example(rgl.surface)                   # 作図
 for(i in 1:360) rgl.viewpoint(i,i/4)   # 図形の回転

 Windows 版 R では,図形をマウスでクリックしようとすると,R のメインウインドウが rgl のウインドウを隠してしまうことがある.この場合,rgl の ウインドウを最大化するか,R のメインウインドウと重ならないように rgl の ウインドウを配置する必要がある.

rgl デバイスに関する関数

 デバイス周りの関数の使用例を挙げる.

 
 open3d()                             # デバイスの起動
 clear3d()                            # 図形の消去
 clear3d(type="lights")               # 光源の設定の消去
 clear3d(type="bboxdeco")             # bounding-box の設定の消去

 ここで,デバイス周りの関数の一覧を挙げる.

関数

機能

 

関数

機能

open3d()

デバイスの起動

rgl.open()

デバイスの起動(関数 open3d() と同じ)

rgl.cur()

デバイス番号の表示

rgl.close()

デバイスを閉じる

rgl.clear()

図の消去

rgl.pop()

現デバイスの消去

rgl.set()

デバイスのセット

rgl.quit()

デバイスの終了

rgl による作図

rgl による作図例を 2 つ挙げる.

 
 spheres3d(rnorm(10), rnorm(10), rnorm(10), radius=runif(10), color=rainbow(10))
 rgl.bbox(color="#ffffff")

 rgl.bg(color=c("white", "black"))
 rgl.light(theta = 5, phi = 5)
 x <- seq(-10, 10, length = 30)
 y <- x
 f <- function(x,y) { r <- sqrt(x^2+y^2); 10 * sin(r)/r }
 z <- outer(x, y, f)
 ylim <- range(y)
 ylen <- ylim[2] - ylim[1] + 1
 colorlut <- rainbow(ylen)              # プロットの色を指定する:関数 rainbow() の他に
 col <- colorlut[ y-ylim[1]+1 ]         # heat.colors(), terrain.colors(), topo.colors(),
 terrain3d(x, y, z, color=col)          # cm.colors() などが有用である

ここで,rgl 用の作図関数の一覧を挙げる.

関数

機能

 

関数

機能

cube3d()

四角形のメッシュを生成する

dot3d()

ドットのプロット

lines3d()

線のプロット

points3d()

点のプロット

quads3d()

四角形を生成する

qmesh3d()

四角形のメッシュを生成する

segments3d()

線分のプロット

select3d()

図の範囲を指定する

shade3d()

影のプロット

spheres3d()

球面のプロット

sprites3d()

スプライトのプロット

surface3d()

面のプロット

subdivision3d()

「Generic subdivision surface method」アルゴリズムの実行

terrain3d()

面のプロット

text3d()

文字のプロット

triangles3d()

三角形のプロット

wire3d()

ワイヤー・フレームのプロット

bbox3d()

Bounding Box を生成する

rgl で描いた図の保存

描いた図を保存する場合は以下のようにする.現在表示されている図が png 形式や eps 形式で保存される.

 
 rgl.snapshot("c:/filename.png")                 # png 形式で保存
 rgl.postscript("c:/filename.eps", fmt="eps" )   # eps 形式で保存

ここで,rgl の関数の落穂ひろいを行う.

関数

機能

 

関数

機能

par3d()

rgl 用のグラフィックスパラメータを設定する

rgl.bbox()

Bounding Box を生成する(関数 bbox3d() と同じ)

rgl.bg()

背景色を設定する

rgl.bringtotop()

rgl ウインドウを「常に前面に持ってくるか否か」を設定する

rgl.clear()

rgl ウインドウの掃除をする

rgl.light()

明るさを調節する

rgl.postscript()

rgl の画像を ps,eps,tex,pdf 形式で出力する

rgl.snapshot()

rgl の画像を png 形式で出力する

rgl.user2window()

座標系の変換を行う

rgl.viewpoint()

rgl の viewport を生成する