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; }