Member 14422952 Ответов: 1

Теорема Пифагора для проверки того, находится ли ячейка внутри радиуса


У меня есть размеры матрицы и данные клетки с радиус.

Итак, давайте рассмотрим этот пример:
https://i.imgur.com/51hTJpv.png[Матрица]
Матрица имеет 5 рядов и 6 колонок Нам дают клетку . (2, 3) с радиус 2 Он оказывает воздействие, и он разрушает все предметы в определенном радиусе (the мобильный влияние находится в тени черный и другие ячейки в пределах радиуса находятся затененные серыйЯ обнаружил, что могу использовать теорему Пифагора, чтобы проверить, находится ли ячейка внутри радиуса:
if (Math.Pow(targetRow - row, 2) + Math.Pow(targetColumn - col, 2) <= radius * radius)
{
    matrix[row, col] = 1; 
}

Я не понимаю, почему это работает, и я был бы очень признателен, если бы вы могли объяснить мне это. Я пытался отладить его, но все равно ничего не понял.

Что я уже пробовал:

if (Math.Pow(targetRow - row, 2) + Math.Pow(targetColumn - col, 2) <= radius * radius)
{
    matrix[row, col] = 1; 
}

1 Ответов

Рейтинг:
4

OriginalGriff

Это элементарная математика.
targetRow - row это горизонтальное расстояние от цели до центра вашего круга с радиусом radius, и targetColumn - col это вертикальное расстояние. То radius по определению никогда не короче самого длинного из абсолютных значений этих двух, поэтому это всегда гипотенуза. Поскольку квадрат любого числа всегда равен нулю или положителен, ваши квадраты двух других сторон всегда положительны, и Пифагор говорит нам, что корень(x2 + год2) - это расстояние от центра до вашей точки. Если это меньше радиуса, то ваша точка находится внутри круга.


Member 14422952

Спасибо Вам за ваш ответ! Я действительно ценю это. Но где же круги? Вот что меня смущает.

OriginalGriff

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

Нарисуйте это на бумаге, и вы поймете, что я имею в виду!

Member 14422952

Но разве я не могу вычислить расстояние между точками по этой формуле и сравнить его с заданным радиусом? https://www.mathplanet.com/education/algebra-2/conic-sections/distance-between-two-points-and-the-midpoint

OriginalGriff

Вот что вы делаете!

0x01AA

Похоже на <SUP-серфинг&ГТ;АБВ&ЛТ;/SUP-серфинг&ГТ; конфликты внутри на <код> В теге

одинАБВ
против.
a<sup>xyz</sup>

OriginalGriff

Исправлено! Спасибо!