Kalkulator kąta między wektorami 2D
Wprowadź składowe X i Y dwóch wektorów, aby znaleźć kąt między nimi w stopniach. Kalkulator wykorzystuje wzór na iloczyn skalarny i przydaje się w fizyce, geometrii oraz grafice komputerowej.
Obliczanie kąta między dwoma wektorami 2D
Wzór na kąt między dwoma wektorami 2D
Gdzie:
- \(\vec{A} \cdot \vec{B} = A_x B_x + A_y B_y\) — iloczyn skalarny dwóch wektorów
- \(|\vec{A}| = \sqrt{A_x^2 + A_y^2}\) — długość (moduł) wektora \(\vec{A}\)
- \(|\vec{B}| = \sqrt{B_x^2 + B_y^2}\) — długość (moduł) wektora \(\vec{B}\)
- \(\theta\) — kąt między dwoma wektorami
Wzór pochodzi z geometrycznej definicji iloczynu skalarnego: \(\vec{A} \cdot \vec{B} = |\vec{A}| |\vec{B}| \cos\theta\). Rozwiązując względem \(\theta\), otrzymujemy powyższe wyrażenie. Wynik funkcji \(\cos^{-1}\) jest w radianach, dlatego przelicza się go na stopnie, mnożąc przez \(\frac{180}{\pi}\) — ten kalkulator robi to za Ciebie i podaje odpowiedź w stopniach.
Kąt między dwoma wektorami 2D – przykład obliczenia
Przykład: znajdź kąt między \(\vec{V_1} = (1, 0)\) i \(\vec{V_2} = (0, 1)\).
\[ \vec{V_1} \cdot \vec{V_2} = (1)(0) + (0)(1) = 0 \]
\[ |\vec{V_1}| = \sqrt{1^2 + 0^2} = 1, \qquad |\vec{V_2}| = \sqrt{0^2 + 1^2} = 1 \]
\[ \theta = \cos^{-1}\left( \frac{0}{1 \cdot 1} \right) = \cos^{-1}(0) = 90° \]
Wynik: kąt między dwoma wektorami wynosi 90°. Wektory są prostopadłe, czego można się spodziewać po wektorach jednostkowych wzdłuż osi X i Y.
Jak korzystać z kalkulatora
- Wprowadź składową X pierwszego wektora w polu Wektor V1 - X.
- Wprowadź składową Y pierwszego wektora w polu Wektor V1 - Y.
- Wprowadź składową X drugiego wektora w polu Wektor V2 - X.
- Wprowadź składową Y drugiego wektora w polu Wektor V2 - Y.
- Odczytaj wynik Kąt między wektorami (°). Odpowiedź podawana jest w stopniach, zaokrąglona do trzech miejsc po przecinku.
Akceptowane są wartości dodatnie i ujemne, a także liczby dziesiętne. Nie trzeba najpierw normalizować wektorów — we wzorze następuje dzielenie przez długości, więc kąt jest taki sam niezależnie od długości wektorów.
Najczęściej zadawane pytania
Czy kąt między dwoma wektorami 2D można znaleźć za pomocą atan2 zamiast iloczynu skalarnego?
Tak. Oblicz kąt kierunkowy każdego wektora względem osi X: \(\alpha = \text{atan2}(A_y, A_x)\) oraz \(\beta = \text{atan2}(B_y, B_x)\). Wtedy kąt między nimi to \(|\alpha - \beta|\), a jeśli ta różnica przekracza 180°, użyj \(360° - |\alpha - \beta|\). Metoda atan2 daje naturalnie wynik ze znakiem, co jest przydatne w programowaniu gier, natomiast metoda iloczynu skalarnego zawsze zwraca kąt bez znaku.
Jaki kąt między dwoma wektorami jest typowy lub oczekiwany?
Kąt między dwoma wektorami zawsze mieści się w przedziale od 0° do 180°. 0° oznacza, że wektory są równoległe i wskazują ten sam kierunek, 90° — że są prostopadłe (ortogonalne), a 180° — że wskazują dokładnie przeciwne kierunki. Losowo wybrane wektory na płaszczyźnie dają kąty rozłożone na całym tym przedziale, więc nie ma jednej „typowej” wartości — liczy się to, czy wynik zgadza się z geometryczną intuicją co do danych wejściowych.
Jak przeliczyć wynik ze stopni na radiany?
Pomnóż wartość w stopniach przez \(\frac{\pi}{180} \approx 0{,}017453\). Na przykład 90° to \(\frac{\pi}{2} \approx 1{,}5708\) radiana, a 180° to \(\pi \approx 3{,}1416\) radiana. Radiany to domyślna jednostka w funkcjach trygonometrycznych większości języków programowania (np. cos i acos), więc ta konwersja jest potrzebna, jeśli chcesz użyć kąta w kodzie.
Co się stanie, jeśli pomnożę jeden wektor przez liczbę ujemną?
W przeciwieństwie do mnożenia przez liczbę dodatnią (które nie zmienia kąta), pomnożenie wektora przez liczbę ujemną odwraca jego kierunek, więc kąt zmienia się na \(180° - \theta\). Na przykład kąt między (1, 0) i (2, 0) wynosi 0°, ale między (1, 0) i (-2, 0) wynosi 180°. Jest to częste źródło zaskoczenia, gdy wektory powstają z odejmowania punktów, ponieważ zamiana kolejności odejmowania (B − A zamiast A − B) zmienia znak wektora.
Dlaczego moje ręczne obliczenie daje błąd lub NaN w funkcji arcus cosinus?
Iloczyn skalarny podzielony przez iloczyn długości musi mieścić się w przedziale od -1 do 1. Zaokrąglenia zmiennoprzecinkowe mogą wypchnąć go nieznacznie poza ten zakres (na przykład do 1,0000000001), a \(\cos^{-1}\) jest tam niezdefiniowana. Zwykłym rozwiązaniem jest ograniczenie (clamp) wartości do zakresu [-1, 1] przed zastosowaniem funkcji arcus cosinus. Sprawdź też, czy żaden wektor nie jest równy (0, 0) — wektor zerowy nie ma kierunku, więc kąt jest matematycznie niezdefiniowany.
Czy kąt się zmieni, jeśli wektory podam w różnych jednostkach, na przykład w metrach i centymetrach?
Oba wektory muszą być wyrażone w tych samych jednostkach, ponieważ ich składowe są mnożone przez siebie w iloczynie skalarnym. Jeśli jeden wektor jest w metrach, a drugi w centymetrach, liczby będą niespójne, a wynik będzie błędny. Najpierw przelicz oba na tę samą jednostkę. Zwróć uwagę, że sam kąt jest wielkością bezwymiarową — nie ma jednostek innych niż stopnie lub radiany.
Skąd wiem, w którą stronę obrócić jeden wektor, aby go wyrównać z drugim?
Oblicz iloczyn wektorowy 2D: \(A_x B_y - A_y B_x\). Jeśli jest dodatni, obrót od \(\vec{A}\) do \(\vec{B}\) jest przeciwny do ruchu wskazówek zegara; jeśli ujemny — zgodny ze wskazówkami zegara. Połącz jego znak z kątem z kalkulatora, aby otrzymać obrót ze znakiem. Jeśli iloczyn wektorowy jest zerowy, a iloczyn skalarny dodatni, wektory są już wyrównane; jeśli iloczyn skalarny jest ujemny, wskazują przeciwne kierunki.