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