コード例 #1
0
 void SetToTransformedBox(AABB box, Matrix3 m)
 {
     if (box.IsEmpty())
     {
         Empty();
         return;
     }
     if (m.m1 > 0.0f)
     {
         min.x += m.m1 * box.min.x;  max.x += m.m1 * box.max.x;
     }
     else
     {
         min.x += m.m1 * box.max.x;  max.x += m.m1 * box.min.x;
     }
     if (m.m2 > 0.0f)
     {
         min.x += m.m2 * box.min.x; max.x += m.m2 * box.max.x;
     }
     else
     {
         min.x += m.m2 * box.max.x; max.x += m.m2 * box.min.x;
     }
     if (m.m3 > 0.0f)
     {
         min.x += m.m3 * box.min.x; max.x += m.m3 * box.max.x;
     }
     else
     {
         min.x += m.m3 * box.max.x; max.x += m.m3 * box.min.x;
     }
     if (m.m4 > 0.0f)
     {
         min.x += m.m4 * box.min.x; max.x += m.m4 * box.max.x;
     }
     else
     {
         min.x += m.m4 * box.max.x; max.x += m.m4 * box.min.x;
     }
     if (m.m5 > 0.0f)
     {
         min.x += m.m5 * box.min.x; max.x += m.m5 * box.max.x;
     }
     else
     {
         min.x += m.m5 * box.max.x; max.x += m.m5 * box.min.x;
     }
     if (m.m6 > 0.0f)
     {
         min.x += m.m6 * box.min.x; max.x += m.m6 * box.max.x;
     }
     else
     {
         min.x += m.m6 * box.max.x; max.x += m.m6 * box.min.x;
     }
     if (m.m7 > 0.0f)
     {
         min.x += m.m7 * box.min.x; max.x += m.m7 * box.max.x;
     }
     else
     {
         min.x += m.m7 * box.max.x; max.x += m.m7 * box.min.x;
     }
     if (m.m8 > 0.0f)
     {
         min.x += m.m8 * box.min.x; max.x += m.m8 * box.max.x;
     }
     else
     {
         min.x += m.m8 * box.max.x; max.x += m.m8 * box.min.x;
     }
     if (m.m9 > 0.0f)
     {
         min.x += m.m9 * box.min.x; max.x += m.m9 * box.max.x;
     }
     else
     {
         min.x += m.m9 * box.max.x; max.x += m.m9 * box.min.x;
     }
 }
コード例 #2
0
ファイル: AABB.cs プロジェクト: EvanSchiferl/TankGame
        void SetToTransformedBox(AABB box, Matrix3 m)
        {
            if (box.IsEmpty())
            {
                IsEmpty();
                return;
            }

            if (m.m1 > 0.0f)
            {
                min.x += m.m1 * box.min.x; max.x += m.m1 * box.max.x;
            }
            else
            {
                min.x += m.m1 * box.max.x; max.x += m.m1 * box.min.x;
            }

            if (m.m2 > 0.0f)
            {
                min.y += m.m2 * box.min.x; max.y += m.m2 * box.max.x;
            }
            else
            {
                min.y += m.m2 + box.max.x; max.y += m.m2 * box.min.x;
            }

            if (m.m3 > 0.0f)
            {
                min.z += m.m3 * box.min.x; max.z += m.m3 * box.max.x;
            }
            else
            {
                min.z += m.m3 * box.max.x; max.z += m.m3 * box.min.x;
            }
            //may be incorrect below this line
            if (m.m4 > 0.0f)
            {
                min.x += m.m4 * box.min.x; max.x += m.m4 * box.max.x;
            }
            else
            {
                min.x += m.m4 * box.max.x; max.x += m.m4 * box.min.x;
            }

            if (m.m5 > 0.0f)
            {
                min.y += m.m5 * box.min.x; max.y += m.m5 * box.max.x;
            }
            else
            {
                min.y += m.m5 + box.max.x; max.y += m.m5 * box.min.x;
            }

            if (m.m6 > 0.0f)
            {
                min.z += m.m6 * box.min.x; max.z += m.m6 * box.max.x;
            }
            else
            {
                min.z += m.m6 * box.max.x; max.z += m.m6 * box.min.x;
            }

            if (m.m7 > 0.0f)
            {
                min.x += m.m7 * box.min.x; max.x += m.m7 * box.max.x;
            }
            else
            {
                min.x += m.m7 * box.max.x; max.x += m.m7 * box.min.x;
            }

            if (m.m8 > 0.0f)
            {
                min.y += m.m8 * box.min.x; max.y += m.m8 * box.max.x;
            }
            else
            {
                min.y += m.m8 + box.max.x; max.y += m.m8 * box.min.x;
            }

            if (m.m9 > 0.0f)
            {
                min.z += m.m9 * box.min.x; max.z += m.m9 * box.max.x;
            }
            else
            {
                min.z += m.m9 * box.max.x; max.z += m.m9 * box.min.x;
            }
        }
