#graphics #matrix-vector #vector #matrix #gamedev #linear-algebra

ezcgmath

适用于计算机图形学的高效线性代数数学库

4个版本

0.0.4 2020年9月16日
0.0.3 2020年9月16日
0.0.2 2020年9月11日
0.0.1 2020年9月11日

#64 in #matrix-vector

MIT 许可证

51KB
971

ezcgmath

build crates.io docs.rs

一个极为简化的线性代数API,适用于计算机图形学。

数学应该是有趣和简单的。这个crate的目标是为初学者和专家简化计算机图形学应用中的数学使用。这是通过提供一个简单直观的API和良好的文档以及零抽象来实现。

实现细节

数据类型 Scalar 固定为 f32。这选择是因为它与图形API的简单兼容性。如果因此遇到任何限制,用户需要自己创建抽象。

坐标系固定为左手系,Y轴向上。如果您想转换到不同的坐标系,您可以通过创建一个反射矩阵并在适当的位置应用它来实现。

此API中的变换按行主序应用。提醒一下,这意味着变换按指定的顺序应用。例如,如果您想缩放、旋转然后平移一个位置向量,您将按“阅读顺序”编写这些变换。

use ezcgmath::prelude::*;

let position_vector = Vector3::new(5.0, 0.0, 0.0);
let scale_matrix = Matrix4x4::from_nonuniform_scale(&Vector3::new(2.0, 1.0, 1.0));
let rotation_matrix = Quaternion::from_axis_angle(&Vector3::new(0.0, 1.0, 0.0), &Degrees(90.0));
let translation_matrix = Matrix4x4::from_translation(&Vector3::new(0.0, 0.0, 10.0));
let transformed_vector = position_vector * scale_matrix * rotation_matrix * translation_matrix;

免责声明

ezcgmath仍然是一个非常正在进行中的项目。如果您希望填补任何空白,请随时在GitHub上提交问题,以便我们可以开始讨论。如果您想做出贡献,那太好了!请阅读CONTRIBUTING.md以了解一些关于过程的指南。

依赖关系

~190KB