-1

私は人間のシミュレーションをプログラムしようとしていますが、私がやりたいことの 1 つは、個人空間のバッファーをシミュレートすることです。これを行うには、あるポイントをチェックpt1して、別のポイントで反発する必要があるかどうかを確認する必要がありますpt2。の抵抗をスケーリングしてpt1双曲線をモデル化し、短い距離では力が無限大にならないようにする必要があります。1 / (distance + 1)+1

私はこれのほとんどを理解しましたが、それに対するpt1力の正規化されたベクトルに相対的な力ベクトルを取得する方法を理解できません。ここでベクトル計算が得意な人が助けてくれますか? ありがとうございました!

4

1 に答える 1

0

私があなたの質問を正しく理解したかどうかはわかりませんが、私はこれを仮定しています.ポイントのリストを持っているとしましょう.座標のペアの配列で言いましょう.

[[x0, y0], [x1, y1], [x2, y2], ... [xn, yn]]

次に、ポイント #k で結果として得られる力ベクトルを計算する必要がある場合は、次のものが必要です。

force_vector = [0, 0]
for i from 0 to n:
    skip if i = k
    x_force = xk - xi
    y_force = yk - yi
    // Resulting force vector for i-k pair will be aligned as [x_force, y_force]
    // we just need to normalize it
    vector_modulo = square_root(x_force^2 + y_force^2)
    normalized_vector = [x_force/vector_modulo, y_force/vector_modulo]
    dist_ik = square_root((xk-xi)^2 + (yk - yi)^2)
    force_vector[0] += normalized_vector[0]/(dist_ik + 1)
    force_vector[1] += normalized_vector[1]/(dist_ik + 1)        

最後に、#k ポイントの「力」の x 値と y 値を持つ force_vector があります。

于 2013-06-07T09:49:09.557 に答える