1 个不稳定版本

使用旧的Rust 2015

0.1.0 2016年8月25日

#1121数学

MIT/Unlicense

37KB
851

det-rs

使用Rust宏计算方阵的行列式

不应直接使用此宏。相反,它应该在用于其他地方的函数内部调用。

用法

计算平行四边形的面积

pub fn find_orthonormal_4(a: &Vector2<f32>, b: &Vector2<f32>) -> f32 {
    det_copy!(a.x, a.y,
              b.x, b.y)
}

使用nalgebra计算4D正交向量

pub fn find_orthonormal_4(a: &Vector4<f32>, b: &Vector4<f32>, c: &Vector4<f32>) -> Vector4<f32> {
    det_copy!(Vector4::x(), Vector4::y(), Vector4::z(), Vector4::w(),
              a.x,          a.y,          a.z,          a.w,
              b.x,          b.y,          b.z,          b.w,
              c.x,          c.y,          c.z,          c.w         )
}

通常在这些情况下应使用 det!,但奇怪的是,它会导致类型递归错误,所以我们使用 det_copy! 代替。注意,构造函数(例如 Vector4::x())会多次执行。为了避免这种情况,首先将向量绑定到变量,然后传递变量。

要求

有各种宏用于不同类型的值。

  • det_copy!
    1. T: 复制
    2. T: Mul<T, 输出=T>
    3. T: 减法<T, 输出=T>
    4. T: 加法<T, 输出=T>
  • det_clone!
    1. T: 克隆
    2. T: Mul<T, 输出=T>
    3. T: 减法<T, 输出=T>
    4. T: 加法<T, 输出=T>
  • det!
    1. T: Mul<T, 输出=T>
    2. 对于<'a> &'aT: Mul<T, 输出=T>
    3. 对于<'a, 'b> &'aT: Mul<&'bT, 输出=T>
    4. T: 减法<T, 输出=T>
    5. T: 加法<T, 输出=T>

无运行时依赖