1 个不稳定版本
0.1.0 | 2024年5月1日 |
---|
在 数据结构 中排名第 681
7KB
77 行(不包括注释)
MipMap-1d
这个 Rust 包提供一个小型数据结构,用于构建和存储您的 1 维 mipmap。Mipmap 只是向量化数据的下采样版本。每个级别的大小是前一个级别的一半。因此,整个数据结构在内存中大约占用初始数据的 2 倍大小。
当前的下采样是通过平均元素对(请参见下面的示例)来执行的。在未来的版本中可能会引入新的方法。
该包目前与所有主要数值类型兼容(归功于 num-traits
包)。
这可以用于,例如,在图表中。如果您有大量的点(比如说,10M),显然您不能一次在屏幕上绘制它们。另外,绘制这么多点需要大量的计算资源。
您可以这样做的是使用 1d MipMap:您进行多次下采样,并根据缩放级别选择要显示的数据。您缩放得越多,显示的“分辨率”数据就越高。
示例
use mipmap_1d::MipMap1D;
let data = vec![2, 4, 6, 8, 9];
let mipmap = MipMap1D::new(data);
assert_eq!(mipmap.num_levels(), 4);
assert_eq!(*mipmap.get_level(0).unwrap(), [2, 4, 6, 8, 9]);
assert_eq!(*mipmap.get_level(1).unwrap(), [3, 7, 9]);
assert_eq!(*mipmap.get_level(2).unwrap(), [5, 9]);
assert_eq!(*mipmap.get_level(3).unwrap(), [7]);
assert_eq!(mipmap.get_level(4), None);
贡献
目前,唯一的改进想法是引入在信号处理中使用的新的平均方法。请查看 问题 #1 了解详细信息。
依赖项
~155KB