Решить задачу. Расширить текущую строку и получить значение - PullRequest
0 голосов
/ 09 января 2020

Я ищу решение для этой задачи. Язык C#.

Существует система координат X и Y. Задача состоит в том, чтобы растянуть текущую строку под тем же углом и вывести значение этой линии через указанное количество шагов по шкале Х.

Например: каким будет значение Y, когда значение X будет go до 20? Как я могу кодировать это?

Изображение ниже является примером того, что мне нужно получить:

Example

Также, если можете, объясните пожалуйста код. Проблема в том, что линия в задаче может находиться под случайным углом в каждой задаче.

1 Ответ

0 голосов
/ 09 января 2020

Если вы хотите получить прямую линию , вы можете поставить

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);
}

Демо (одна точка)

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...