沿圆柱表面生成非均匀分布的 3D 点
Generating 3D points along a cylinder surface with a non-uniform distribution
我正在尝试沿着具有 y 上轴的圆柱体的曲面随机生成点。在沿 2D 圆创建点的 SO 问题之后,我有
def point(h, k, r):
theta = random.random() * 2 * pi
global x
global y
x = h + cos(theta) * r
y = k + sin(theta) * r
给定圆柱体的 (h,k) 原点 (0, -21.56462) 和 r(半径 = 7.625)。然后我通过在我的范围 (-2.35, 12.31) 内生成一个 z 点使这些点成为 3D。然而,这让我走到了一半,因为最终结果是一个圆柱体,但顺时针旋转了 90 度。
Image of generated cylinder
我可以使用什么公式来生成正确方向的点?不幸的是,我对三角学不是很熟悉。提前致谢!
解决方案:
def point(h, k, r):
theta = random.random() * 2 * pi
global x
global z
x = h + cos(theta) * r
z = k + sin(theta) * r
新的 (h,k) 原点现在是 (x,z),其中 x 和 z 是圆柱体中心的坐标,y 是在其适当的高度范围内随机生成的。向量仍然是 (x,y,z).
Updated generated cylinder
解决方案:
(感谢 David Huculak)
def point(h, k, r):
theta = random.random() * 2 * pi
global x
global z
x = h + cos(theta) * r
z = k + sin(theta) * r
新的 (h,k) 原点现在是 (x,z),其中 x 和 z 是圆柱体中心的坐标,y 是在其适当的高度范围内随机生成的。向量仍然是 (x,y,z).
Updated Generated cylinder
我正在尝试沿着具有 y 上轴的圆柱体的曲面随机生成点。在沿 2D 圆创建点的 SO 问题之后,我有
def point(h, k, r):
theta = random.random() * 2 * pi
global x
global y
x = h + cos(theta) * r
y = k + sin(theta) * r
给定圆柱体的 (h,k) 原点 (0, -21.56462) 和 r(半径 = 7.625)。然后我通过在我的范围 (-2.35, 12.31) 内生成一个 z 点使这些点成为 3D。然而,这让我走到了一半,因为最终结果是一个圆柱体,但顺时针旋转了 90 度。
Image of generated cylinder
我可以使用什么公式来生成正确方向的点?不幸的是,我对三角学不是很熟悉。提前致谢!
解决方案:
def point(h, k, r):
theta = random.random() * 2 * pi
global x
global z
x = h + cos(theta) * r
z = k + sin(theta) * r
新的 (h,k) 原点现在是 (x,z),其中 x 和 z 是圆柱体中心的坐标,y 是在其适当的高度范围内随机生成的。向量仍然是 (x,y,z).
Updated generated cylinder
解决方案:
(感谢 David Huculak)
def point(h, k, r):
theta = random.random() * 2 * pi
global x
global z
x = h + cos(theta) * r
z = k + sin(theta) * r
新的 (h,k) 原点现在是 (x,z),其中 x 和 z 是圆柱体中心的坐标,y 是在其适当的高度范围内随机生成的。向量仍然是 (x,y,z).
Updated Generated cylinder