Example #1
0
 public override void IntersectDF(BBTreeNode cdTree, List <DirectDetectData> res)
 {
     //if (aAABB.Intersect(cdTree.bBall.vCentre, cdTree.bBall.dRange))
     if (children != null)
     {
         for (int i = 0; i < children.Length; i++)
         {
             AABBTreeNode ch = (AABBTreeNode)children[i];
             if (MathEx.BoundingSphereIntersects(ref cdTree.ball, ref ch.aabb)) //(cdTree.bBall.Intersect(ref ch.aAABB))
             {
                 cdTree.IntersectDF(ch, res);                                   //相互遍历
             }
         }
     }
     else
     {
         Triangle t = (Triangle)faceData;
         cdTree.IntersectDF(ref t, res);
     }
 }
Example #2
0
 public override void IntersectDF(BBTreeNode cdTree, List <DirectDetectData> res)
 {
     //if ((cdTree.bBall.vCentre ^ bBall.vCentre) <= r * r)
     if (children != null)
     {
         for (int i = 0; i < children.Length; i++)
         {
             BBTreeNode ch = (BBTreeNode)children[i];
             float      r  = (cdTree.ball.Radius + ch.ball.Radius);
             if (MathEx.DistanceSquared(ref cdTree.ball.Center, ref ch.ball.Center) <= r * r)
             {
                 cdTree.IntersectDF(ch, res); //相互遍历
             }
         }
     }
     else
     {
         // 有一个到了根节点
         // 那就就让另一个直接到根节点判断,就是
         Triangle t = (Triangle)faceData;
         cdTree.IntersectDF(ref t, res);
     }
 }