Główna zawartość
Programowanie
Kurs: Programowanie > Rozdział 5
Lekcja 4: Wektory- Wprowadzenie do wektorów
- Wyzwanie: Twórca Wektorów
- Więcej matematyki wektorowej
- Wyzwanie: Miecz Świetlny
- Długość i normalizacja wektora
- Wyzwanie: Wizualizer wielkości
- Ruch wektorowy
- Wyzwanie: Hamujący Samochód
- Funkcje statyczne a metody instancyjne
- Wyzwanie: Funkcje statyczne
- Interaktywny ruch wektorowy
- Wyzwanie: Prześladowca myszki
- Projekt: Stworzenia obliczeniowe
© 2023 Khan AcademyWarunki użytkowaniapolitykę prywatnościInformacja o plikach cookie
Długość i normalizacja wektora
Mnożenie i dzielenie to sposoby na zmianę długości wektora bez zmiany kierunku, co mieliśmy okazję przed chwilą zaobserwować. Może zastanawiacie się “Ok, to w takim razie skąd wiem jak długi jest wektor? Znam współrzędne (
x
i y
), ale jak długa (w pikselach) jest sama strzałka?” Zrozumienie sposobu na obliczanie długości(nazywanej też wartością) wektora jest bardzo przydatne i ważne.Zauważcie to, że na powyższym wykresie mamy trójkąt prostokątny utworzony z wektora, narysowanego jako strzałki i dwóch współrzędnych (
x
i y
). Boki są współrzędnymi a przeciwprostokątna to strzałka. Całe szczęście, że jest to trójkąt prostokątny, ponieważ dawno temu pewien grecki matematyk Pitagoras opracował wspaniały wzór opisujący zależność pomiędzy bokami a przeciwprostokątną trójkąta prostokątnego.Twierdzenie Pitagorasa mówi, że wartość boku podniesiona do kwadratu i wartość boku podniesiona do kwadratu równa jest wartości podniesionej do kwadratu.
Za pomocą tego wzoru możemy obliczyć wartość w następujący sposób:
Kod pozwalający na implementację tego w obiekcie
PVector
wygląda tak:PVector.prototype.mag = function() {
return sqrt(this.x*this.x + this.y*this.y);
};
Poniższy przykład ukazuje wartość wektora z paskiem na górze:
Obliczanie wartości wektora to dopiero początek. Funkcja obliczająca wartość daje nam dostęp do wielu możliwości. W pierwszej kolejności omówimy normalizację. Normalizacja to proces przerabiania czegoś do postaci “standardowej” albo po prostu “normalnej.” W przypadku wektorów załóżmy, że standardowy wektor ma długość równą 1. Normalizacja wektora polega na wzięciu wektora o dowolnej długości, zachować kierunek w który jest zwrócony i zmienić jego długość na 1, zamieniając go w tak zwany wektor jednostkowy.
Skoro opisuje on kierunek wektora niezależnie od jego długości, warto, aby wektory jednostkowe były łatwo dostępne. Okaże się to bardzo przydatne gdy zaczniemy pracować z siłami w następnym rozdziale.
Dla dowolnego wektora , jego wektor jednostkowy (zapisywany jako ) jest obliczany w sposób następujący:
Innymi słowy normalizacja wektora polega po prostu na podzieleniu współrzędnych przez wartość. To całkiem intuicyjne. Powiedzmy, że wektor ma długość 5. Cóż, 5 podzielone przez 5 daje 1. Tak więc patrząc na nasz trójkąt prostokątny, musimy zredukować przeciwprostokątną dzieląc przez 5. W trakcie tej operacji boki również się zmniejszą, bo także zostaną podzielone przez 5.
W naszym obiekcie PVector umieścimy więc następującą funkcję normalizującą:
PVector.prototype.normalize = function() {
var m = this.mag();
this.div(m);
};
Oczywiście istnieje pewien drobny problem. Co się stanie, jeżeli wielkość wektora wynosi 0? Nie możemy dzielić przez 0! Szybkie sprawdzanie błędu powinno to naprawić:
PVector.prototype.normalize = function() {
var m = this.mag();
if (m > 0) {
this.div(m);
}
};
Oto program który zawsze znormalizuje wektor który przedstawia pozycję myszki od środka (po czym pomnoży ją, abyśmy mogli ją zobaczyć - w końcu 1 piksel nie jest wcale duży!):
Ten kurs "Symulacje Natury" jest pochodną z "Natury Kodu " stworzonej przez Daniela Shiffmana, użytej pod licencją Creative Commons Attribution-NonCommercial 3.0 Unported License.
Chcesz dołączyć do dyskusji?
Na razie brak głosów w dyskusji