public static void FromNormalVectors(Vector2[] vectors, ref Matrix4 matrix, out BoundingRectangle result) { Vector2 current; Vector2Helper.TransformNormal(ref vectors[0], ref matrix, out current); result.Max = current; result.Min = current; for (var index = 1; index < vectors.Length; ++index) { Vector2Helper.TransformNormal(ref vectors[index], ref matrix, out current); if (current.X > result.Max.X) { result.Max.X = current.X; } else if (current.X < result.Min.X) { result.Min.X = current.X; } if (current.Y > result.Max.Y) { result.Max.Y = current.Y; } else if (current.Y < result.Min.Y) { result.Min.Y = current.Y; } } result.Max.X += matrix.M13; result.Max.Y += matrix.M23; result.Min.X += matrix.M13; result.Min.Y += matrix.M23; }