Mam kartę do rysowania na płótnie i chcę, aby lineWidth była oparta na odległości między dwiema ostatnimi aktualizacjami współrzędnych myszy. Sam dokonam translacji odległości na szerokość, muszę tylko wiedzieć, jak obliczyć odległość między tymi punktami (mam już współrzędne tych punktów).
javascript
canvas
Anagmate
źródło
źródło
x1 - x2, y1 - y2
czyx2 - x1, y2 - y1
?7 - 5 = 2
czy5 - 7 = -2
nie ma znaczenia.-2 * -2 = 4
2 * 2 = 4
Należy pamiętać, że
Math.hypot
jest to część standardu ES2015. Dokument MDN zawiera również dobre wypełnienie dla tej funkcji.Uzyskanie dystansu staje się więc tak proste, jak
Math.hypot(x2-x1, y2-y1)
.źródło
http://en.wikipedia.org/wiki/Euclidean_distance
Jeśli masz współrzędne, użyj wzoru, aby obliczyć odległość:
Jeśli Twoja platforma obsługuje
**
operatora , możesz zamiast tego użyć:źródło
Odległość między dwiema współrzędnymi x i y! x1 i y1 to pierwszy punkt / pozycja, x2 i y2 to drugi punkt / pozycja!
źródło
Math.abs
zamiastdiff
.diff
ponieważ podniesienie liczby do kwadratu zawsze da w wyniku liczbę dodatnią. Jeślix1 - y1
jest ujemne,(x1 - y1) ^ 2
nadal jest pozytywne.Zwykle często używam tego obliczenia w rzeczach, które tworzę, więc lubię dodawać je do obiektu Math:
Aktualizacja:
to podejście jest szczególnie przyjemne, gdy znajdziesz się w sytuacjach podobnych do tego (często robię):
ta okropna rzecz staje się znacznie łatwiejsza do opanowania:
źródło