Funzioni matematiche vettoriali RenderScript

Panoramica

Queste funzioni interpretano gli argomenti di input come rappresentazione di vettori nello spazio n-dimensionale.

La precisione delle operazioni matematiche su valori in virgola mobile a 32 bit è influenzata dai pragmas rs_fp_relaxed e rs_fp_full. Per maggiori dettagli, vedi Costanti e funzioni matematiche.

Utilizzando le varianti delle comuni funzioni matematiche, è possibile ottenere diversi compromessi in termini di precisione/velocità. Funzioni con un nome che inizia con

  • native_: potrebbero avere implementazioni hardware personalizzate con una precisione più debole. Inoltre, i valori subnormali possono essere cancellati a zero, potrebbe essere utilizzato l'arrotondamento verso lo zero e l'input NAN e infinito potrebbe non essere gestito correttamente.
  • fast_: può eseguire calcoli interni utilizzando valori in virgola mobile a 16 bit. Inoltre, i valori subnormali possono essere rimossi a zero ed è possibile utilizzare l'arrotondamento verso lo zero.

Riepilogo

Funzioni
croce Prodotto incrociato di due vettori
distanza Distanza tra due punti
punto Prodotto scalare di due vettori
distanza_rapida Distanza approssimativa tra due punti
lunghezza_rapida Lunghezza approssimativa di un vettore
normalizzazione_rapida Approssimativa del vettore normalizzato
lunghezza Lunghezza di un vettore
distanza_nativa Distanza approssimativa tra due punti
lunghezza_nativa Lunghezza approssimativa di un vettore
normalizzazione_nativa Normalizzare approssimativamente un vettore
normalizzare Normalizzare un vettore

Funzioni

cross : prodotto incrociato di due vettori

float3 cross(float3 left_vector, float3 right_vector);
float4 cross(float4 left_vector, float4 right_vector);
half3 cross(half3 left_vector, half3 right_vector); Aggiunto al livello API 24
half4 cross(half4 left_vector, half4 right_vector); Aggiunto al livello API 24

Calcola il prodotto incrociato di due vettori.

distanza : distanza tra due punti

distanza in virgola mobile(float left_vector, float right_vector);
distanza in virgola mobile(float2 left_vector, float2 right_vector);
distanza in virgola mobile(float3 left_vector, float3 right_vector);
distanza in virgola mobile(float4 left_vector, float4 right_vector);
mezza distanza(mezza left_vector, mezza right_vector); Aggiunto al livello API 24
mezza distanza(half2 left_vector, half2 right_vector); Aggiunto al livello API 24
mezza distanza(half3 left_vector, half3 right_vector); Aggiunto al livello API 24
mezza distanza(half4 left_vector, half4 right_vector); Aggiunto al livello API 24

Calcola la distanza tra due punti.

Vedi anche fast_distance(), native_distance().

dot : prodotto scalare di due vettori

float dot(float left_vector, float right_vector);
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 dot(half left_vector, half right_vector); Aggiunto al livello API 24
half dot(half2 left_vector, half2 right_vector); Aggiunto al livello API 24
half dot(half3 left_vector, half3 right_vector); Aggiunto al livello API 24
half dot(half4 left_vector, half4 right_vector); Aggiunto al livello API 24

Calcola il prodotto scalare di due vettori.

fast_distance : distanza approssimativa tra due punti

float fast_distance(float left_vector, float right_vector); Aggiunto al livello API 17
float fast_distance(float2 left_vector, float2 right_vector); Aggiunto al livello API 17
float fast_distance(float3 left_vector, float3 right_vector); Aggiunto al livello API 17
float fast_distance(float4 left_vector, float4 right_vector); Aggiunto al livello API 17

Calcola la distanza approssimativa tra due punti.

La precisione è quella che ci si aspetta da un calcolo effettuato utilizzando valori in virgola mobile a 16 bit.

Vedi anche distance(), native_distance().

fast_length : lunghezza approssimativa di un vettore

float fast_length(float v); Aggiunto al livello API 17
float fast_length(float2 v); Aggiunto al livello API 17
float fast_length(float3 v); Aggiunto al livello API 17
float fast_length(float4 v); Aggiunto al livello API 17

