Wektorowe funkcje matematyczne RenderScript

Przegląd

Te funkcje interpretują argumenty wejściowe jako reprezentacje wektorów w przestrzeni n-wymiarowej.

Na dokładność działań matematycznych na 32-bitowych liczbach zmiennoprzecinkowych wpływają wartości pragmas rs_fp_relaxed i rs_fp_full. Szczegółowe informacje znajdziesz w sekcji Stałe i funkcje matematyczne.

Za pomocą wariantów typowych funkcji matematycznych można osiągnąć różne zmiany w zakresie precyzji i szybkości. Funkcje, których nazwy zaczynają się od

  • natywne_: mogą mieć niestandardowe implementacje sprzętowe o niższej dokładności. Dodatkowo wartości nienormalne mogą być opróżniane do zera, można zaokrąglać do zera, a dane wejściowe NaN i nieskończoności mogą nie być prawidłowo obsługiwane.
  • fast_: umożliwia wykonywanie wewnętrznych obliczeń przy użyciu 16-bitowych liczb zmiennoprzecinkowych. Dodatkowo wartości podrzędne mogą być opróżniane do zera i można je zaokrąglać do zera.

Podsumowanie

Funkcje
krzyżyk Iloczyn krzyżowy 2 wektorów
odległość Odległość między dwoma punktami
kropka Iloczyn skalarny dwóch wektorów
szybka_odległość Przybliżona odległość między dwoma punktami
szybka_długość Przybliżona długość wektora
fast_normalize Przybliżona znormalizowana wektor
length (długość) Długość wektora
odległość_natywna Przybliżona odległość między dwoma punktami
długość_natywnej Przybliżona długość wektora
native_normalize Normalizuj wektor w przybliżeniu
normalizacja Normalizuj wektor

Funkcje

krzyżowe : iloczyn krzyżowy 2 wektorów

float3 cross(float3 left_vector, float3 right_vector);
float4 cross(float4 left_vector, float4 right_vector);
pół3 krzyż(pół3 lewo_wektor, połowa3 prawo_wektor); Dodano do poziomu interfejsu API 24.
połowa_4 krzyży(pół4 lewo_wektor, połowa4 prawo_wektor); Dodano do poziomu interfejsu API 24.

Oblicza iloczyn wektorowy dwóch wektorów.

odległość : odległość między dwoma punktami

odległość_zmiennoprzecinkowa(lewy_wektor_zmiennoprzecinkowy, prawo_zmiennoprzecinkowe);
liczba zmiennoprzecinkowa(float2 left_vector, float2 right_vector);
liczba zmiennoprzecinkowa(float3 left_vector, float3 right_vector);
liczba zmiennoprzecinkowa(float4 left_vector, float4 right_vector);
połowa odległości(połowa lewo_wektor, połowa prawo_wektor); Dodano do poziomu interfejsu API 24.
połowa odległości(pół2 lewo_wektor, połowa2 prawo_wektor); Dodano do poziomu interfejsu API 24.
połowa odległości(pół3 lewo_wektor, połowa3 prawo_wektor); Dodano do poziomu interfejsu API 24.
połowa odległości(pół4 lewo_wektor, połowa4 prawo_wektor); Dodano do poziomu interfejsu API 24.

Obliczanie odległości między dwoma punktami.

Patrz też fast_distance(), native_distance().

kropka : iloczyn skalarny 2 wektorów

Liczba zmiennoprzecinkowa kropka(pozostały_wektor_zmiennoprzecinkowy; wektor_zmiennoprzecinkowy w prawo);
float dot(float2 left_vector, float2 right_vector);
float dot(float3 left_vector, float3 right_vector);
float dot(float4 left_vector, float4 right_vector);
half kropka(połowa lewo_wektor, połowa prawo_wektor); Dodano do poziomu interfejsu API 24.
half kropka(połowa2 lewo_wektor, połowa2 prawo_wektor); Dodano do poziomu interfejsu API 24.
half kropka(połowa3 lewo_wektor, połowa3 prawo_wektor); Dodano do poziomu interfejsu API 24.
half kropka(pół4 lewo_wektor, połowa4 prawo_wektor); Dodano do poziomu interfejsu API 24.

Oblicza iloczyn skalarny dwóch wektorów.

fast_distance : przybliżona odległość między 2 punktami

float fast_distance(zmiennoprzecinkowy_wektor_zmiennoprzecinkowy, liczba_zmiennoprzecinkowa_prawa_zmiennoprzecinkowa); Dodano do poziomu interfejsu API 17
float fast_distance(float2 left_vector, float2 right_vector); Dodano do poziomu interfejsu API 17
float fast_distance(float3 left_vector, float3 right_vector); Dodano do poziomu interfejsu API 17
float fast_distance(float4 left_vector, float4 right_vector); Dodano do poziomu interfejsu API 17

Oblicza przybliżoną odległość między dwoma punktami.

Dokładność jest taka sama jak w przypadku wykonywania obliczeń przy użyciu 16-bitowych wartości zmiennoprzecinkowych.

Zobacz też: distance(), native_distance().

fast_length : przybliżona długość wektora

