Główna zawartość
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
© 2024 Khan AcademyWarunki użytkowaniapolitykę prywatnościInformacja o plikach cookie
Więcej matematyki wektorowej
Dodawanie tak naprawdę było dopiero pierwszym krokiem. Jest wiele działań matematycznych, które są często używane z wektorami. Poniżej znajduje się kompletna lista działań dostępnych jako funkcje w obiekcie
PVector
z ProcessingJS. Przejdziemy teraz przez kilka kluczowych. Ponieważ w kolejnych rozdziałach nasze przykłady staną się bardziej wymyślne, ujawnimy szczegóły większej liczby funkcji.add()
— dodawanie wektorówsub()
— odejmowanie wektorówmult()
— mnożenie wektora przez skalardiv()
— dzielenie wektora przez skalarmag()
— obliczanie długości wektoranormalize()
— zwraca wektor jednostkowy, o długości równej 1limit()
— ogranicza długość wektoraheading2D()
— zwraca kąt, pomiędzy wektorem a osią X, w dwóch wymiarachdist()
— odległość pomiędzy dwoma punktami w przestrzeni (o współrzędnych równych współrzędnym dwóch wektorów)angleBetween()
— kąt pomiędzy dwoma wektoramidot()
— iloczyn skalarny dwóch wektorówcross()
— iloczyn wektorowy dwóch wektorów (w trzech wymiarach)
Skoro już mieliśmy do czynienia z dodawaniem, zacznijmy od odejmowania. To nie jest takie trudne; po prostu weź znak plusa i zastąp go minusem!
Odejmowanie wektorów
może być zapisane jako:
zatem funkcja wewnątrz
PVector
wygląda tak:PVector.prototype.sub = function(vector2) {
this.x = this.x - vector2.x;
this.y = this.y - vector2.y;
};
Poniższy przykład demonstruje odejmowanie wektorów biorąc różnicę między dwoma punktami—położenie kursora i środek okna.
Podstawowe własności działań na wektorach
Działania odejmowania i dodawania liczb rzeczywistych spełniają następujące reguły:
Reguła przemienności:
Reguła łączności:
Te same prawa obowiązują w działaniach na wektorach:
Reguła przemienności:
Reguła łączności:
Mnożenie wektorów
Przechodząc do mnożenia, musimy zmienić trochę sposób myślenia. Kiedy mówimy o mnożeniu wektora, zazwyczaj mamy na myśli skalowanie wektora. Gdybyśmy chcieli skalować wektor dwukrotnie lub o jedną trzecią jego wielkości (pozostawiając kierunek bez zmian), móglibyśmy powiedzieć: “Pomnoż wektor razy dwa” lub “Pomnóż wektor razy 1/3”. Zauważ, że mnożymy wektor przez skalar, pojedynczą liczbę, nie inny wektor.
Aby skalować wektor, mnożymy każdą jego składową (x i y) przez skalar.
może być zapisane jako:
Spójrzmy na przykład z notacją wektorową.
W związku z tym, funkcja wewnątrz obiektu
PVector
może być zapisana jako:PVector.prototype.mult = function(n) {
this.x = this.x * n;
this.y = this.y * n;
}
Użycie
mult
w kodzie jest proste:var u = new PVector(-3,7);
// Ten PVector jest teraz trzy razy większy i równy (-9,21).
u.mult(3);
Tutaj mamy wcześniejszy przykład, z tym że za każdym razem pomnożyliśmy wektor przez 0,5, więc jest przeskalowany przez pół:
Zamiast powyższego mnożenia przez 0,5, moglibyśmy dzielić przez dwa. Dzielenie działa tak jak mnożenie—po prostu zamieniamy znak mnożenia (gwiazdkę) na znak dzielenia (ukośnik).
W ten sposób metoda div jest implementowana wewnętrznie:
PVector.prototype.div = function(n) {
this.x = this.x / n;
this.y = this.y / n;
}
A tak możemy użyć jej w kodzie:
var u = new PVector(8, -4);
u.div(2);
Więcej własności działań na wektorach
Tak jak z dodawaniem, podstawowe reguły algebraiczne związane z mnożeniem mają zastosowanie przy wektorach.
Reguła łączności:
Prawo rozdzielności z dwoma skalarami i jednym wektorem:
Prawo rozdzielności z dwoma wektorami i jednym skalarem:
Chcesz przećwiczyć wektory? Więcej o wektorach dowiesz się na Khan Academy w dzialeLinear Algebra: Vectors.
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