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

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

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

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

Хотя бы минимальное расстояние между наиболее близко расположенными точками этих множеств, по расстоянию уже будет понятно.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.01.2018, 14:50
Ответы с готовыми решениями:

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

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

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

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

14
the hardway first
Эксперт JS
2461 / 1836 / 906
Регистрация: 05.06.2015
Сообщений: 3,603
07.01.2018, 22:02 2
Ну надо с чего-то начинать. Давайте я за вас начну: создадим точку на плоскости, у которой есть две координаты 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
  #3

Не по теме:

Вот вам еще формула нахождения расстояния между точками в пространстве 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  [ТС] 4
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 5
j2FunOnly,
abs() не надо добавить?
0
the hardway first
Эксперт JS
2461 / 1836 / 906
Регистрация: 05.06.2015
Сообщений: 3,603
08.01.2018, 20:29 6
klopp, зачем? Всё равно разница в квадрат возводится.
2
28 / 22 / 15
Регистрация: 29.11.2017
Сообщений: 75
08.01.2018, 20:33 7
Корень четной степени из отрицательного числа не извлекается, но а расстояние может быть отрицательным.
0
566 / 465 / 183
Регистрация: 14.10.2017
Сообщений: 1,259
08.01.2018, 20:35 8
j2FunOnly, ааааааа,точно,сначала же в степень,потом корень
0
28 / 22 / 15
Регистрация: 29.11.2017
Сообщений: 75
08.01.2018, 20:58 9
Хэй, о чем вы? Координаты могут быть отрицательными
http://www.cleverstudents.ru/v... point.html
Или я чет не так понимаю
0
the hardway first
Эксперт JS
2461 / 1836 / 906
Регистрация: 05.06.2015
Сообщений: 3,603
08.01.2018, 21:07 10
МихаилБасов, ну и что? Нам же в итоге надо найти сумму квадратов, квадрат любого числа является положительным. Или я что-то забыл?
0
28 / 22 / 15
Регистрация: 29.11.2017
Сообщений: 75
08.01.2018, 21:15 11
Да, понял. Я чет туплю..
0
the hardway first
Эксперт JS
2461 / 1836 / 906
Регистрация: 05.06.2015
Сообщений: 3,603
08.01.2018, 21:15 12
Цитата Сообщение от 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  [ТС] 13
j2FunOnly, Спасибо, очень грамотно объясняете
0
0 / 0 / 0
Регистрация: 23.02.2021
Сообщений: 48
13.05.2021, 19:33 14
Здравствуйте, извините за вопрос, но вы можете объяснить: вы использовали объекты чтобы написать этот код или как ?
0
1115 / 762 / 194
Регистрация: 21.05.2016
Сообщений: 1,859
13.05.2021, 20:52 15
Lesr, используются объекты и этого не изменить.
0
13.05.2021, 20:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.05.2021, 20:52
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru