我想在圆柱体表面上生成随机点,使得点之间的距离落在230和250的范围内.我使用以下代码在圆柱面上生成随机点:
import random,math
H=300
R=20
s=random.random()
#theta = random.random()*2*math.pi
for i in range(0,300):
theta = random.random()*2*math.pi
z = random.random()*H
r=math.sqrt(s)*R
x=r*math.cos(theta)
y=r*math.sin(theta)
z=z
print 'C' , x,y,z
Run Code Online (Sandbox Code Playgroud)
如何生成随机点,使它们落在范围内(在圆柱表面上)?
这不是一个完整的解决方案,但应该会有所帮助的见解。如果将圆柱体的表面“展开”为宽度w=2*pi*r和高度为 的矩形h,则查找点之间距离的任务就会简化。您还没有解释如何测量圆柱体顶部和侧面的点之间的“沿表面的距离”——这是一个稍微棘手的几何学。
至于当我们创建人工“接缝”时计算沿表面的距离,只需使用 (x1-x2) 和 (w -x1+x2) - 无论哪个给出的较短距离就是您想要的距离。
我确实认为 @VincentNivoliers 使用泊松盘采样的建议非常好,但在 h=300 和 r=20 的约束下,无论如何你都会得到糟糕的结果。