С Новым годом! Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 07.01.2018
Сообщений: 12

Найти наиболее близко расположенные друг к другу координаты из двух множеств

07.01.2018, 14:50. Показов 2058. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток! Помогите создать программу которая сможет найти: наиболее близко расположенные (либо совпадающие) друг к другу координаты (точки) из двух множеств.

Хотя бы минимальное расстояние между наиболее близко расположенными точками этих множеств, по расстоянию уже будет понятно.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.01.2018, 14:50
Ответы с готовыми решениями:

Найти наиболее близко расположенные друг к другу Координаты из двух множеств
Доброго времени суток! Помогите создать программу которая сможет найти: наиболее близко расположенные (либо совпадающие) друг к другу...

Наиболее близко расположенные друг к другу координаты из двух множеств
Доброго времени суток! Помогите создать программу которая сможет найти: наиболее близко расположенные (либо совпадающие) друг к другу...

Структура SPoint. Найти две наиболее близко расположенных друг к другу точки
Используя структуру SPoint для хранения координат точки: Найти две наиболее близко расположенных друг к другу точки. Прошу помощи с...

14
the hardway first
Эксперт JS
 Аватар для j2FunOnly
2475 / 1847 / 910
Регистрация: 05.06.2015
Сообщений: 3,610
07.01.2018, 22:02
Ну надо с чего-то начинать. Давайте я за вас начну: создадим точку на плоскости, у которой есть две координаты x и y.
JavaScript
1
2
3
4
var Point = function(x, y) {
  this.x = x;
  this.y = y;
}
Дальше можно научить такую точку определять расстояние до другой точки по формуле https://www.cyberforum.ru/cgi-bin/latex.cgi?\sqrt{{({x}_{2} - {x}_{1})}^{2} + {({y}_{2} - {y}_{1})}^{2}}
JavaScript
1
2
3
Point.prototype.distanceTo = function(other) {
  return Math.sqrt(Math.pow(other.x - this.x, 2) + Math.pow(other.y - this.y, 2));
}
Для удобства отображения таких точек надо переопределить toString(), пусть отображаются в виде [x, y]
JavaScript
1
2
3
Point.prototype.toString = function() {
  return '[' + this.x + ', ' + this.y + ']';
}
Итого мы можем создавать точки, находить расстояние между ними и выводить в читаемом формате, например:
JavaScript
1
2
3
4
var a = new Point(2, 2),
  b = new Point(2, 4);
 
console.log('Distance between ' + a + ' and ' + b + ' is ' + a.distanceTo(b) + '.');
https://codepen.io/anon/pen/VyroeQ?editors=0011

Теперь осталось создать два множества точек, обойти все комбинации из одной точки первого множества к любой точке второго множества и найти минимальное расстояние.
3
08.01.2018, 09:34

Не по теме:

Вот вам еще формула нахождения расстояния между точками в пространстве https://www.cyberforum.ru/cgi-bin/latex.cgi?{\sqrt[2]{({x}_{2} - {x}_{1})^2 + ({y}_{2} - {y}_{1})^2 + ({z}_{2} - {z}_{1})^2}}
Мб, пригодится)

0
0 / 0 / 0
Регистрация: 07.01.2018
Сообщений: 12
08.01.2018, 16:24  [ТС]
j2FunOnly, Спасибо за помощь, а как быть с расчетом множества координат, тем же массивом

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var Point = function(x, y) {
  this.x = x;
  this.y = y;
}
 
Point.prototype.distanceTo = function(other) {
  return Math.sqrt(Math.pow(other.x - this.x, 2) + Math.pow(other.y - this.y, 2));
}
 
Point.prototype.toString = function() {
  return '[' + this.x + ', ' + this.y + ']';
}
 
var a = new Point[(127, 597), (541, 246), (510, 261), (516, 136), (556, 542), (81, 538), (402, 6), (13, 67), (160, 598), (254, 531)],
  b = new Point[(489, 335), (298, 273), (432, 101), (596, 547), (243, 200), (182, 162), (497, 343), (115, 478), (80, 214), (180, 192)];
 
console.log('Distance between ' + a + ' and ' + b + ' is ' + a.distanceTo(b) + '.');
запись такого рода синтаксически не верна
0
566 / 465 / 183
Регистрация: 14.10.2017
Сообщений: 1,259
08.01.2018, 20:15
j2FunOnly,
abs() не надо добавить?
0
the hardway first
Эксперт JS
 Аватар для j2FunOnly
