Funções matemáticas de vetores do RenderScript

Visão geral

Essas funções interpretam os argumentos de entrada como representação de vetores em um espaço de dimensão n.

A precisão das operações matemáticas em flutuações de 32 bits é afetada pelos pragmas rs_fp_relaxed e rs_fp_full. Consulte Constantes e funções matemáticas para mais detalhes.

Diferentes compensações de precisão/velocidade podem ser feitas usando variantes das funções matemáticas comuns. Funções com um nome que começa com

  • native_: pode ter implementações de hardware personalizadas com precisão mais fraca. Além disso, valores subnormais podem ser desviados para zero, arredondamentos para zero podem ser usados e a entrada de NaN e infinito pode não ser tratada corretamente.
  • fast_: pode realizar cálculos internos usando flutuações de 16 bits. Além disso, valores subnormais podem ser desviados para zero e arredondamentos até zero podem ser usados.

Resumo

Funções
cruz Produto cruzado de dois vetores
distância Distância entre dois pontos
ponto Produto escalar de dois vetores
fast_distance Distância aproximada entre dois pontos
fast_length (link em inglês) Comprimento aproximado de um vetor
fast_normalize (link em inglês) Vetor normalizado aproximado
tamanho Comprimento de um vetor
native_distance Distância aproximada entre dois pontos
native_length Comprimento aproximado de um vetor
native_normalize (link em inglês) Normalizar aproximadamente um vetor
normalizar Normalizar um vetor

Funções

cross : produto cruzado de dois vetores

float3 cross(float3 left_vector, float3 right_vector);
float4 cross(float4 left_vector, float4 right_vector);
half3 cross(half3 left_vector, half3 right_vector); Adicionado no nível 24 da API.
half4 cross(half4 left_vector, half4 right_vector); Adicionado no nível 24 da API.

Calcula o produto de dois vetores.

distance : distância entre dois pontos

float distance(float left_vector, float right_vector);
float distância(float2 left_vector, float2 right_vector);
float distance(float3 left_vector, float3 right_vector);
float distância(float4 left_vector, float4 right_vector);
metade distância(metade vetor_esquerdo, meia direita_vetor); Adicionado no nível 24 da API.
metade distância(half2 esquerda_vetor, half2 right_vector); Adicionado no nível 24 da API.
half distance(half3 left_vector, half3 right_vector); Adicionado no nível 24 da API.
metade distância(half4 esquerda_vetor, half4 right_vector); Adicionado no nível 24 da API.

Calcule a distância entre dois pontos.

Consulte também fast_distance(), native_distance().

ponto : produto escalar de dois vetores

float ponto(float left_vector, float right_vector);
ponto flutuante(float2 left_vector, float2 right_vector);
ponto flutuante(float3 left_vector, float3 right_vector);
ponto flutuante(float4 left_vector, float4 right_vector);
half ponto(metade vetor_esquerdo, half right_vector); Adicionado no nível 24 da API.
half ponto(half2 left_vector, half2 right_vector); Adicionado no nível 24 da API.
half ponto(half3 left_vector, half3 right_vector); Adicionado no nível 24 da API.
half ponto(half4 left_vector, half4 right_vector); Adicionado no nível 24 da API.

Calcula o produto escalar de dois vetores.

fast_distance : distância aproximada entre dois pontos

float fast_distance(float left_vector, float right_vector); Adicionado no nível 17 da API.
float fast_distance(float2 left_vector, float2 right_vector); Adicionado no nível 17 da API.
float fast_distance(float3 left_vector, float3 right_vector); Adicionado no nível 17 da API.
float fast_distance(float4 left_vector, float4 right_vector); Adicionado no nível 17 da API.

Calcula a distância aproximada entre dois pontos.

A precisão é o que esperaria do cálculo usando valores de ponto flutuante de 16 bits.

Consulte também distance(), native_distance().

fast_length : comprimento aproximado de um vetor

float fast_length(float v); Adicionado no nível 17 da API.
float fast_length(float2 v); Adicionado no nível 17 da API.
float fast_length(float3 v); Adicionado no nível 17 da API.
float fast_length(float4 v); Adicionado no nível 17 da API.

