0

私は3Dでドロップ&ドロップに取り組んでいます。私は 3D 空間 (部屋) と壁 (立方体) を作成しました。壁 (立方体) は、ドロップされるオブジェクト (小さい方の立方体を想定) のプレースホルダーとして機能します。

どのように私は理解しようとしていますか:

ユーザーがオブジェクトを部屋の端に落とした場合、部屋はそのオブジェクトを完全に含むことができますか?

つまり、オブジェクトが部分的に部屋にあり、部分的に外に出たくありません。理想的には、ドロップ操作をキャンセルするか、部屋にそのオブジェクトが安全に含まれるようにポイントに移動します。

部屋とオブジェクト (ModelVisual3D.Content.Bounds) の境界と、オブジェクトがドロップされたポイントがあります。

オブジェクトがその時点に配置されているかどうかを判断するには、計算を行う必要があると考えています。

アイデア/考え/ポインターを高く評価しました。

4

3 に答える 3

0

1. 点 A をピックします (点は内側の立方体 CubeIn の角でもかまいません)。

1 つのキューブから 1 つのポイントを選択します。(1 つの立方体が他の立方体の中に完全に入っていることをテストすることを想定しています。交差がないことを意味します)。

2. CubeOut (Outercube) 内の A を確認します。

3. A が CubeIn よりも CubeOut の内側にある場合、完全に CubeOut の内側にある場合

ポイントが 2 番目のキューブの内側にある場合は、最初のキューブが 2 番目のキューブの内側にあることを意味します。

4. それ以外の場合、CubeIn は CubeOut 内にありません

これは、あらゆる種類のソリッド エンティティ (球、円錐など) で機能します。

于 2014-04-29T10:50:34.180 に答える
0

3D でのドラッグ アンド ドロップを簡単にするために、(オプションの) スナップ システムを実装することができます。

ボックスに別のボックスが含まれているかどうかを確認するには、ボックスのすべての角を確認します。各コーナーをテストして、他のボックスの面の「内側」(または外側) にあるかどうかを確認します。すべての角が内側にある場合、ボックスは内側にあります。

これは、軸に沿ったボックスだけでなく、すべてのボックスで機能します。

于 2011-02-09T21:42:10.350 に答える
0

境界を使用しているため、軸が整列しているボックスの場合は、軸に整列したボックスが別のボックスに含まれているかどうかを簡単なテストで確認できます。

次のBoxクラスがあるとします。

class Box 
{
  Vector3 minEdge;
  Vector3 maxEdge;
}

Box含めるかどうかをテストするメソッドを内部に簡単に含めることができます。

bool IsInside(Box other)
{
  return maxEdge.X <= other.maxEdge.X &&
         maxEdge.Y <= other.maxEdge.Y &&
         maxEdge.Z <= other.maxEdge.Z &&
         minEdge.X >= other.minEdge.X &&
         minEdge.Y >= other.minEdge.Y &&
         minEdge.Z >= other.minEdge.Z;
}

これは任意の向きのボックスでは機能せず、軸が揃っている場合にのみ機能することに注意してください。

于 2011-02-09T21:15:30.320 に答える