使用R中的rgl绘制一个半透明的球形

3

I have a set of data, looks like:

    x   y   z
1   1   2   1
2   3   5   7
3   -3  2   4
4   -2  1   1

所以每一行记录了三维空间中的点坐标。我想将所有点绘制为散点,除了其中一个点,例如第15个点,它应该绘制为半透明的球体,并且我可以设置球体的半径。然后,我可以从绘图中看到哪些数据点包含在球体内。我现在正在使用RGL包,并进行了以下操作:

> open3d()
> plot3d(readin,col=3,type="p")
> plot3d(readin[15,],col=2,add=T,type="s",radius=0.1)

第一条绘图命令将整个数据集绘制为散点图,第二条绘图命令选择了数据的第15行,并将其绘制为球体并添加到之前的画布中。我想知道是否可以使球体半透明,这样我就可以看到哪些点包含在球体中,这意味着这些点非常靠近我所选择的点。

是否有一种方法可以通过RGL完成此操作,或者您可以提供其他方法来完成此任务?

谢谢!

3个回答

8

我认为你要找的是参数alpha

示例

df <- data.frame(x=c(1,3,-3,-2), y=c(2,5,2,1),z=c(1,7,4,1))

library(rgl)
open3d()
plot3d(df,col=3,type="p", radius=0.5)
plot3d(df,col=rgb(1,0,0.3),alpha=0.5, add=T,type="s",radius=1)

enter image description here


1
您可以使用alpha参数来绘制透明的球体。您可以旋转图形以使盒线位于球体后面,以证明其为透明。
 spheres3d(dat[4,],col=rgb(1,0,0), alpha=0.9)  # transparent red.

我尝试使用 rgb 的 alpha 参数,但失败了。


0

如果您只想找出哪些点在点15的某个半径内,那么您可以计算每个点到点15的欧几里得距离,并查看其中哪些距离小于半径。不需要绘制图形(虽然您可以将这些点作为不同颜色绘制以突出显示)。dist函数是计算距离的一种方式,或者您也可以自己编写程序。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接