【发布时间】:2019-08-28 20:50:21
【问题描述】:
我有特定的 x,y,z 坐标。我想在给定 x 作为中心和从另一个数据帧 x2 作为半径边缘的球体中生成随机点(因此从 x 到 x2 的距离将是球体半径的长度)。
我已经看到很多关于如何在数学上适当地做到这一点的讨论(随机分布点以避免聚集),并且能够编译最简单的示例 here 和 here 以获取示例 R 代码。
我还发现了这个 [R package sphereplot] (https://cran.r-project.org/web/packages/sphereplot/sphereplot.pdf),它可能更容易,但很难理解如何应用它。
这些都是很好的起点,但是使用下面的示例代码我不确定如何将其应用于特定的起点/球坐标?
set.seed(101)
n <- 50
theta <- runif(n,0,2*pi)
u <- runif(n,-1,1)
x <- sqrt(1-u^2)*cos(theta)
y <- sqrt(1-u^2)*sin(theta)
z <- u
仅使用我的数据框中的一组/行 x、y、z 坐标:
x = -0.0684486861
y= 0.0125857380
z= 0.0201056441
x2= -0.0684486861
y2 = 0.0125857380
z2= -0.0228805516
我希望 x,y,z 是球体的中心,到 x2,y2,z2 的距离是球体的半径长度/边缘。然后从球体内以 x,y,z 为中心生成随机点。
最终,我尝试使用 100 个球体来比较第二组坐标中的所有点是否在空间中以相似的角度/方向移动。
感谢您的指导。
【问题讨论】:
-
我无法理解您的问题。球体存在于三个维度中。一个圆圈存在于两个中。您打算如何使用单个
x坐标作为“圆心”或球心?前者取两个坐标值,后者取三个坐标值。 -
嗯,我确实有每个点的 x,y,z 坐标 - 我刚刚添加了(我应该提到这些是从排序生成的)但是你不能只使用半径吗?类似于根据半径计算球体的体积?
-
不,你不能只使用半径,因为半径定义了一个相对于一个点的圆或球体,而在 2 空间或 3 空间中定义一个点需要两个或三个坐标, 分别。有无数个具有相同半径和 x 坐标的圆或球体。
-
感谢 @pjs 帮助我改进这一点。我想错了。我做了一些更正,希望能澄清我正在尝试做的事情。
-
您是否希望点均匀分布在球体中,即给定体积中的预期点数与体积成正比?
标签: r function random geometry