Ich habe eine Registerkarte zum Zeichnen von Zeichenflächen und möchte, dass die Linienbreite auf dem Abstand zwischen zwei letzten Aktualisierungen der Mausbewegungskoordinaten basiert. Ich werde den Abstand in die Breite selbst übersetzen. Ich muss nur wissen, wie ich den Abstand zwischen diesen Punkten erhalte (ich habe bereits Koordinaten dieser Punkte).
javascript
canvas
Anagmate
quelle
quelle
x1 - x2, y1 - y2
oderx2 - x1, y2 - y1
?7 - 5 = 2
oder5 - 7 = -2
nicht, spielt keine Rolle.-2 * -2 = 4
2 * 2 = 4
Beachten Sie, dass dies
Math.hypot
Teil des ES2015-Standards ist. Es gibt auch eine gute Polyfüllung im MDN-Dokument für diese Funktion.So wird die Entfernung so einfach wie
Math.hypot(x2-x1, y2-y1)
.quelle
http://en.wikipedia.org/wiki/Euclidean_distance
Wenn Sie die Koordinaten haben, verwenden Sie die Formel, um die Entfernung zu berechnen:
Wenn Ihre Plattform den
**
Operator unterstützt , können Sie stattdessen Folgendes verwenden:quelle
Der Abstand zwischen zwei Koordinaten x und y! x1 und y1 ist der erste Punkt / Position, x2 und y2 ist der zweite Punkt / Position!
quelle
Math.abs
anstelle von verwendendiff
.diff
da das Quadrieren einer Zahl immer zu einer positiven Zahl führt. Wennx1 - y1
negativ ist,(x1 - y1) ^ 2
ist immer noch positiv.Ich neige dazu, diese Berechnung häufig in Dingen zu verwenden, die ich mache, deshalb füge ich sie gerne dem Math-Objekt hinzu:
Aktualisieren:
Dieser Ansatz ist besonders erfreulich, wenn Sie in ähnlichen Situationen landen (was ich oft tue):
das schreckliche Ding wird umso überschaubarer:
quelle