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