2个版本

使用旧的Rust 2015

0.1.2 2023年4月28日
0.1.1 2023年4月28日
0.1.0 2023年4月27日

#771 in 数学

每月 35 次下载

MIT 协议

90KB
2K SLoC

线性代数的结构和方法。

此crate提供了3种主要类型的结构体,实现了基本的算术运算(如+和-),并提供了有用的方法。

  • 处理向量(如Vec2Vec3)的结构体。
  • 处理不同类型内存组织数组向量的结构体,如Vec3arrVec3box,分别用于固定长度数组和boxed数组。
  • 处理方阵的结构体,如Mat22Mat33

向量可以轻松初始化和使用。

use lineq::vec3::Vec3;
let a : Vec3 = Vec3::UP;
let b : Vec3 = Vec3 { x: -1.0, y: 0.0, z: 0.0 };
assert_eq!(a.cross(b),Vec3::IN);

向量数组可用于并行化算术运算。

use lineq::vec3::Vec3;
use lineq::vec3arr::Vec3arr;
//using a and b from last example:
let ab : Vec3arr = Vec3arr([a,b]);
let cd : Vec3arr = Vec3arr([Vec3::DOWN,Vec3::RIGHT]);
assert_eq!(ab + cd, Vec3arr([Vec3::ZERO,Vec3::ZERO]));

矩阵索引如x1, y2, z3 ... 其中x, y, z是行,1, 2, 3是列。

use lineq::vec3::Vec3;
use lineq::mat33::Mat33;
//using a and b from first example:
let c : Vec3 = Vec3{ x: 1.0, y: -1.0, z: 2.0 };
let m1 : Mat33 = Mat33::augment(a,b,c);
let m2 : Mat33 = Mat33{
x1: 0.0, x2: -1.0, x3: 1.0,
y1: 1.0, y2: 0.0, y3: -1.0,
z1: 0.0, z2: 0.0, z3: 2.0 }
assert_eq!(m1,m2);

无运行时依赖