Exemple #1
0
        public static SepAxis GetSpaceSepAxis(Block block_a, Block block_b)
        {
            BB      a = block_a.Bounds, b = block_b.Bounds;
            SepAxis sepAxis = SepAxis.Unknown;

            if (AreRangesDisjoint(a.PtMin.X, a.PtMax.X, b.PtMin.X, b.PtMax.X))
            {
                sepAxis = SepAxis.X;
            }
            else if (AreRangesDisjoint(a.PtMin.Y, a.PtMax.Y, b.PtMin.Y, b.PtMax.Y))
            {
                sepAxis = SepAxis.Y;
            }
            else if (AreRangesDisjoint(a.PtMin.Z, a.PtMax.Z, b.PtMin.Z, b.PtMax.Z))
            {
                sepAxis = SepAxis.Z;
            }
            return(sepAxis);
        }
Exemple #2
0
        public static SepAxis GetIsoSepAxis(Block block_a, Block block_b, Camera camera)
        {
            IsoBB a = block_a.GetIsoBounds(camera);
            IsoBB b = block_b.GetIsoBounds(camera);

            SepAxis sepAxis = SepAxis.Unknown;

            if (AreRangesDisjoint(a.PosMin.X, a.PosMax.X, b.PosMin.X, b.PosMax.X))
            {
                sepAxis = SepAxis.X;
            }
            if (AreRangesDisjoint(a.PosMin.Y, a.PosMax.Y, b.PosMin.Y, b.PosMax.Y))
            {
                sepAxis = SepAxis.Y;
            }
            if (AreRangesDisjoint(a.PosMin.H, a.PosMax.H, b.PosMin.H, b.PosMax.H))
            {
                sepAxis = SepAxis.H;
            }
            return(sepAxis);
        }