float fast_length(float v); Dodano do poziomu interfejsu API 17
float fast_length(float2 v); Dodano do poziomu interfejsu API 17
float fast_length(float3 v); Dodano do poziomu interfejsu API 17
float fast_length(float4 v); Dodano do poziomu interfejsu API 17

Oblicza przybliżoną długość wektora.

Dokładność jest taka sama jak w przypadku wykonywania obliczeń przy użyciu 16-bitowych wartości zmiennoprzecinkowych.

Patrz też length(), native_length().

fast_normalize : przybliżony wektor znormalizowany

float fast_normalize(float v); Dodano do poziomu interfejsu API 17
float2 fast_normalize(float2 v); Dodano do poziomu interfejsu API 17
float3 fast_normalize(float3 v); Dodano do poziomu interfejsu API 17
float4 fast_normalize(float4 v); Dodano do poziomu interfejsu API 17

Normalizuje wektor w przybliżeniu.

W przypadku wektorów o rozmiarze 1 zwraca -1, f dla wartości ujemnych, 0, f w przypadku wartości null i 1.f dla wartości dodatnich.

Dokładność jest taka sama jak w przypadku wykonywania obliczeń przy użyciu 16-bitowych wartości zmiennoprzecinkowych.

Patrz też normalize(), native_normalize().

length : długość wektora

float length(float v);
Liczba zmiennoprzecinkowa(float2 v);
float length(float3 v);
float length(float4 v);
half length(half v); Dodano do poziomu interfejsu API 24.
half length(half2 v); Dodano do poziomu interfejsu API 24.
half length(half3 v); Dodano do poziomu interfejsu API 24.
half length(half4 v); Dodano do poziomu interfejsu API 24.

Oblicza długość wektora.

Patrz też fast_length(), native_length().

native_distance : przybliżona odległość między 2 punktami

float natywne_distance(zmiennoprzecinkowy_wektor_zmiennoprzecinkowy, wektor_zmiennoprzecinkowy_prawo_zmiennoprzecinkowy); Dodano do poziomu interfejsu API 21
float_distance(float2 left_vector, float2 prawo_wektor); Dodano do poziomu interfejsu API 21
floatNative_distance(float3 left_vector, float3 right_vector); Dodano do poziomu interfejsu API 21
floatNative_distance(float4 left_vector, float4 right_vector); Dodano do poziomu interfejsu API 21
odległość_natywna(połowa lewo_wektor, połowa prawego_wektora); Dodano do poziomu interfejsu API 24.
połowa natywnej_odległości(pół2 wektor_lewy; połowa2 prawego_wektora); Dodano do poziomu interfejsu API 24.
połowa natywnej_odległości(połowa3 lewo_wektor, połowa3 prawo_wektor); Dodano do poziomu interfejsu API 24.
połowa natywnej_odległości(pół4 lewo_wektor, połowa_4 prawo_wektor); Dodano do poziomu interfejsu API 24.

Oblicza przybliżoną odległość między dwoma punktami.

Zobacz też: distance(), fast_distance().

native_length: przybliżona długość wektora

float source_length(float v); Dodano do poziomu interfejsu API 21
float_length(float2 v); Dodano do poziomu interfejsu API 21
float_length(float3 v); Dodano do poziomu interfejsu API 21
float_length(float4 v); Dodano do poziomu interfejsu API 21
połowa natywnej_długości(połowa v); Dodano do poziomu interfejsu API 24.
pół natywna_length(pół2 v); Dodano do poziomu interfejsu API 24.
pół natywna_length(pół3 v); Dodano do poziomu interfejsu API 24.
połowa natywnej_długości(pół4 v); Dodano do poziomu interfejsu API 24.

Oblicz przybliżoną długość wektora.

Patrz też length(), fast_length().

native_normalize : w przybliżeniu normalizuj wektor

float natywne_normalize(zmiennoprzecinkowy v); Dodano do poziomu interfejsu API 21
float2 native_normalize(float2 v); Dodano do poziomu interfejsu API 21
float3 native_normalize(float3 v); Dodano do poziomu interfejsu API 21
float4 native_normalize(float4 v); Dodano do poziomu interfejsu API 21
halfnative_normalize(połowa v); Dodano do poziomu interfejsu API 24.
pół2 natywna_normalize(połowa2 v); Dodano do poziomu interfejsu API 24.
half3native_normalize(pół3 v); Dodano do poziomu interfejsu API 24.
pół4 natywna_normalize(połowa 4 v); Dodano do poziomu interfejsu API 24.

Normalizuje wektor w przybliżeniu.

Patrz też normalize(), fast_normalize().

normalizuj : normalizuj wektor

float normalize(float v);
float2 normalize(float2 v);
float3 normalize(float3 v);
float4 normalize(float4 v);
half normalize(pół v); Dodano do poziomu interfejsu API 24.
Normalize(pół2 v); half2; Dodano do poziomu interfejsu API 24.
half3 normalize(pół3 v); Dodano do poziomu interfejsu API 24.
Normalize(pół4 v); half4; Dodano do poziomu interfejsu API 24.

Normalizuj wektor.

W przypadku wektorów o rozmiarze 1 zwraca -1, f dla wartości ujemnych, 0, f w przypadku wartości null i 1.f dla wartości dodatnich.

Patrz też fast_normalize(), native_normalize().