二つの物体の衝突を検出する方法

またヘルプに載ってるコードを動かしてみている。

動くには動いたがロジックが理解できない。


void CheckForCollisions(ref Cube c1, ref Cube c2) {
bool collision = false;

// C1とC2の衝突を判定しているっぽい
// Check whether the bounding boxes of the two cubes intersect.
if (c1.bb.Intersects(c2.bb)) {
collision = true;
c2.ReverseVelocity();
}

// C1の移動範囲を、C1とXが1で10の大きさのPlaneとの何かを判定してる
// Check whether the moving cube intersects or has passed through the right plane.
if (c1.bb.Intersects(new Plane(new Vector3(1, 0, 0), 10)) != PlaneIntersectionType.Front) {
collision = true;
}

// C1の移動範囲を、C1とXが-1で10の大きさのPlaneとの何かを判定してる
// Check whether the moving cube intersects or has passed through the left plane.
if (c1.bb.Intersects(new Plane(new Vector3(-1, 0, 0), 10)) != PlaneIntersectionType.Front) {
collision = true;
}

if (collision) {
c1.Backup();
c1.ReverseVelocity();
}
}

分からないこと。
・BoundingBoxとは何か? 境界箱?
・BoundingBoxのmaxとminとは何か?
・Planeとは何か?
・PlaneIntersectionType.Front(列挙体)とは何か?
つまり何も分かってない。DirectXのヘルプに載ってるかなあ。