Ich muss die Punkte zweier verschiedener Pfade vergleichen, um festzustellen, ob sie sich ähneln.So vergleichen Sie Punkte zweier verschiedener Pfade (Punktarray)
Mein Problem ist, beide Wege haben unterschiedliche Startpunkte. Diese Pfade sind auch keine einfachen Rechtecke, daher glaube ich nicht, dass ich das Array basierend auf den kleinsten x- und y-Werten neu anordnen kann.
Ich habe dies versucht:
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;
}
Dies nicht zu funktionieren scheint. Ich weiß, dass diese beiden Wege sehr ähnlich sind und nur einen sehr kleinen Unterschied haben sollten. Aber der Unterschied, den ich zurückbekomme, sieht falsch aus, daher denke ich, dass der "Startpunkt" beider Punktarrays falsch ist. Irgendwelche Ideen ?
Hier ist ein JSFiddle mit meinem aktuellen Code: https://jsfiddle.net/thatOneGuy/5b3646zj/
Sie könnten versuchen, neu zu berechnen beide Pfade, als würden sie von 0,0 ausgehen, indem sie den ersten Punkt des Pfades von allen Punkten im Pfad subtrahieren. Dann sollte die JSON.stringify-Version beider Pfade identisch sein, wenn sie die exakt gleiche Form haben. – Shilly
@Silly sind Sie in der Lage, ein Beispiel zu geben, da ich nicht sehen kann, wie das funktionieren würde, da beide Pfade unterschiedliche Startpunkte haben – thatOneGuy
Bitte definieren Sie 'ähnliche Pfade' genauer. Möchten Sie testen, ob Pfad # 2 eine exakte Übersetzung von Pfad # 1 ist? Oder möchten Sie eine Art Ähnlichkeits-Score berechnen? – Arnauld