2475 / 1847 / 910
Регистрация: 05.06.2015
Сообщений: 3,610
08.01.2018, 20:29
klopp, зачем? Всё равно разница в квадрат возводится.
2
28 / 22 / 15
Регистрация: 29.11.2017
Сообщений: 75
08.01.2018, 20:33
Корень четной степени из отрицательного числа не извлекается, но а расстояние может быть отрицательным.
0
566 / 465 / 183
Регистрация: 14.10.2017
Сообщений: 1,259
08.01.2018, 20:35
j2FunOnly, ааааааа,точно,сначала же в степень,потом корень
0
28 / 22 / 15
Регистрация: 29.11.2017
Сообщений: 75
08.01.2018, 20:58
Хэй, о чем вы? Координаты могут быть отрицательными
http://www.cleverstudents.ru/v... point.html
Или я чет не так понимаю
0
the hardway first
Эксперт JS
 Аватар для j2FunOnly
2475 / 1847 / 910
Регистрация: 05.06.2015
Сообщений: 3,610
08.01.2018, 21:07
МихаилБасов, ну и что? Нам же в итоге надо найти сумму квадратов, квадрат любого числа является положительным. Или я что-то забыл?
0
28 / 22 / 15
Регистрация: 29.11.2017
Сообщений: 75
08.01.2018, 21:15
Да, понял. Я чет туплю..
0
the hardway first
Эксперт JS
 Аватар для j2FunOnly
2475 / 1847 / 910
Регистрация: 05.06.2015
Сообщений: 3,610
08.01.2018, 21:15
Цитата Сообщение от AntiNight Посмотреть сообщение
запись такого рода синтаксически не верна
Конечно не верна new Point[(127, 597), (541, 246)] - это вы сами придумали?
Итого у нас есть массив координат, пусть это будет двумерный массив вида: [[x1, y1], [x2, y2]]. Так как множеств несколько и чтобы не писать по несколько раз одну и ту же функцию (DRY), пусть наш Point будет уметь делать массив себя из таких вот двумерных массивов координат
JavaScript
1
2
3
4
5
6
Point.fromArray = function (array) {
  var self = this;
  return array.map(function (v) {
    return new self(v[0], v[1]);
  });
}
Создаем два множества из координат:
JavaScript
1
2
3
4
5
var coorsA = [[127, 597], [541, 246], [510, 261], [516, 136], [556, 542], [81, 538], [402, 6], [13, 67], [160, 598], [254, 531]],
    coorsB = [[489, 335], [298, 273], [432, 101], [596, 547], [243, 200], [182, 162], [497, 343], [115, 478], [80, 214], [180, 192]];
 
var pointsA = Point.fromArray(coorsA),
    pointsB = Point.fromArray(coorsB);
И получим массив расстояний между точками множеств:
JavaScript
1
2
3
4
5
6
7
8
9
10
var distances = [];
for (var i = 0, l = pointsA.length; i < l; i++) {
  for (var j = 0, m = pointsB.length; j < m; j++ ) {
    distances.push({
      a: pointsA[i],
      b: pointsB[j],
      distance: pointsA[i].distanceTo(pointsB[j])
    });
  }
}
Ну вот что хотите, то и делайте с этим массивом. Надо найти две координаты с минимальным расстоянием? Пожалуйста:
JavaScript
1
2
3
4
5
var min = distances.reduce(function (min, v) {
  return min.distance < v.distance ? min : v;
});
 
console.log('Минимальное расстояние между точками ' + min.a + ' и ' + min.b + ' и составляет: ' + min.distance.toFixed(2));
https://codepen.io/anon/pen/VyroeQ?editors=0011
1
0 / 0 / 0
Регистрация: 07.01.2018
Сообщений: 12
09.01.2018, 11:32  [ТС]
j2FunOnly, Спасибо, очень грамотно объясняете
0
0 / 0 / 0
Регистрация: 23.02.2021
Сообщений: 48
13.05.2021, 19:33
Здравствуйте, извините за вопрос, но вы можете объяснить: вы использовали объекты чтобы написать этот код или как ?
0
 Аватар для Tavashi
1172 / 762 / 194
Регистрация: 21.05.2016
Сообщений: 1,858
13.05.2021, 20:52
Lesr, используются объекты и этого не изменить.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.05.2021, 20:52
Помогаю со студенческими работами здесь

Нахождение пары соседних элементов, наиболее близко расположенных друг к другу
Описать функции формирования элементов одномерного массива с помощью генератора случайных чисел и нахождения пары соседних элементов,...

Динамическая матрица (Найти координаты двух точек, наиболее удалённых друг от друга)
Дана динамическая матрица размера N*2 (N вводится). Каждая строка матрицы содержит значения координат X и Y одной точки на плоскости,...

Найти номера и координаты точек, наиболее удаленных друг от друга
Задано N точек своими координатами. Найти номера и координаты точек, наиболее удаленных друг от друга. Расстояние между точками определить...

Найти номера и координаты точек, наиболее удаленных друг от друга
Задано N точек своими координатами. Найти номера и координаты точек, наиболее удаленных друг от друга. Расстояние между точками определить...

Найти номера и координаты точек, наиболее удаленных друг от друга
Здравствуйте, кто может помогите с задачами: 1.Задано N точек своими координатами. Найти номера и координаты точек, наиболее удаленных...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru