如何从 C# 中的折线图的已知 Y 值获取 X 值?

How to get the X value from a known Y value for a line chart in C#?

我正在用 C# 创建一个图表,其中绘制了 X 值(距离)与 Y(时间)的关系。 该图有两条线:一条用于比较的线(我们可以称为 IdealDistance)和一条从外部输入生成的线(RealDistance)。

我想在添加时将 RealDistance X 值与 IdealDistance X 值进行比较,但不知道如何 return 已知时间的 IdealDistance X 值(或 IdealDistance Y 值).

IdealDistance 线由每秒间隔开的多个数据点组成,所需的检查每 100 毫秒进行一次,因此不幸的是不能简单地使用 IdealDistance 数据点集。

如果你取两个数据点(a 和 b),你可以使用直线方程得到它们之间的任何 X 点的 Y(或任何 Y 点的 X):

public static int GetX(int y, Point a, Point b)
{
    var m = CalculateSlope(a, b);

    // Horizontal line (x-values are always the same)
    if (m == 0.0)
        return a.X;

    var c = a.Y - a.X * m;

    return Convert.ToInt32((y - c) / m);
}

public static int GetY(int x, Point a, Point b)
{
    var m = CalculateSlope(a, b);

    // Vertical line (y-values are always the same)
    if (double.IsPositiveInfinity(m))
        return a.Y;

    var c = a.Y - a.X * m;

    return Convert.ToInt32(m * x + c);
 }


public static double CalculateSlope(Point a, Point b)
{
    if (b.Y == a.Y)
        return double.PositiveInfinity;

    if (b.X == a.X)
        return 0.0;

    return (Convert.ToDouble(b.Y) - Convert.ToDouble(a.Y)) / (Convert.ToDouble(b.X) - Convert.ToDouble(a.X));
}