Amanda1652 Ответов: 2

Напишите функцию javascript, которая вычисляет евклидово расстояние между двумя точками.


array1=(0,0,0);
array2=(1,1,1);
function eucDist (array1, array2){
 let distance => for(i=0, i=3, i++){
   
 }
  return distance
  Math.sqrt(Math.pow(x2 - x1, 2) +  
                Math.pow(y2 - y1, 2) * 1.0);
}

console.log(array1(0,1,3),array2(4,5,6));


Что я уже пробовал:

Это то, что у меня есть до сих пор, и я не уверен, что я должен сделать, чтобы заставить его работать.

Richard MacCutchan

Знаете ли вы формулу для вычисления евклидова расстояния? Если нет, то Гогл, вероятно, найдет его для вас.

2 Ответов

Рейтинг:
2

OriginalGriff

Посмотри на свой код.
Как должна выполняться линия, вычисляющая Евклидово расстояние?
Либо есть какой-то return строка над ней, в которой отсутствует точка с запятой, или выражение, которое она возвращает, не является допустимым выражением.


Рейтинг:
1

phil.o

array1=(0,0,0);
array2=(1,1,1);
Это не то, как вы объявляете массивы в javascript.
массивы JavaScript[^]

function eucDist (array1, array2)
Вы никогда не используете array1 и array2 параметры внутри функции.

for(i=0, i=3, i++)
Это объявление синтаксиса цикла for неверно.
JavaScript для цикла[^]
Более того, поскольку тело цикла пусто, оно бесполезно.

return distance
Math.sqrt(Math.pow(x2 - x1, 2) +  
                Math.pow(y2 - y1, 2) * 1.0);
Как указано в решении 1, это приведет к синтаксической ошибке.
Более того, это формула для вычисления евклидова расстояния в двумерном пространстве, тогда как ваши исходные массивы предполагают, что вы имеете дело с координатами в трехмерном пространстве.
Кроме того, умножение любого значения на 1 бесполезно и может быть упрощено путем полного удаления умножения.
Наконец, часто более эффективно, с точки зрения производительности, возводить число в квадрат, умножая его на себя, а не используя Math.pow() функция.

console.log(array1(0,1,3),array2(4,5,6));
Это не вызовет eucDist функция.

Я бы посоветовал в первую очередь вычислить разницу между обеими координатами, измерение за измерением, а затем использовать эти дельты для вычисления расстояния:
function eucDist(lhs, rhs)
{
   let deltaX = rhs[0] - lhs[0];
   let deltaY = rhs[1] - lhs[1];
   let deltaZ = rhs[2] - lhs[2];
   return Math.sqrt
   (
      deltaX * deltaX + deltaY * deltaY + deltaZ * deltaZ
   );
}