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