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

У меня есть Габаритные размеры матрицы и данная ячейка с радиус.

Итак, давайте посмотрим на этот пример:

Matrix

Матрица имеет 5 рядов и 6 столбцов. Нам дана ячейка (2, 3) с радиус 2. Он оказывает влияние и уничтожает все предметы в определенном радиусе (ударная ячейка затенен чернить, а другие клетки в радиусе затенен серый). Я обнаружил, что могу использовать Теорема Пифагора, чтобы проверить, находится ли ячейка внутри радиуса:

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

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

@UK_Dev, извини, но я тебя не понял. Я учусь в 8 классе и мне сложно понять, что вы написали.

Katherine 22.05.2019 14:27
3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
2
1
222
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Это работает, потому что вы можете думать о радиусе круга как о гипотенузе прямоугольного треугольника, и, если центр круга находится в начале координат (0, 0) системы координат, координаты x и y являются двумя другими стороны (катеты).

enter image description here

Теперь назовем два катетиса a и b, а гипотенузу c. Тогда верно следующее уравнение:

c2 = a2 + b2       (теорема Пифагора)

В вашем случае a и b — это targetRow - row и targetColumn - col, а c — это radius.

Я не знаю, как реализован Math.Pow, но он работает на двойниках и стоит довольно дорого. Посчитайте с целыми числами.

int dr = targetRow - row;
int dc = targetColumn - col;
if (dr * dr + dc * dc <= radius * radius)
{
    matrix[row, col] = 1; 
}

Примечание: расстояние, рассчитанное по теореме Пифагора, равно Евклидово расстояние:

dEuclidean = √(dx2 + dy2)

Это подходит для вашей проблемы. Но есть и другие способы определения расстояния. Особенно в матрице.

Такси на Манхэттене сначала едет по оси север-юг, затем поворачивает под прямым углом и едет по оси восток-запад, чтобы добраться до цели. Это Геометрия такси. Самый короткий возможный диск называется Манхэттенское расстояние:

дManhattan = | дх | + |ди|

На шахматной доске короли и ферзи могут ходить по горизонтали, вертикали и диагонали. Минимальное расстояние в этих условиях называется Расстояние Чебышева или Шахматная дистанция.

dChebyshev = макс (| dx |, | dy |)

Я не уверен, что еще можно объяснить, кроме теоремы Пифагора, просто уравнения для окружности x^2 +y^2 = r^2.

Таким образом, в цикле вы оцениваете, попадает ли оцениваемая точка внутрь круга.

Pythagorean Theorem in Circles

Проверьте, помогает ли это: Теорема Пифагора в кругах

Другие вопросы по теме