R を使用して一部のデータを視覚化しています。RGL は、点をプロットするための優れたライブラリであることがわかりました。
points3d(x,y,z)
ここで、x = c(x1,x2, ...)、y = c(y1,y2,...)、z = c(z1,z2, ...)、および x,y,z の長さは同じです。は、大量のデータ セットをプロットするための優れた関数です。
ここで、データと混合して楕円をプロットしたいと思います。中心点 C、長軸 U を表すベクトル、および短軸 V を表すベクトルによる楕円の特徴付けがあります。楕円の境界上の点 P を次のように取得します。
P = U*cos(t) + V*sin(t) (t ranges between 0 and 2*pi)
ベクトル xt、yt、および zt を取得します。次に、楕円をプロットできます
polygon3d(xt,yt,zt)
それは問題なく動作しますが、これを読んでいるすべての人がうんざりしていると思います。これは悪い方法だと言うでしょう。実際、この方法で各楕円をレンダリングするには数秒かかります。
RGL パッケージの ellipse3d 関数はここでは機能しないと思います。少なくとも、私は共分散の行列を扱っていませんし、この関数から必要な楕円を取得する方法も理解していません。また、楕円ではなく楕円体を返します。
******編集************
時間がかかる具体的な例:
library(rgl)
open3d()
td <- c(0:359)
t <- td*pi/180
plotEllipseFromVector <- function(c,u,v){
xt <- c[1] + u[1]*cos(t) + v[1]*sin(t)
yt <- c[2] + u[2]*cos(t) + v[2]*sin(t)
zt <- c[3] + u[3]*cos(t) + v[3]*sin(t)
polygon3d(xt,yt,zt)
}
中心点、長軸、短軸を入力します。私にとっては2秒強かかります。一方、t を 0、20、40、... 340 に変更すると、非常に高速に動作します。