Calcula o comprimento aproximado de um vetor.

A precisão é o que esperaria do cálculo usando valores de ponto flutuante de 16 bits.

Consulte também length(), native_length().

fast_normalizar : vetor normalizado aproximado

float fast_normal(float v); Adicionado no nível 17 da API.
float2 fast_normalize(float2 v); Adicionado no nível 17 da API.
float3 fast_normalize(float3 v); Adicionado no nível 17 da API.
float4 fast_normalize(float4 v); Adicionado no nível 17 da API.

normaliza aproximadamente um vetor.

Para vetores de tamanho 1, retorna -1.f para valores negativos, 0.f para valores nulos e 1.f para valores positivos.

A precisão é o que esperaria do cálculo usando valores de ponto flutuante de 16 bits.

Consulte também normalizar() e native_normalize().

length : comprimento de um vetor

float length(float v);
float length(float2 v);
float length(float3 v);
float length(float4 v);
half length(half v); Adicionado no nível 24 da API.
half length(half2 v); Adicionado no nível 24 da API.
half length(half3 v); Adicionado no nível 24 da API.
half length(half4 v); Adicionado no nível 24 da API.

Calcula o comprimento de um vetor.

Consulte também fast_length(), native_length().

native_distance : distância aproximada entre dois pontos

float native_distance(float left_vector, float right_vector); Adicionado no nível 21 da API.
float native_distance(float2 left_vector, float2 right_vector); Adicionado no nível 21 da API.
float native_distance(float3 left_vector, float3 right_vector); Adicionado no nível 21 da API.
float native_distance(float4 left_vector, float4 right_vector); Adicionado no nível 21 da API.
half native_distance(half left_vector, half right_vector); Adicionado no nível 24 da API.
half native_distance(half2 left_vector, half2 right_vector); Adicionado no nível 24 da API.
half native_distance(half3 left_vector, half3 right_vector); Adicionado no nível 24 da API.
half native_distance(half4 left_vector, half4 right_vector); Adicionado no nível 24 da API.

Calcula a distância aproximada entre dois pontos.

Veja também distance(), fast_distance().

native_length : comprimento aproximado de um vetor

float native_length(float v); Adicionado no nível 21 da API.
float native_length(float2 v); Adicionado no nível 21 da API.
float native_length(float3 v); Adicionado no nível 21 da API.
float native_length(float4 v); Adicionado no nível 21 da API.
half native_length(half v); Adicionado no nível 24 da API.
half native_length(half2 v); Adicionado no nível 24 da API.
half native_length(half3 v); Adicionado no nível 24 da API.
half native_length(half4 v); Adicionado no nível 24 da API.

Calcular o comprimento aproximado de um vetor.

Consulte também length(), fast_length().

native_Normal : normaliza aproximadamente um vetor

float native_normalize(float v); Adicionado no nível 21 da API.
float2 native_normalize(float2 v); Adicionado no nível 21 da API.
float3 native_normalize(float3 v); Adicionado no nível 21 da API.
float4 native_normalize(float4 v); Adicionado no nível 21 da API.
half native_normalize(half v); Adicionado no nível 24 da API.
half2 native_normalize(half2 v); Adicionado no nível 24 da API.
half3 native_normalize(half3 v); Adicionado no nível 24 da API.
half4 native_normalize(half4 v); Adicionado no nível 24 da API.

normaliza aproximadamente um vetor.

Consulte também normal() e fast_normalize().

normalizar : normalizar um vetor

float normalize(float v);
float2 normalizar(float2 v);
float3 normalizar(float3 v);
float4 normalizar(float4 v);
half normalize(half v); Adicionado no nível 24 da API.
half2 normalize(half2 v); Adicionado no nível 24 da API.
half3 normalize(half3 v); Adicionado no nível 24 da API.
half4 normalize(half4 v); Adicionado no nível 24 da API.

Normalizar um vetor.

Para vetores de tamanho 1, retorna -1.f para valores negativos, 0.f para valores nulos e 1.f para valores positivos.

Consulte também fast_normalize(), native_normalize().