C# 解决任务。扩展当前行并获取值

C# 解决任务。扩展当前行并获取值,c#,math,C#,Math,我正在寻找这个任务的解决方案。语言是C 有一个X和Y坐标系。 任务是以相同的角度延伸当前行,并在X刻度上按指定的步数打印该行的值 例如:当X值变为20时,Y值是多少? 我如何编写代码 下图是我需要获得的示例: 如果可以,请解释代码。问题是,任务中的线条可能在每个任务中以随机角度排列 如果你想得到一条海峡线,你可以 private static Func<double, double> Linear(double x1, double y1, double x2, double y2)

我正在寻找这个任务的解决方案。语言是C

有一个X和Y坐标系。 任务是以相同的角度延伸当前行,并在X刻度上按指定的步数打印该行的值

例如:当X值变为20时,Y值是多少? 我如何编写代码

下图是我需要获得的示例:

如果可以,请解释代码。问题是,任务中的线条可能在每个任务中以随机角度排列

如果你想得到一条海峡线,你可以

private static Func<double, double> Linear(double x1, double y1, double x2, double y2) {
  if (x1 == x2) // Special case : vertical line
    if (y1 == y2)
      return (x) => y1 + x - x1;
    else
      return (x) => x == x1 ? 0.0 : double.NaN;
  else
    return (x) => y1 + (y2 - y1) / (x2 - x1) * (x - x1);
}
结果:

表:

结果:


请提供一些您的方法代码,以获得更好的帮助,我很乐意,但不幸的是,我只是学习编程。我不知道如何做到这一点:你的数学直线知识告诉了你什么?或者你能在一张纸上做这个吗?如果不是,那就不是编程问题。计算机不能变魔术。你需要自己弄清楚怎么做,只有这样你才能想出一种方法让电脑来做。我只知道一条线的方程式y=mx+c。但是如何在代码中使用。我知道我需要用它来计算下一个值。但我不知道到底是怎么回事
var func = Linear(1, 10, 10, 50);

Console.Write(func(20));
94.4444444444444
string report = string.Join(Environment.NewLine, Enumerable
  .Range(0, 21)
  .Select(x => $"{x,2} : {func(x)}"));

Console.Write(report);
 0 : 5.55555555555556
 1 : 10               <- Given Point
 2 : 14.4444444444444
 3 : 18.8888888888889
 4 : 23.3333333333333
 5 : 27.7777777777778
 6 : 32.2222222222222
 7 : 36.6666666666667
 8 : 41.1111111111111
 9 : 45.5555555555556
10 : 50               <- Given Point
11 : 54.4444444444444
12 : 58.8888888888889
13 : 63.3333333333333
14 : 67.7777777777778
15 : 72.2222222222222
16 : 76.6666666666667
17 : 81.1111111111111
18 : 85.5555555555556
19 : 90
20 : 94.4444444444444 <- Required Point