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