RenderScript ベクター数学関数

概要

これらの関数は、入力引数を N 次元空間のベクトル表現として解釈します。

32 ビット浮動小数点数に対する数学演算の精度は、rs_fp_relaxed プラグと rs_fp_full プラグマの影響を受けます。詳細については、数学定数と関数をご覧ください。

一般的な数学関数のバリエーションを使用すると、精度と速度のトレードオフを実現できます。名前が

  • native_: 精度が低いカスタム ハードウェア実装が含まれる可能性があります。さらに、異常な値がゼロにフラッシュされたり、ゼロへの丸めが使用されたり、NaN 入力と無限大入力が正しく処理されない場合があります。
  • fast_: 16 ビット浮動小数点数を使用して内部計算を実行できます。さらに、正常でない値はゼロにフラッシュされ、ゼロへの丸めを使用できます。

まとめ

関数
cross 2 つのベクトルの外積
distance 2 点間の距離
ドット 2 つのベクトルのドット積
fast_distance 2 地点間の近似距離
fast_length ベクトルのおおよその長さ
fast_normalize 正規化された近似ベクトル
length ベクトルの長さ
native_distance 2 地点間の近似距離
native_length ベクトルのおおよその長さ
native_normalize ベクトルを近似正規化する
normalize ベクトルを正規化する

関数

cross : 2 つのベクトルの外積

float3 cross(float3 left_vector, float3 right_vector);
float4 cross(float4 left_vector, float4 right_vector);
half3 cross(half3 left_vector, half3 right_vector); API レベル 24 で追加されました
half4 cross(half4 left_vector, half4 right_vector); API レベル 24 で追加されました

2 つのベクトルの外積を計算します。

distance : 2 点間の距離

float distance(float left_vector, float right_vector);
float distance(float2 left_vector, float2 right_vector);
float weight(float3 left_vector, float3 right_vector);
float distance(float4 left_vector, float4 right_vector);
halfDistance(half left_vector, half right_vector); API レベル 24 で追加されました
halfDistance(half2 left_vector, half2 right_vector); API レベル 24 で追加されました
halfDistance(half3 left_vector, half3 right_vector); API レベル 24 で追加されました
halfDistance(half4 left_vector, half4 right_vector); API レベル 24 で追加されました

2 点間の距離を計算します。

fast_distance()、native_distance() もご覧ください。

ドット : 2 つのベクトルのドット積

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 で追加されました

2 つのベクトルのドット積を計算します。

fast_distance : 2 点間の近似距離

float fast_distance(float left_vector, float right_vector); API レベル 17 で追加されました
float fast_distance(float2 left_vector, float2 right_vector); API レベル 17 で追加されました
float fast_distance(float3 left_vector, float3 right_vector); API レベル 17 で追加されました
float fast_distance(float4 left_vector, float4 right_vector); API レベル 17 で追加されました

2 点間の近似距離を計算します。

精度は、16 ビット浮動小数点値を使用して計算を行うことで期待される値です。

distance()、native_distance() もご覧ください。

fast_length : ベクトルのおおよその長さ

float fast_length(float v); API レベル 17 で追加されました
float fast_length(float2 v); API レベル 17 で追加されました
float fast_length(float3 v); API レベル 17 で追加されました
float fast_length(float4 v); API レベル 17 で追加されました

ベクトルの近似値を計算します。

精度は、16 ビット浮動小数点値を使用して計算を行うことで期待される値です。

length()、native_length() もご覧ください。

fast_normalize : 正規化された近似ベクトル

float fast_normalize(float v); API レベル 17 で追加されました
float2 fast_normalize(float2 v); API レベル 17 で追加されました
float3 fast_normalize(float3 v); API レベル 17 で追加されました
float4 fast_normalize(float4 v); API レベル 17 で追加されました

ベクトルをほぼ正規化します。

サイズが 1 のベクトルの場合、負の値の場合は -1.f、null 値の場合は 0.f、正の値の場合は 1.f を返します。

精度は、16 ビット浮動小数点値を使用して計算を行うことで期待される値です。

normalize()、native_normalize() もご覧ください。

length : ベクトルの長さ

float length(float v);
float length(float2 v);
float length(float3 v);
float length(float4 v);
half レングス(half v) API レベル 24 で追加されました
half の長さ(half2 v) API レベル 24 で追加されました
half 長さ(half3 v) API レベル 24 で追加されました
half レングス(half4 v) API レベル 24 で追加されました

ベクトルの長さを計算します。

fast_length()、native_length() もご覧ください。

native_distance : 2 点間の近似距離

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 で追加されました

2 点間の近似距離を計算します。

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 で追加されました

ベクトルをほぼ正規化します。

normalize()、fast_normalize() もご覧ください。

normalize : ベクトルを正規化します

float normalize(float v);
float2 normalize(float2 v);
float3 normalize(float3 v);
float4 normalize(float4 v);
half normalize(half v); API レベル 24 で追加されました
half2 normalize(half2 v); API レベル 24 で追加されました
half3 normalize(half3 v); API レベル 24 で追加されました
half4 normalize(half4 v); API レベル 24 で追加されました

ベクトルを正規化します。

サイズが 1 のベクトルの場合、負の値の場合は -1.f、null 値の場合は 0.f、正の値の場合は 1.f を返します。

fast_normalize()、native_normalize() もご覧ください。