RenderScript 向量數學函式

總覽

這些函式會將輸入引數解讀為 N 維空間中的向量表示法。

32 位元浮點數的數學運算的精確度會受到 pragmas rs_fp_relaxed 和 rs_fp_full 影響。詳情請參閱數學常數和函式

使用常見數學函式的變體,即可達成不同的精確度/速度的取捨。名稱開頭為

  • native_:可能採用精確度較低的自訂硬體實作。此外,子常值可能會完全清除至零,使用四捨五入為零,且無法正確處理 NaN 和無限輸入的資料。
  • 快速_:可能會使用 16 位元浮點值執行內部運算。此外,子常態值可清除至零,也可以使用捨入為零。

摘要

函式
cross 兩個向量的交叉乘積
距離 兩點之間的距離
兩個向量的點積
Fast_distance 兩點之間的概略距離
Fast_length 向量的約略長度
Fast_normalize 近似正規化向量
length 向量長度
native_distance 兩點之間的概略距離
native_length 向量的約略長度
native_normalize 對向量進行大致正規化處理
正規化 將向量正規化

函式

cross :兩個向量的交叉乘積

float3 cross(float3 left_vector, float3 right_vector);
float4 cross(float4 left_vector, float4 right_vector);
half3 Cross(half3 left_vector, half3right_vector); 已在 API 級別 24 中新增。
half4 Cross(half4 left_vector, half4right_vector); 已在 API 級別 24 中新增。

計算兩個向量的外積。

distance :兩點之間的距離

floatDistance(float left_vector, float right_vector);
floatDistance(float2 left_vector, float2right_vector);
floatDistance(float3 left_vector, float3 right_vector);
floatDistance(float4 left_vector, float4right_vector);
halfDistance(half left_vector, halfright_vector); 已在 API 級別 24 中新增。
halfDistance(half2 left_vector, half2right_vector); 已在 API 級別 24 中新增。
halfDistance(half3 left_vector, half3right_vector); 已在 API 級別 24 中新增。
halfDistance(half4 left_vector, half4right_vector); 已在 API 級別 24 中新增。

計算兩點之間的距離。

另請參閱 fast_distance()、native_distance()。

dot :兩個向量的點積

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); 已在 API 級別 24 中新增。
half dot(half2 left_vector, half2 right_vector); 已在 API 級別 24 中新增。
half dot(half3 left_vector, half3 right_vector); 已在 API 級別 24 中新增。
half dot(half4 left_vector, half4 right_vector); 已在 API 級別 24 中新增。

計算兩個向量的內積。

Fast_distance :兩點之間的概略距離

float Express_distance(float left_vector, float right_vector); 已在 API 級別 17 中新增。
floatFast_distance(float2 left_vector, float2right_vector); 已在 API 級別 17 中新增。
floatFast_distance(float3 left_vector, float3right_vector); 已在 API 級別 17 中新增。
float Quick_distance(float4 left_vector, float4right_vector); 已在 API 級別 17 中新增。

計算兩點之間的近距離。

精確度指的是使用 16 位元浮點值進行計算。

另請參閱 distance()、native_distance()

Fast_length :向量的約略長度

floatFast_length(float v); 已在 API 級別 17 中新增。
floatFast_length(float2 v); 已在 API 級別 17 中新增。
floatFast_length(float3 v); 已在 API 級別 17 中新增。
floatFast_length(float4 v); 已在 API 級別 17 中新增。

計算向量的約略長度。

精確度指的是使用 16 位元浮點值進行計算。

另請參閱 length()、native_length()。

Fast_normalize :近似正規化向量

float Express_normalize(float v); 已在 API 級別 17 中新增。
float2Fast_normalize(float2 v); 已在 API 級別 17 中新增。
float3Fast_normalize(float3 v); 已在 API 級別 17 中新增。
float4Fast_normalize(float4 v); 已在 API 級別 17 中新增。

大致將向量正規化。

針對大小為 1 的向量,系統會傳回 -1.f 代表負值,傳回 0.f 代表空值,再傳回 1.f 代表正值。

精確度指的是使用 16 位元浮點值進行計算。

另請參閱 正規化()、native_normalize()。

length :向量長度

浮點長度(float v);
浮點長度(float2 v);
浮點長度(float3 v);
浮點長度(float4 v);
half length(half v); 已在 API 級別 24 中新增。
half length(half2 v); 已在 API 級別 24 中新增。
half length(half3 v); 已在 API 級別 24 中新增。
half length(half4 v); 已在 API 級別 24 中新增。

計算向量的長度。

另請參閱 fast_length()、native_length()。

native_distance :兩點之間的概略距離

float native_distance(float left_vector, float right_vector); 已在 API 級別 21 中新增。
float native_distance(float2 left_vector, float2 right_vector); 已在 API 級別 21 中新增。
float native_distance(float3 left_vector, float3 right_vector); 已在 API 級別 21 中新增。
float native_distance(float4 left_vector, float4 right_vector); 已在 API 級別 21 中新增。
half native_distance(half left_vector, half right_vector); 已在 API 級別 24 中新增。
half native_distance(half2 left_vector, half2 right_vector); 已在 API 級別 24 中新增。
half native_distance(half3 left_vector, half3 right_vector); 已在 API 級別 24 中新增。
half native_distance(half4 left_vector, half4 right_vector); 已在 API 級別 24 中新增。

計算兩點之間的近距離。

另請參閱 distance(), fast_distance()。

native_length :向量的約略長度

float native_length(float v); 已在 API 級別 21 中新增。
float native_length(float2 v); 已在 API 級別 21 中新增。
float native_length(float3 v); 已在 API 級別 21 中新增。
float native_length(float4 v); 已在 API 級別 21 中新增。
half native_length(half v); 已在 API 級別 24 中新增。
half native_length(half2 v); 已在 API 級別 24 中新增。
half native_length(half3 v); 已在 API 級別 24 中新增。
half native_length(half4 v); 已在 API 級別 24 中新增。

計算向量的約略長度。

另請參閱 length()、fast_length()。

native_normalize :將向量正規化

float native_normalize(float v); 已在 API 級別 21 中新增。
float2 native_normalize(float2 v); 已在 API 級別 21 中新增。
float3 native_normalize(float3 v); 已在 API 級別 21 中新增。
float4 native_normalize(float4 v); 已在 API 級別 21 中新增。
half native_normalize(half v); 已在 API 級別 24 中新增。
half2 native_normalize(half2 v); 已在 API 級別 24 中新增。
half3 native_normalize(half3 v); 已在 API 級別 24 中新增。
half4 native_normalize(half4 v); 已在 API 級別 24 中新增。

大致將向量正規化。

另請參閱 正規化()、fast_normalize()。

正規化 :將向量正規化

float microize(float v);
float2 正規化(float2 v);
float3 正規化(float3 v);
float4 正規化(float4 v);
half 正規化(half v); 已在 API 級別 24 中新增。
half2 正規化(half2 v); 已在 API 級別 24 中新增。
half3 正規化(half3 v); 已在 API 級別 24 中新增。
half4 正規化(half4 v); 已在 API 級別 24 中新增。

將向量正規化。

針對大小為 1 的向量,系統會傳回 -1.f 代表負值,傳回 0.f 代表空值,再傳回 1.f 代表正值。

另請參閱 fast_normalize()、native_normalize()。