コード例 #3
0
        void SetToTransformedBox(AABB box, Matrix3 m)
        {
            // If we're empty, then exit (an empty box defined as having the min/max set to infinity)

            if (box.IsEmpty())
            {
                Empty();

                return;
            }



            if (m.m1 > 0.0f) // m1 = m11 in the formula above
            {
                min.x += m.m1 * box.min.x; max.x += m.m1 * box.max.x;
            }
            else
            {
                min.x += m.m1 * box.max.x; max.x += m.m1 * box.min.x;
            }


            if (m.m2 > 0.0f) // m2 = m12 in the formula above
            {
                min.y += m.m2 * box.min.x; max.y += m.m2 * box.max.x;
            }
            else
            {
                min.y += m.m2 * box.max.x; max.y += m.m2 * box.min.x;
            }


            if (m.m3 > 0.0f) // m3 = m13 in the formula above
            {
                min.z += m.m3 * box.min.x; max.z += m.m3 * box.max.x;
            }
            else
            {
                min.z += m.m3 * box.max.x; max.z += m.m3 * box.min.x;
            }


            if (m.m4 > 0.0f) // m4 = m21 in the formula above
            {
                min.x += m.m4 * box.min.x; max.x += m.m4 * box.max.x;
            }
            else
            {
                min.x += m.m4 * box.max.x; max.x += m.m4 * box.min.x;
            }


            if (m.m5 > 0.0f) // m5 = m22 in the formula above
            {
                min.y += m.m5 * box.min.x; max.y += m.m5 * box.max.x;
            }
            else
            {
                min.y += m.m5 * box.max.x; max.y += m.m5 * box.min.x;
            }


            if (m.m6 > 0.0f) // m6 = m23 in the formula above
            {
                min.z += m.m6 * box.min.x; max.z += m.m6 * box.max.x;
            }
            else
            {
                min.z += m.m6 * box.max.x; max.z += m.m6 * box.min.x;
            }


            if (m.m7 > 0.0f) // m7 = m31 in the formula above
            {
                min.x += m.m7 * box.min.x; max.x += m.m7 * box.max.x;
            }
            else
            {
                min.x += m.m7 * box.max.x; max.x += m.m7 * box.min.x;
            }


            if (m.m8 > 0.0f) // m8 = m32 in the formula above
            {
                min.y += m.m8 * box.min.x; max.y += m.m8 * box.max.x;
            }
            else
            {
                min.y += m.m8 * box.max.x; max.y += m.m8 * box.min.x;
            }


            if (m.m9 > 0.0f) // m9 = m33 in the formula above
            {
                min.z += m.m9 * box.min.x; max.z += m.m9 * box.max.x;
            }
            else
            {
                min.z += m.m9 * box.max.x; max.z += m.m9 * box.min.x;
            }
        }