0

Silverlight 3アプリケーションでは、ツリーを表示します。ツリーノードには自作のユーザーコントロールが使用され、接続にはLineArrowオブジェクトが使用されます。ツリーを最初に表示した後、次の「物理的特性」によってノードを移動させたい

  • ノードを引き下げる重力があります
  • 親への力ベクトルがあります
  • それは子供たちがそれを彼らの真ん中に引き寄せます

当然、私のユーザーコントロールはまもなく重複します。しかし、私はそれらが重なることを望んでいません。物理学の用語では、それらを固体オブジェクトにし、2つのオブジェクトが同じ空間に存在できないという物理的ルールを適用する必要があります。

この問題に取り組む方法について何か提案はありますか?記述された部分が私のプロジェクト内で使用される唯一の物理学であるため、私はこれにfarseerのような物理学エンジンを使用したくありません。

よろしくお願いします、
フランク

4

2 に答える 2

0

角張った形をコントロールしていますか?または、バウンディングボックスを生成できますか?その場合は、それぞれにSystem.Windows.Rect構造体を作成し、Rect.Insersectメソッドを使用して交差点をテストできます。

于 2010-10-05T03:53:22.020 に答える
0

それらが重なるたびに非常に大きな力を加えるだけで、それらを「ほぼ固体」のオブジェクトとしてモデル化できます。中心から中心へのベクトルを計算し、それを正規化します。おそらくオーバーラップを掛けてから、それを力として各オブジェクトに適用します。

Farseerライブラリ全体を使用しなくても、のような便利なクラスが含まれている場合がありますVector2

于 2010-10-05T04:07:09.670 に答える