R,rgl,绘制点和椭圆

时间:2014-08-09 03:34:45

标签: r plot rgl

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

0 个答案:

没有答案