5

ポイント間の距離が 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

範囲内(円柱の表面)に収まるようにランダムなポイントを生成するにはどうすればよいですか?

4

2 に答える 2

1

これは完全な解決策ではありませんが、役立つはずの洞察です。円柱の表面を幅w=2*pi*rと高さの長方形に「展開」するとh、ポイント間の距離を見つけるタスクが単純化されます。円柱の上部と側面のポイント間の「表面に沿った距離」を測定する方法を説明していません。これは、ジオメトリの少しトリッキーなビットです。

人工的な「継ぎ目」を作成したときのサーフェスに沿った距離の計算については、(x1-x2) と (w -x1+x2) の両方を使用します。距離が短い方を使用します。

ポアソンディスクサンプリングを使用するという@VincentNivoliersの提案は非常に良いと思いますが、h = 300およびr = 20の制約により、何があってもひどい結果が得られます.

于 2013-04-06T13:02:56.750 に答える