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
51KB
971 行
ezcgmath
一个极为简化的线性代数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