2017-05-26 12 views
2

私は、バイナリ分類の例のための素晴らしいビジュアルイラストを作るために3D印刷データを試してみます。RGLの面をより厚くするにはどうしたらいいですか?

はここに私の3Dプロットである:

require(rgl) 
#Get example data from mtcars and normalize to range 0:1 
fun_norm <- function(k){(k-min(k))/(max(k)-min(k))} 
x_norm <- fun_norm(mtcars$drat) 
y_norm <- fun_norm(mtcars$mpg) 
z_norm <- fun_norm(mtcars$qsec) 

#Plot nice big spheres with rgl that I hope will look good after 3D printing 
plot3d(x_norm, y_norm, z_norm, type="s", radius = 0.02, aspect = T) 
#The sticks are meant to suspend the spheres in the air 
plot3d(x_norm, y_norm, z_norm, type="h", lwd = 5, aspect = T, add = T) 
#Nice thick gridline that will also be printed 
grid3d(c("x","y","z"), lwd = 5) 

次に、私はイアン・ウォーカーによって書かれたr2stlを説明this blog hereに触発z = 0の平面を、追加したいです。それは、すべてを一緒に保持する印刷された構造の基礎とされています。

planes3d(a=0, b=0, c=1, d=0) 

しかし、ボリュームはなく、高さ= 0の薄いスラブです。私はそれがすべてを一緒に保つことを目的とした印刷された構造のためのしっかりとした基盤を形成したいと思います(上記のブログをもっと詳しく見てください、彼の例は素晴らしいです)。同じ効果を得るために、z = 0平面の厚さをどのように増やすのですか?ここで

は、STLとしてエクスポートする最後のステップです:

writeSTL("test.stl") 

ブログでイアンが推奨するように、1つは、オープンソースMeshlabを使用して、本当に素敵な最終製品を表示することができます。

その他の発言:薄い平面が、立方体の-z面に追加したグリッドから離れて浮いていることに気付きました。これは、印刷時にも問題を引き起こす可能性があります。グリッドをz = 0平面にマージするにはどうすればよいですか? (私はSTLファイルを私のために印刷する友達に送ってきます。できるだけ簡単に物事をしたいです)

答えて

1

飛行機をもっと厚くすることはできません。あなたは固体の形を作ることができます(extrude3d()は使用する関数です)。それは飛行機のようにバウンディングボックスに適応しないので、最後に描画する必要があります。例えば

は、

example(plot3d) 
bbox <- par3d("bbox") 
slab <- translate3d(extrude3d(bbox[c(1,2,2,1)], bbox[c(3,3,4,4)], 0.5), 
        0,0, bbox[5]) 
shade3d(slab, col = "gray") 

は、この出力を生成します

sample output

これはまだ(ポイントは何もサポートしていません)印刷可能ではありませんが、それはあなたが始める必要があります。

1

パッケージmatlibパッケージには、2予測子の重回帰モデルのベクトル空間表現を描画する関数regvec3d()があります。関数の結果のプロットメソッドには、基底のx1-x2平面を描画する引数show.baseがあり、show.base >0の場合はそれを太く描画します。

小さなオフセットで平面の2番目のバージョンを描画する単純なハックです。おそらく、これはあなたのアプリケーションには十分であろう。

if (show.base > 0) planes3d(0, 0, 1, 0, color=col.plane, alpha=0.2) 
if (show.base > 1) planes3d(0, 0, 1, -.01, color=col.plane, alpha=0.1) 
関連する問題