Operacje typu Vector

Istnieje wiele operacji matematycznych, które można wykonać na wektorach. Zrozumienie tych podstawowych operacji jest podstawą manipulowania obiektami w przestrzeni 3D.

  • Dodawanie wektorów:

Suma dwóch wektorów jest tworzona przez dodanie każdego z jego elementów. Przykład:  V1 = (5, 0, 9) i V2 = (4, 0, 2) V1 + V2 = (5 + 4, 0 + 0, 9 + 2) V1 + V2 = (9, 0, 11)

Poniższy obrazek przedstawia operator Blueprint sumy wektorów:

  • Odejmowanie wektorów: 

Odejmowanie między dwoma wektorami odbywa się poprzez odejmowanie każdego z jego elementów.

Przykład: 
V1 = (12, 0, 14) i V2 = (4, 0, 8)V1 – V2 = (12 – 4, 0 – 0, 14 – 8)V1 – V2 = (8, 0, 6)

Poniższy obrazek przedstawia operator Blueprint odejmowania wektorów:

  • Długość wektora:

Długość lub wielkość wektora można obliczyć, korzystając z poniższego planu działania. Ta wartość może być używana do reprezentowania odległości między dwoma punktami.

  • Wektory normalizujące:

Używamy normalizacji wektorów, aby znaleźć wektor jednostkowy. Wektor jednostkowy ma długość równą 1. Jest często używany, gdy musimy tylko wskazać kierunek. W niektórych obliczeniach powinniśmy używać tylko znormalizowanego wektora.

  • Mnożenie wektora skalarnego:

Mnożenie wektora przez wartość skalarną odbywa się poprzez pomnożenie każdego z jego elementów przez wartość skalarną. Ta operacja zmienia długość wektora.

W przykładzie zobaczymy wszystkie te operacje używane razem. W tym przykładzie przeniesiemy Schemat w scenariuszu w kierunku losowego punktu. Kiedy Schemat dotrze do celu, ustawiany jest nowy losowy cel.
Moglibyśmy wykorzystać komponenty ruchu już zdefiniowane przez Unreal Engine, ale obliczmy ruch krok po kroku, aby zrozumieć różne zastosowania wektorów.

W obliczeniach ruchu użyjemy następujących zmiennych:

  • DeltaSeconds : ta zmienna przechowuje wartość przekazaną przez zdarzenie „Tick”, które reprezentuje czas, który upłynął od ostatniego „Tick”.
  • Speed : Przechowuje wartość prędkości Planu. Wartość domyślna to 100 (cm / s).
  • vDestination : wektor przechowujący pozycję, w której plan ma się przesunąć.
  • vDistance : Wektor wskazujący odległość od aktualnej pozycji BP do celu.
  • vDirection : wektor jednostkowy wskazujący kierunek, w którym Plan powinien podążać, aby dotrzeć do celu.
  • vVelocity : wektor reprezentujący prędkość i kierunek BP w cm / s.
  • vStep : Wektor z końcowym wynikiem obliczenia, który wskazuje ruch, który Plan powinien wykonać przy bieżącym „Tikku”.

Utworzono makro o nazwie „ SetRandomDestination ”, aby ustawić losowe miejsce docelowe. W tym przykładzie wartość osi Z jest ustalona na 300, a wartości osi X i Y mogą wynosić od -1000 do 1000. Utworzony wektor jest przechowywany w wektorze „vDestination”.

W tym przykładzie nie jest brany pod uwagę żaden rodzaj kolizji. Następnie test należy wykonać na obszarze bez przeszkód.

Aby ustawić początkowe miejsce docelowe, w zdarzeniu „BeginPlay” należy wywołać makro „SetRandomDestination”.

Poniższy obrazek przedstawia pierwszą część zdarzenia „ Tick ”, w której każdy z wektorów jest obliczany do momentu znalezienia wartości „vStep”. Wszystkie te obliczenia można było ujednolicić w jednym wyrażeniu matematycznym, ale każda część obliczenia była oddzielna, aby ułatwić zrozumienie.

W drugiej części zdarzenia „ Tick ” przesuń Schemat za pomocą akcji „AddActorWorldOffset” i sprawdź, czy Schemat dotarł do celu. Ten test jest wykonywany poprzez porównanie, czy aktualna odległość jest mniejsza niż wartość zmiennej „Prędkość”. Jeśli prawda, ustawiany jest nowy cel.

W moim przykładzie użyłem latającego stołu do przedstawienia mojego planu:


Źródło:https://romeroblueprints.blogspot.com/2015/10/vector-operations.html