Средняя высота точки на основе ближайших точек - PullRequest
0 голосов
/ 18 июня 2020

У меня в игре ситуация. Я экспериментирую с генерацией ландшафта.

У меня есть несколько пиков, положение и высоту которых я знаю. У меня есть точка, окруженная всеми этими вершинами. Я знаю свою позицию. Я пытаюсь вычислить высоту этой точки.

Я хотел бы рассчитать высоту этой точки, основываясь на том, насколько близко / далеко она находится к каждой из этих вершин, и высоте каждой из этих вершин .

Пример: пик 1 находится в точке (0,0), с высотой 500, пик 2 находится на (100,100), с высотой 1000, пик 3 находится на (0,100), с высотой 750

Если моя точка находится в (99,99), я хочу, чтобы высота этой точки была как можно ближе к 1000.

Как называется эта проблема? Если у вас уже есть решение для этой проблемы, это тоже будет очень полезно.

Примечание : Кроме того, будет полезно, если формула / уравнение также позволяет мне генерировать отрицательные отметки. например, точка на полпути между всеми пиками также может находиться ниже уровня моря. Любая формула, которую я могу придумать, обычно дает мне только положительные результаты. Я предполагаю, что для того, чтобы это допустить, необходимо рассмотреть какой-то «наклон».

Одно уравнение, которое я до сих пор использовало, это P1.height * (Sum of all distances - distance from P1)/(Sum of all distances) + P2.height * (Sum of all distances - distance from P2)/(Sum of all distances) + ... Pn.height * (Sum of all distances - distance from Pn)/(Sum of all distances)

Спасибо.

1 Ответ

0 голосов
/ 18 июня 2020

Чтобы нарисовать вершины, ваша игра должна преобразовать координаты вершин в координаты экрана. Такой расчет обычно выполняется путем умножения матрицы на вектор, содержащий координаты (в java AWT такая матрица будет называться преобразованием). Вам нужна обратная матрица, чтобы вы могли применить ее к координатам экрана. Итак, решение:

  • получить матрицу, которая используется для рендеринга ландшафта
  • вычислить обратную матрицу
  • применить ее к координатам экрана

И было бы даже более эффективно не использовать исходную матрицу для вычисления обратной матрицы, а использовать параметры (нулевая точка, масштабные коэффициенты и угол поворота), которые использовались для вычисления исходной матрицы. Эти же параметры можно использовать для вычисления обратной матрицы.

...