Android NDK开发详解RenderScript之RenderScript 矢量数学函数

本文详细介绍了在AndroidNDK的RenderScript中使用的一系列矢量数学函数,包括叉积、距离、点积等,以及它们在不同精度模式下的行为,如fast_、native_和精确版本,以及API级别的更新历史。
摘要由CSDN通过智能技术生成

Android NDK开发详解RenderScript之RenderScript 矢量数学函数

概览

这些函数将输入参数解释为 N 维空间中向量的表示形式。

对 32 位浮点数进行数学运算的精度受 pragmas rs_fp_relaxed 和 rs_fp_full 的影响。如需了解详情,请参阅数学常量和函数。

通过使用通用数学函数的变体,可以实现不同的精度/速度权衡。名称以

native_:可能包含精确度较低的自定义硬件实现。此外,次正规值可能会刷新为零,可以使用向零舍入,并且可能无法正确处理 NaN 和无穷大输入。
fast_:可以使用 16 位浮点数执行内部计算。此外,次正规值可能会被刷新为零,并且可以向零舍入。

摘要

在这里插入图片描述

函数

在这里插入图片描述

cross :两个向量的叉积
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 中引入
计算两个向量的叉积。

distance :两点之间的距离
在这里插入图片描述

float distance(float left_vector, float right_vector);
float distance(float2 left_vector, float2 right_vector);
float distance(float3 left_vector, float3 right_vector);
float distance(float4 left_vector, float4 right_vector);
half distance(half left_vector, half right_vector); 在 API 级别 24 中引入
half distance(half2 left_vector, half2 right_vector); 在 API 级别 24 中引入
half distance(half3 left_vector, half3 right_vector); 在 API 级别 24 中引入
half distance(half4 left_vector, half4 right_vector); 在 API 级别 24 中引入
计算两点之间的距离。

另请参阅 fast_distance()、native_distance()。

点 :两个向量的点积
在这里插入图片描述

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 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 live_distance(float4left_vector, float4 right_vector); 在 API 级别 17 中引入
计算两点之间的大致距离。

精度是使用 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 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 中引入
对向量进行近似归一化。

另请参阅 normalize()、fast_normalize()。

normalize :对向量进行标准化
在这里插入图片描述

floatNormalize(float v);
float2Normalize(float2 v);
float3Normalize(float3 v);
float4Normalize(float4 v);
halfNormalize(half v); 在 API 级别 24 中引入
half2 normalize(half2 v); 在 API 级别 24 中引入
half3Normalize(half3 v); 在 API 级别 24 中引入
half4 normalize(half4 v); 在 API 级别 24 中引入
对向量进行归一化。

对于大小为 1 的向量,负值返回 -1.f, null 值返回 0.f,正值返回 1.f。

另请参阅 fast_normalize()、native_normalize()。

本页面上的内容和代码示例受内容许可部分所述许可的限制。Java 和 OpenJDK 是 Oracle 和/或其关联公司的注册商标。

最后更新时间 (UTC):2023-10-18。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五一编程

程序之路有我与你同行

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值