1

我正在使用 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,那么它的工作速度非常快。

4

0 回答 0