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().
