私は、粒子の小さな視覚化をパイソンで作成しました。 私はゼロ重力の2D空間で粒子の動きを解明しています。 各粒子は、粒子の質量および距離に基づいて、他のすべての粒子を引き付ける。ゼロ重力2次元空間における粒子の重力計算の最適化
私はpygameでビジュアライゼーションを行いましたが、すべてがプランとして機能しますが(caluclationあり)、extreamly計算を最適化する必要があります。今日、システムは、横方向のフレームレートにおいて約100〜150個の粒子を計算することができる。すべての計算を別のスレッドに入れてくれました。それは私に何かを与えてくれましたが、私が望むものはほとんどありませんでした。
私はscipyとnumpyを見ましたが、私は科学者でもmathguruでもないので、ちょっと混乱します。私は正しい軌道にいるように見えますが、私は手がかりを持っていません。
私はループ内のすべてのパーティクル上のすべてのアトラクションを計算する必要があります。 そして、私が衝突したかどうかを知る必要があるので、私は同じことをやり直す必要があります。
それはコードのようなものを書くために私の心を壊し....
numpyのは、配列の配列を計算する能力を持っている、しかし、私は見つかっていない全てのアイテムを配列内のすべての項目を計算するためにどのような任意の同じ/別の配列から。 1つはありますか? ので、私は作成して、配列のカップルとはるかに高速に計算し、その値が一致(Collitiondetect IOW)ここで
は、今日の魅力/ collsion計算で2つのアレイへのインデックスを取得する機能が存在しなければならない可能性がある場合:
class Particle:
def __init__(self):
self.x = random.randint(10,790)
self.y = random.randint(10,590)
self.speedx = 0.0
self.speedy = 0.0
self.mass = 4
#Attraction
for p in Particles:
for p2 in Particles:
if p != p2:
xdiff = P.x - P2.x
ydiff = P.y - P2.y
dist = math.sqrt((xdiff**2)+(ydiff**2))
force = 0.125*(p.mass*p2.mass)/(dist**2)
acceleration = force/p.mass
xc = xdiff/dist
yc = ydiff/dist
P.speedx -= acceleration * xc
P.speedy -= acceleration * yc
for p in Particles:
p.x += p.speedx
p.y += p.speedy
#Collision
for P in Particles:
for P2 in Particles:
if p != P2:
Distance = math.sqrt( ((p.x-P2.x)**2) + ((p.y-P2.y)**2) )
if Distance < (p.radius+P2.radius):
p.speedx = ((p.mass*p.speedx)+(P2.mass*P2.speedx))/(p.mass+P2.mass)
p.speedy = ((p.mass*p.speedy)+(P2.mass*P2.speedy))/(p.mass+P2.mass)
p.x = ((p.mass*p.x)+(P2.mass*P2.x))/(p.mass+P2.mass)
p.y = ((p.mass*p.y)+(P2.mass*P2.y))/(p.mass+P2.mass)
p.mass += P2.mass
p.radius = math.sqrt(p.mass)
Particles.remove(P2)
[Psyco](http://psyco.sourceforge.net/)または[Writing C/C++ module](http://docs.python.org/extending/extending.html)について考えましたか? – nagisa
この記事では、Barnes-Hutを含む重力シミュレーションを最適化するための一般的なアプローチをレビューします。プロは一般的に3Dでそれを行いますが、2Dのケースはすべて類似していると私は信じています。 http://www.cs.hut.fi/~ctl/NBody.pdf –
もしあなたが数学に満足していなければ(「私は科学者でもなく、私はちょうど混乱します」)、あなたはあなたがこれを行うライブラリ。 http://stackoverflow.com/questions/6381137/python-physics-library http://stackoverflow.com/questions/2298517/are-any-of-the-quad-tree-libraries-any-good –