3.4 KiB
VECTOR
N-wymiarowy wektor liczb zmiennoprzecinkowych. W praktyce wykorzystywany do reprezentowania współrzędnych dwu- lub trójwymiarowych — w grach z silnika spotykany m.in. w minigrach z fizyką (odbicia, normalizacja kierunku ruchu).
Wartość zmiennej (value) typu VECTOR to długość euklidesowa wektora, czyli sqrt(x1² + x2² + … + xN²).
Pola
SIZE
INTEGER SIZE
Liczba współrzędnych wektora. Wartości w grach to zwykle 2 lub 3.
VALUE
DOUBLE, DOUBLE, [DOUBLE...] VALUE
Lista wartości startowych poszczególnych współrzędnych. Liczba pozycji powinna odpowiadać polu SIZE.
Metody
ADD
void ADD(STRING|VECTOR vectorName)
Dodaje do bieżącego wektora wartości drugiego wektora pozycyjnie. Wynik jest zapisywany w wektorze, na którym wywołano metodę.
Parametry
vectorName— wektor dodawany; przekazany jakoSTRING(nazwa) lub bezpośrednio jakoVECTOR.
Przykłady
VTEMP2^ADD("VTOCENTER");
VTEMP2^ADD(VTOCENTER);
ASSIGN
void ASSIGN(DOUBLE x1, DOUBLE x2, [DOUBLE...])
Przypisuje wektorowi nowe wartości współrzędnych. Liczba argumentów wyznacza, ile współrzędnych zostanie nadpisanych — pozostałe (jeśli wektor był większy) zachowują swoje wcześniejsze wartości. Jeśli liczba argumentów przekracza bieżącą długość wektora, wektor zostaje rozszerzony.
Parametry
x1, x2, …— kolejne nowe wartości współrzędnych.
Przykłady
VTEMP1^ASSIGN(0.0,0.0);
VTEMP1^ASSIGN(ARRDIRX^GET(VARPLAYER),ARRDIRY^GET(VARPLAYER));
VNORMAL^ASSIGN([ARRPOSX^GET(VARPLAYER)+ARRHWIDTH^GET(VARPLAYER)],[ARRPOSY^GET(VARPLAYER)+ARRHHEIGHT^GET(VARPLAYER)]);
GET
DOUBLE GET(INTEGER index)
Zwraca wartość współrzędnej o podanym indeksie (liczonym od zera). Dla indeksów spoza zakresu zwracana jest wartość 0.0.
Parametry
index— indeks współrzędnej (0-bazowany).
Zwraca: DOUBLE — wartość współrzędnej lub 0.0.
Przykłady
VTEMP1^GET(0);
VTEMP1^GET(1);
LEN
DOUBLE LEN()
Zwraca długość euklidesową wektora.
Zwraca: DOUBLE — długość wektora.
MUL
void MUL(DOUBLE scalar)
Mnoży każdą współrzędną wektora przez skalar.
Parametry
scalar— mnożnik.
Przykłady
VTEMP1^MUL(10.0);
VTEMP1^MUL(ARRSPEED^GET(VARPLAYER));
VTEMP2^MUL(-1);
NORMALIZE
void NORMALIZE()
Normalizuje wektor do długości 1 (dzieli każdą współrzędną przez aktualną długość). Wywołanie na wektorze zerowym nie zmienia jego wartości.
Przykłady
VNORMAL^NORMALIZE();
VTEMP1^NORMALIZE();
REFLECT
void REFLECT(STRING|VECTOR normalVector, STRING|VECTOR resultVector)
Oblicza odbicie bieżącego wektora względem wektora normalnego i zapisuje wynik do wektora docelowego. Bieżący wektor pozostaje niezmieniony.
Parametry
normalVector— wektor normalny do powierzchni, względem której następuje odbicie.resultVector— wektor, do którego zostanie zapisany wynik.
Przykłady
VINCIDENT^REFLECT("VNORMAL","VREFLECT");
VINCIDENT^REFLECT(VNORMAL,VREFLECT);
Sygnały
ONINIT
Wywoływany w momencie inicjalizacji obiektu.
ONSIGNAL
Wywoływany po otrzymaniu sygnału (zobacz Zdarzenia i sygnały).