Exemplo n.º 1
0
        public virtual void GetBoundingBox(ref TSMatrix orientation, out TSBBox box)
        {
            TSVector zero = TSVector.zero;

            zero.Set(orientation.M11, orientation.M21, orientation.M31);
            this.SupportMapping(ref zero, out zero);
            box.max.x = orientation.M11 * zero.x + orientation.M21 * zero.y + orientation.M31 * zero.z;
            zero.Set(orientation.M12, orientation.M22, orientation.M32);
            this.SupportMapping(ref zero, out zero);
            box.max.y = orientation.M12 * zero.x + orientation.M22 * zero.y + orientation.M32 * zero.z;
            zero.Set(orientation.M13, orientation.M23, orientation.M33);
            this.SupportMapping(ref zero, out zero);
            box.max.z = orientation.M13 * zero.x + orientation.M23 * zero.y + orientation.M33 * zero.z;
            zero.Set(-orientation.M11, -orientation.M21, -orientation.M31);
            this.SupportMapping(ref zero, out zero);
            box.min.x = orientation.M11 * zero.x + orientation.M21 * zero.y + orientation.M31 * zero.z;
            zero.Set(-orientation.M12, -orientation.M22, -orientation.M32);
            this.SupportMapping(ref zero, out zero);
            box.min.y = orientation.M12 * zero.x + orientation.M22 * zero.y + orientation.M32 * zero.z;
            zero.Set(-orientation.M13, -orientation.M23, -orientation.M33);
            this.SupportMapping(ref zero, out zero);
            box.min.z = orientation.M13 * zero.x + orientation.M23 * zero.y + orientation.M33 * zero.z;
        }