Мне нужно сравнить точки двух разных путей, чтобы увидеть, похожи ли они.Как сравнить точки двух разных путей (массив точек)
Моя проблема в том, что оба пути имеют разные отправные точки. Эти пути также не являются простыми прямоугольниками, поэтому я не думаю, что могу изменить порядок массива на основе наименьших значений x и y.
Я попытался это:
function orderPoints(points) {
var smallestX;
var smallestY;
var smallestIndex;
for (var i = 0; i < points.length; i++) {
if (!smallestX) {
smallestX = points[i].x;
smallestIndex = i;
smallestY = points[i].y;
} else {
if (points[i].x < smallestX && points[i].y < smallestY) {
smallestX = points[i].x;
smallestY = points[i].y;
smallestIndex = i;
}
}
}
//reorder array
var newArray = [];
for (var i = smallestIndex; i < points.length; i++) {
newArray.push(points[i])
}
for (var i = 0; i < smallestIndex; i++) {
newArray.push(points[i])
}
//console.log(newArray)
return newArray;
}
Это не похоже на работу. Я знаю, что эти два пути очень похожи и должны только иметь небольшую разницу. Но разница, которую я получаю, выглядит некорректной, поэтому я думаю, что «начальная точка» обоих точечных массивов неверна. Есть идеи ?
Вот JSFiddle с моим текущим кодом: https://jsfiddle.net/thatOneGuy/5b3646zj/
Вы можете попробовать перерасчета оба пути, как если бы они начинались с 0,0 путем вычитания первой точки пути из всех точек пути. Тогда версия JSON.stringify обоих путей должна быть одинаковой, если они имеют ту же самую форму. – Shilly
@Shilly, вы можете представить пример, поскольку я не вижу, как это будет работать, поскольку оба пути имеют разные стартовые точки. – thatOneGuy
Пожалуйста, более точно определите «похожие пути». Вы хотите проверить, является ли путь # 2 точным переводом пути №1? Или вы хотите вычислить какой-то счет сходства? – Arnauld