【问题标题】:Intersection of 2 lines - numerical analysis两条线的交点 - 数值分析
【发布时间】:2021-12-18 20:30:24
【问题描述】:

我有 2 个二维数组,代表 2 条线/曲线,类似于:

(y1,t1) (y2,t2) ... (yN, tN)

(Y1, t1) (Y2, t2) ... (YN, tN)

我的目标是在 2 条线/曲线的交点之前找到数组开头的最后一个点。

我试过比较

if ( (y1 > Y1 && y2 < Y2) || (y1 < Y1 && y2 > Y2) || (y1 == Y2) )

为了 t0 找到交点但它不起作用或由于点数很多,验证结果非常困难。

在 C# 中是否有使用开源数值分析库的优雅解决方案,我需要做的就是将 2 个数组输入函数并获得交集?

【问题讨论】:

  • 它们是直线还是曲线(即,是一组共线中的点)。顺便说一句,将这样的点显示为 (Yn, Tn) 有点不寻常。通常是 (Tn, Yn) (因为时间会显示在 "x-axis"
  • 请注意,要求图书馆是题外话,就像要求“优雅”的解决方案一样,没有客观地定义“优雅”的含义。
  • Heretic Monkey - 我猜你没有把问题读到最后 - “优雅”的定义立即如下:“将 2 个数组输入函数并获得交集”

标签: c# arrays numeric intersection


【解决方案1】:

在 c# 上,您的算法如下所示:

public void FindFirstIntersection(int[,] curve1, int[,] curve2)
    {
        for (var i = 0; i < curve1.Length - 1; i++)
        {
            var curve1Point = curve1[i, 0];
            var curve2Point = curve2[i, 0];

            var curve1NextPoint = curve1[i + 1, 0];
            var curve2NextPoint = curve2[i + 1, 0];

            if (curve1Point > curve2Point && curve1NextPoint < curve2NextPoint ||
                curve1Point < curve2Point && curve1NextPoint > curve2NextPoint ||
                curve1Point == curve2Point)
            {
                //Do smth
            }
        }
    }

【讨论】:

  • 这是正确的,但我正在寻找一个数值分析库来简单地调用一个将 2 个数组传递给它的函数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-05
  • 2021-10-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多