public double Compute(Rectangle rectangle)
        {
            // Adapt rectangle to become two triangles
            Library.TriangleStrip triangles = new Library.TriangleStrip(
                new Library.Vertex(rectangle.BottomLeft.x, rectangle.TopRight.y),   // v1
                rectangle.BottomLeft.ToVertex(),                                    // v2
                rectangle.TopRight.ToVertex(),                                      // v3
                new Library.Vertex(rectangle.TopRight.x, rectangle.BottomLeft.y)    // v4
                );

            return(_adaptee.GetArea(triangles));
        }
        /// <summary>
        /// Computes the area of the <see cref="TriangleStrip"/> specified by <paramref name="ts"/>.
        /// </summary>
        /// <param name="ts"><see cref="TriangleStrip"/> object containing vertices.</param>
        /// <returns>Area of total shape specified by <paramref name="ts"/>.</returns>
        public double GetArea(TriangleStrip ts)
        {
            Vertex[] vertices = ts.Vertices.ToArray();
            if (vertices.Length < 3)
            {
                throw new ShapeProcessorException("Too few vertices");
            }

            double area = 0;

            for (int i = 0; i < vertices.Length - 2; i++)
            {
                double a = (vertices[i + 1] - vertices[i]).Length;
                double b = (vertices[i + 2] - vertices[i]).Length;
                double c = (vertices[i + 2] - vertices[i + 1]).Length;

                area += GetTriangleArea(a, b, c);
            }

            return(area);
        }