ビジュアライザ

これまではJavaScriptとかでやってたけどRの方が綺麗なのでRで書くことにした。とりあえず、手動で手を加えやすくしたいので中間ファイルを噛ませることにする。プログラム中で次のようなファイルを吐く。

TEXT -10 0 S
POINT 5.7924 8.15157
COLOR BLUE
CIRCLE 0 0 8
COLOR GREEN
LINE -10 0 -6.4 -4.8
LINE -10 0 -6.4 4.8
COLOR RED
ARROW 5.7924 8.15157 -0.205616 7.99736
SEGMENT 5.7924 8.15157 7.61989 2.43665
COLOR PURPLE
POLYGON 3 0 -15 -10 -25 12 -23
COLOR SKYBLUE
TEXT 2 15 this text has spaces

これを適当なスクリプトでRスクリプトに変換する。

png(filename="tmp.png", width=800, height=800, type="cairo")
plot(c(), xlab="X", ylab="Y", xlim=c(-25.000000, 15.000000), ylim=c(-25.000000, 15.000000))
s = seq(0, 2*pi, len = 100)
par(cex=2)
text(-10, 0, labels = "S", col="black")
points(x=5.7924, y=8.15157, col="black")
polygon(cbind(8*cos(s)+0, 8*sin(s)+0), density=c(10,20), col="BLUE")
abline(a=-13.333333, b=-1.333333, col="GREEN")
abline(a=13.333333, b=1.333333, col="GREEN")
arrows(5.7924, 8.15157, -0.205616, 7.99736, col="RED")
segments(5.7924, 8.15157, 7.61989, 2.43665, col="RED")
x_ <- c(0,-10,12)
y_ <- c(-15,-25,-23)
polygon(x_, y_, density=c(10,20), col="PURPLE")
text(2, 15, labels = "this_text_has_spaces", col="SKYBLUE")

これをRscriptで実行すると次のような画像ファイルが生成される。


  • 実装してること
    • 線分を長さ付きで表示
    • 描画範囲を設定
    • 円や多角形の塗り潰し方を変更
    • 点を表示する時のマーカー変更
  • TODO
    • 3次元幾何(ぐりぐり)
    • 半直線
    • インタラクティブモード(これやるんだったらProcessingの方がいいかも。Rにもあるけど)