Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   mp.Vector3 Помогите, кто знает) (https://javascript.ru/forum/css-html/79068-mp-vector3-pomogite-kto-znaet.html)

Georgie0409 12.12.2019 23:29

mp.Vector3 Помогите, кто знает)
 
Уж извините, если не сюда написал)

Мне надо сделать так, чтобы сравнило мои координаты с другими координатами, и нашло самые ближайшие ко мне, а затем вывело их в консоль. Мои координаты находятся в переменной myPos. А координаты других людей в массиве otherPosition;

myPos = {x: 2000, y: 1000, z: 500};

otherPosition = [
   {x: 2500, y: 1200, z: 600},
   {x: 2300, y: 1200, z: 490},
   {x: 2150, y: 1400, z: 400}
]

MallSerg 13.12.2019 00:08

Ищи что такое

1. векторная аглебра
2. Разница векторов
3. Длина вектора

Rise 13.12.2019 01:06

Georgie0409,
Здесь обычная теорема Пифагора, просто добавится еще одно измерение. Длины векторов по ней находятся, чем длина короче, тем ближе.
alert(Math.min(Math.hypot(2000-2500,1000-1200,500-600),Math.hypot(2000-2300,1000-1200,500-490)))

Georgie0409 13.12.2019 13:09

Привет, спасибо, вроде бы получилось.
Хотел спросить ещё, как узнать под каким номером в массиве находятся самые близкие ко мне координаты? Я понимаю, что надо сделать через цикл к примеру for, но как именно в данном случае?

рони 13.12.2019 14:08

поиск индекса ближайшей точки
 
Georgie0409,
const myPos = {x: 2000, y: 1000, z: 500},
otherPosition = [
   {x: 2500, y: 1200, z: 600},
   {x: 2300, y: 1200, z: 490},
   {x: 2150, y: 1400, z: 400}
], index = otherPosition.reduce(({min, index}, {x,y,z}, i) => {
const temp = Math.hypot(myPos.x-x,myPos.y-y,myPos.z-z)
if(temp < min) {min = temp, index = i};
return {min, index}
}, {min : Number.POSITIVE_INFINITY}).index;
alert(index);

рони 14.12.2019 14:01

Цитата:

Сообщение от Rise
Что-то не сходится у тебя индекс 2, а у меня 1 видимо, кто не прав?

исправил опечатку у себя в 7 строке, пост #5. сейчас тоже 1.

X-Clusiv 19.12.2019 09:56

Цитата:

Сообщение от Georgie0409 (Сообщение 517397)
Уж извините, если не сюда написал)

Мне надо сделать так, чтобы сравнило мои координаты с другими координатами, и нашло самые ближайшие ко мне, а затем вывело их в консоль. Мои координаты находятся в переменной myPos. А координаты других людей в массиве otherPosition;

myPos = {x: 2000, y: 1000, z: 500};

otherPosition = [
   {x: 2500, y: 1200, z: 600},
   {x: 2300, y: 1200, z: 490},
   {x: 2150, y: 1400, z: 400}
]

Ragemp привет)


Часовой пояс GMT +3, время: 16:10.