1 个不稳定版本
使用旧的Rust 2015
0.1.0 | 2017年9月1日 |
---|
在 数学 中排名第1574
18KB
268 行
构建
一个用于使用同伦映射构建3D几何的高阶函数式编程库
什么是同伦映射?
同伦是一种在两个函数之间的连续变形。想象一下将两个函数 f
和 g
结合起来,使用一个介于0和1之间的参数,使得将参数设置为0给出 f
,将参数设置为1给出 g
。换句话说,它允许你在函数之间平滑插值。
此库使用专为构建3D几何设计的简化同伦版本
/// A function of type `1d -> 3d`.
pub type Fn1<T> = Arc<Fn(T) -> [T; 3] + Sync + Send>;
/// A function of type `2d -> 3d`.
pub type Fn2<T> = Arc<Fn([T; 2]) -> [T; 3] + Sync + Send>;
/// A function of type `3d -> 3d`.
pub type Fn3<T> = Arc<Fn([T; 3]) -> [T; 3] + Sync + Send>;
在此库中,这些函数被称为 同伦映射,通常满足以下属性
- 所有输入都假定已归一化,从0开始,到1结束。这意味着
Fn1
形成一个曲线线,Fn2
形成一个曲线四边形,而Fn3
形成一个曲线立方体。 Arc
智能指针使克隆闭包成为可能。Sync
和Send
约束使多线程编程变得更容易。- 基本几何形状在0到1的范围内是连续的。
一个弯曲的立方体并不意味着它需要看起来像一个立方体。实际上,你可以创建各种看起来根本不像立方体的形状,例如一个球体。所说的“弯曲立方体”是指有3个参数在0到1之间控制点的生成。如果你使用恒等映射,你会得到一个立方体形状。将其他形状转换为这种形状是它被称为“弯曲立方体”的原因。
动机
构建3D几何是一个迭代过程,最终的设计/需求可能与最初的草图大相径庭。在游戏引擎中,还有其他需求,如生成各种细节的多个模型,或根据目标平台的容量调整模型。这使得有必要拥有一些工具,可以在不考虑大量技术细节的情况下工作。
同伦映射具有这样一个特性:可以根据需要构建几何形状,而不需要任何额外的指令。这使得它非常适合与高级函数式编程相结合。函数在提供准确表示的同时也具有惰性,例如可以相交一个曲面立方体以得到一个曲面四边形。
这个库是一个实验,旨在探讨如何利用同伦映射和高级函数式编程来迭代设计。函数名非常简短,以提供良好的用户体验。
依赖项
~68KB