prefix_sum

计算输入数组的前缀和。前缀和是一个数组,其中每个元素是输入数组中对应点之前的所有元素的总和。

有三种类型的前缀和。计算 prefix_sum 中的第 i 个元素时,inclusive 前缀和包含输入 array 中的第 i 个元素。exclusive 前缀和不包含第 i 个元素。exclusive 前缀和的第一个元素将始终为零。offset_array 前缀和是 Bifrost 特有的,它与 exclusive 前缀和相同,但在 prefix_sum 数组末尾添加一个额外元素。这个额外元素是 prefix_sum 数组中上一个元素与输入 array 中最后一个元素之和。

例如:

给定输入 [3 1 7 0 4 1 6 3]

exclusive 扫描将输出:[0 3 4 11 11 15 16 22]

inclusive 扫描将输出:[3 4 11 11 15 16 22 25]

offset_array 扫描将输出:[0 3 4 11 11 15 16 22 25]

要基于二维数据构建组合的一维数组时,前缀和很有用。例如,假设有一个包含 3 个股的股几何体,其中股 1 包含 10 个点,股 2 包含 7 个点,股 3 包含 12 个点。使用 [10 7 12] 作为输入,offset_array 前缀和的结果为 [0 10 17 29]。prefix_sum 的第 i 个元素将是点数组中与第 i 个股对应的点的索引。可以将 prefix_sum 中的第 i 个元素减去第 (i+1) 个元素(即下一个元素)来计算对应于第 i 个股的点数。

输入

array

要求和的输入数组。

prefix_sum_style

要计算的前缀和的类型。

output_type

前缀和中的数据类型。Float 和 double 只能生成自身类型的前缀和,integral 类型可以生成 long 类型的前缀和。Integral 类型(long 和 ulong 除外)还可以生成 uint 类型的前缀和,用于为几何体创建偏移数组。

输出

prefix_sum

计算的前缀和。对于 inclusive 和 exclusive 前缀和,此数组的大小将与输入数组的大小相同。对于 offset_array 前缀和,此数组将比输入数组多包含一个元素。