如何通过R中的RGL检查/决定/分割3d shpae或圆锥内的点?

问题描述 投票:0回答:1

我如何知道哪些点在圆锥体内,以下兔子数据的示例。

library("onion")
library("rgl")

#bunny data
data(bunny)

#cone
pts <- cbind(c(0, 0), c(0, 0.23), c(0, 0))# the centers
radii <- c(0.0, 0.15)
cone <- cylinder3d(pts, radii, sides = 20)

#visualize
points3d(bunny, col="pink", alpha = 0.3)
shade3d(cone, col = "lightblue", alpha = 0.9)

r rgl
1个回答
0
投票

这更像是一个几何问题,而不是一个编程问题。对于 x、y、z 空间中的任何给定点,

x^2 + z^2 < (0.15/0.23 * y)^2
所在的点将位于您定义的圆锥体内,因此您可以执行以下操作:

data(bunny)

pts <- cbind(c(0, 0), c(0, 0.23), c(0, 0))
radii <- c(0.0, 0.15)
cone <- cylinder3d(pts, radii, sides = 100)

cone_bunny <- bunny[bunny[,1]^2 + bunny[,3]^2 < (0.15/0.23 * bunny[,2])^2,]

points3d(cone_bunny, col="pink", alpha = 0.5)
shade3d(cone, col = "lightblue", alpha = 0.3)

我不确定您是否正在寻找一种更通用的相交 3D 形状解决方案 - 这要困难得多,但许多简单的几何相交可以通过简单的代数来计算。

© www.soinside.com 2019 - 2024. All rights reserved.