我在c#的图表中有两个系列。我只想获得这两个系列之间的区域。这些系列相互连接。
我附上了图表图片。
这里有两个系列。例如Series1和Series2。如果series2越过系列1,则不考虑该区域。只有当series2低于series1时,此区域才需要计算。
答案 0 :(得分:3)
static void Main(string[] args)
{
List<Point> Points1 = new List<Point>();
//Points1.Add(); assign your series points
List<Point> Points2 = new List<Point>();
//Points2.Add(); assign your series points
Series Series1 = new Series(Points1);
Series Series2 = new Series(Points2);
var betweenArea = Math.Abs(Series1.Area() - Series2.Area());
}
public class Series
{
List<Point> Points { get; set; }
public Series(List<Point> points)
{
Points = points;
}
public double Area()
{
double Area = 0;
var points = Points.OrderBy(P => P.X).ToList();
for (int i = 0; i < points.Count - 1; i++)
{
Point Point1;
Point Point2;
if (points[i].Y < points[i + 1].Y)
{
Point1 = points[i];
Point2 = points[i + 1];
}
else
{
Point1 = points[i + 1];
Point2 = points[i];
}
Area += Point1.Y * (Math.Abs(Point1.X - Point2.X));
Area += ((Math.Abs(Point1.Y - Point2.Y)) * (Math.Abs(Point1.X - Point2.X)))/2;
}
return Area;
}
}
public class Point
{
public double X { get; set; }
public double Y { get; set; }
}
答案 1 :(得分:2)
您可以为区域see here着色,但计算其区域是数学问题。
我将如何做到这一点:
w*h
,三角形的区域为w*h/2
。只是一些简单的步骤。更难的部分是跟踪起点和终点以及空和特殊情况。