Здравствуйте. Как бы вы решили данную задачу? Какой метод более удобный для её решения?
//
Найти расстояние между двумя точками на плоскости:
point1 = [0, 0];
point2 = [3, 4];
calculateDistance(point1, point2); // 5
//
С геометрии помнится что-то про точки. Что у них есть координаты которые в школе кодировались символами X и Y. В задаче тоже есть точки и у них тоже есть координаты которые кодируются массивом. Я предположу что первый элемент массива соответствует Х а второй Y. Дальше вспоминая читая в интернете смотрю как считается расстояние между точками
И теперь, имея на руках координаты точек и формулу как считается расстояние между точками, выражаем формулу в доступном языке программирования. Квадратный корень считается функцией (а точне статичным методом класса Math
) Math.sqrt
. Этот последний шаг за тобой.
Из всего этого я одно понял, что Геометрия не моё… Но попытаться стоило.
Лирика
Куча задач и примеров в программировании использует математические формулы и концепции. Это делается частичто по историческим причинам (программирование вырастало из математики), частично из-за близости тем (математикам проще вникать в программирование в виду схожести подходов - и там и там моделируются части реальности с помощью символов). Предполагается что человек, изучающий программирование уже знает и понимает базовую математику-геометрию. Но.
Но с включением все более широкого круга людей в программирование, приходит все большей людей которые или далеки от математики или по той или иной причине не имеют понимания основ. Для них решение подобных задач превращается в двойное упражнение: изучение и математического-геометрического концепта и изучение программирования.
В своем комментарии я так же предположил что ты знаком с основами. Если с ними нет опыта, то и подходить к задаче нужно по-другому. Сначала понять основы а потом понять как переложить свое понимание основ в язык программирования.
Кстати, я знаю людей которые не имеют основ математики и геометрии (не достанут формулу из головы или не поймут формулу написанную на основе 7 класса школы, не посчитают проценты влет итд). И эти люди успешно выучились в программисты и сейчас успешно работают.
Решение задачи
В геометрии точка на плоскости моделируется двумя числами. Их еще называют координаты. Координаты это расстояние от перпендикулярных линий, выходящих из точки которую называют начало координат.
Картинка из интернета для наглядности.
Там где 0 это начало координат. В принципе начало координат может быть в любом месте, это понятие относительное. Например для кодировани позиции пикселя монитора используется точка отсчета в левом верхнем углу. Тут можно посмотреть на интерактивный пример. Если подвигать курсор в сторону от левого верхнего угла демки, видно что числа, кодирующие координаты курсора растут. Coordinate systems - CSS: Cascading Style Sheets | MDN
Обратно к задаче. Формула расстояния между точками
Про формулу расстояния (думаю что про все формулы в принципе) можно думать как про преобразование одного набора данных (координат точек) в другой набор (число - расстояние между точками).
Следущим шагом мы должны “подставить” значения координат в соответствующие места формулы, а математические операции выразить в терминах джаваскрипта (квадраты и квадратный корень, плюсы-минусы).
Квадратный корень моделируется в js через Math.sqrt
. Остальные операции уже известны (квадрат числа это число умноженное на себя, плюс-минус уже понятен).
Я использую промежуточные переменные чтобы было удобно умножать числа сами на себя.
const p1 = [0, 0];
const p2 = [3, 4];
function calculateDistance(point1, point2) {
let diff1 = point1[0] - point2[0] // первая координата
let diff2 = point1[1] - point2[1] // вторая координата
return Math.sqrt(diff1 * diff1 + diff2 * diff2)
}
console.log(calculateDistance(p1, p2))