Calcola la lunghezza approssimativa di un vettore.

La precisione è quella che ci si aspetta da un calcolo effettuato utilizzando valori in virgola mobile a 16 bit.

Vedi anche length(), native_length().

fast_normalize : vettore normalizzato approssimativo

float fast_normalize(float v); Aggiunto al livello API 17
float2 fast_normalize(float2 v); Aggiunto al livello API 17
float3 fast_normalize(float3 v); Aggiunto al livello API 17
float4 fast_normalize(float4 v); Aggiunto al livello API 17

Normalizza approssimativamente un vettore.

Per i vettori di dimensione 1, restituisce -1.f per i valori negativi, 0.f per i valori nulli e 1.f per i valori positivi.

La precisione è quella che ci si aspetta da un calcolo effettuato utilizzando valori in virgola mobile a 16 bit.

Vedi anche normalize(), native_normalize().

length : lunghezza di un vettore

lunghezza del numero in virgola mobile(float v);
lunghezza in virgola mobile(float2 v);
lunghezza in virgola mobile(float3 v);
lunghezza in virgola mobile(float4 v);
half length(half v); Aggiunto al livello API 24
half length(half2 v); Aggiunto al livello API 24
half length(half3 v); Aggiunto al livello API 24
half length(half4 v); Aggiunto al livello API 24

Calcola la lunghezza di un vettore.

Vedi anche le funzioni fast_length() e native_length().

native_distance : distanza approssimativa tra due punti

float native_distance(float left_vector, float right_vector); Aggiunto al livello API 21
float native_distance(float2 left_vector, float2 right_vector); Aggiunto al livello API 21
float native_distance(float3 left_vector, float3 right_vector); Aggiunto al livello API 21
float native_distance(float4 left_vector, float4 right_vector); Aggiunto al livello API 21
mezza native_distance(mezza vettore_sinistra, mezza vettore_destra); Aggiunto al livello API 24
half native_distance(half2 left_vector, half2 right_vector); Aggiunto al livello API 24
half native_distance(half3 left_vector, half3 right_vector); Aggiunto al livello API 24
half native_distance(half4 left_vector, half4 right_vector); Aggiunto al livello API 24

Calcola la distanza approssimativa tra due punti.

Vedi anche distance(), fast_distance().

native_length : lunghezza approssimativa di un vettore

float native_length(float v); Aggiunto al livello API 21
float native_length(float2 v); Aggiunto al livello API 21
float native_length(float3 v); Aggiunto al livello API 21
float native_length(float4 v); Aggiunto al livello API 21
half native_length(half v); Aggiunto al livello API 24
half native_length(half2 v); Aggiunto al livello API 24
half native_length(half3 v); Aggiunto al livello API 24
half native_length(half4 v); Aggiunto al livello API 24

Calcola la lunghezza approssimativa di un vettore.

Vedi anche length(), fast_length().

native_normalize : normalizza approssimativamente un vettore

float native_normalize(float v); Aggiunto al livello API 21
float2 native_normalize(float2 v); Aggiunto al livello API 21
float3 native_normalize(float3 v); Aggiunto al livello API 21
float4 native_normalize(float4 v); Aggiunto al livello API 21
half native_normalize(half v); Aggiunto al livello API 24
half2 native_normalize(half2 v); Aggiunto al livello API 24
half3 native_normalize(half3 v); Aggiunto al livello API 24
half4 native_normalize(half4 v); Aggiunto al livello API 24

Normalizza approssimativamente un vettore.

Vedi anche normalize(), fast_normalize().

normalize : normalizza un vettore

float normalize(float v);
float2 normalize(float2 v);
float3 normalize(float3 v);
float4 normalize(float4 v);
half normalize(half v); Aggiunto al livello API 24
half2 normalize(half2 v); Aggiunto al livello API 24
half3 normalize(half3 v); Aggiunto al livello API 24
half4 normalize(half4 v); Aggiunto al livello API 24

Normalizza un vettore.

Per i vettori di dimensione 1, restituisce -1.f per i valori negativi, 0.f per i valori nulli e 1.f per i valori positivi.

Vedi anche fast_normalize(), native_normalize().