Expand description
A low-dimensional linear algebra library, targeted at computer graphics.
§Trait overview
In order to make a clean, composable API, we divide operations into traits that are roughly based on mathematical properties. The main ones that we concern ourselves with are listed below:
VectorSpace
: Specifies the main operators for vectors, quaternions, and matrices.MetricSpace
: For types that have a distance function implemented.InnerSpace
: For types that have a dot (or inner) product - ie. vectors or quaternions. This also allows for the definition of operations that are based on the dot product, like finding the magnitude or normalizing.EuclideanSpace
: Points in euclidean space, with an associated space of displacement vectors.Matrix
: Common operations for matrices of arbitrary dimensions.SquareMatrix
: A special trait for matrices where the number of columns equal the number of rows.
Other traits are included for practical convenience, for example:
Array
: For contiguous, indexable arrays of elements, specifically vectors.ElementWise
: For element-wise addition, subtraction, multiplication, division, and remainder operations.
§The prelude
Importing each trait individually can become a chore, so we provide a
prelude
module to allow you to import the main traits all at once. For
example:
use cgmath::prelude::*;
Re-exports§
pub extern crate num_traits;
Modules§
- conv
- Constrained conversion functions for assisting in situations where type inference is difficult.
- prelude
- This module contains the most common traits used in
cgmath
. By glob-importing this module, you can avoid the need to import each trait individually, while still being selective about what types you import.
Macros§
- abs_
diff_ eq - Approximate equality of using the absolute difference.
- abs_
diff_ ne - Approximate inequality of using the absolute difference.
- assert_
abs_ diff_ eq - An assertion that delegates to
abs_diff_eq!
, and panics with a helpful error on failure. - assert_
abs_ diff_ ne - An assertion that delegates to
abs_diff_ne!
, and panics with a helpful error on failure. - assert_
relative_ eq - An assertion that delegates to
relative_eq!
, and panics with a helpful error on failure. - assert_
relative_ ne - An assertion that delegates to
relative_ne!
, and panics with a helpful error on failure. - assert_
ulps_ eq - An assertion that delegates to
ulps_eq!
, and panics with a helpful error on failure. - assert_
ulps_ ne - An assertion that delegates to
ulps_ne!
, and panics with a helpful error on failure. - relative_
eq - Approximate equality using both the absolute difference and relative based comparisons.
- relative_
ne - Approximate inequality using both the absolute difference and relative based comparisons.
- ulps_eq
- Approximate equality using both the absolute difference and ULPs (Units in Last Place).
- ulps_ne
- Approximate inequality using both the absolute difference and ULPs (Units in Last Place).
Structs§
- AbsDiff
- The requisite parameters for testing for approximate equality using a absolute difference based comparison.
- Basis2
- A two-dimensional rotation matrix.
- Basis3
- A three-dimensional rotation matrix.
- Decomposed
- A generic transformation consisting of a rotation, displacement vector and scale amount.
- Deg
- An angle, in degrees.
- Euler
- A set of Euler angles representing a rotation in three-dimensional space.
- Matrix2
- A 2 x 2, column major matrix
- Matrix3
- A 3 x 3, column major matrix
- Matrix4
- A 4 x 4, column major matrix
- Ortho
- An orthographic projection with arbitrary left/right/bottom/top distances
- Perspective
- A perspective projection with arbitrary left/right/bottom/top distances
- Perspective
Fov - A perspective projection based on a vertical field-of-view angle.
- Point1
- A point in 1-dimensional space.
- Point2
- A point in 2-dimensional space.
- Point3
- A point in 3-dimensional space.
- Quaternion
- A quaternion in scalar/vector form.
- Rad
- An angle, in radians.
- Relative
- The requisite parameters for testing for approximate equality using a relative based comparison.
- Ulps
- The requisite parameters for testing for approximate equality using an ULPs based comparison.
- Vector1
- A 1-dimensional vector.
- Vector2
- A 2-dimensional vector.
- Vector3
- A 3-dimensional vector.
- Vector4
- A 4-dimensional vector.
Traits§
- AbsDiff
Eq - Equality that is defined using the absolute difference of two numbers.
- Angle
- Angles and their associated trigonometric functions.
- Array
- An array containing elements of type
Element
- Base
Float - Base floating point types
- BaseNum
- Base numeric types with partial ordering
- Bounded
- Numbers which have upper and lower bounds
- Element
Wise - Element-wise arithmetic operations. These are supplied for pragmatic reasons, but will usually fall outside of traditional algebraic properties.
- Euclidean
Space - Points in a Euclidean space with an associated space of displacement vectors.
- Inner
Space - Vectors that also have a dot (or inner) product.
- Matrix
- A column-major matrix of arbitrary dimensions.
- Metric
Space - A type with a distance function between values.
- One
- Defines a multiplicative identity element for
Self
. - Relative
Eq - Equality comparisons between two numbers using both the absolute difference and relative based comparisons.
- Rotation
- A trait for a generic rotation. A rotation is a transformation that creates a circular motion, and preserves at least one point in the space.
- Rotation2
- A two-dimensional rotation.
- Rotation3
- A three-dimensional rotation.
- Square
Matrix - A column-major major matrix where the rows and column vectors are of the same dimensions.
- Transform
- A trait representing an affine transformation that can be applied to points or vectors. An affine transformation is one which
- Transform2
- Transform3
- UlpsEq
- Equality comparisons between two numbers using both the absolute difference and ULPs (Units in Last Place) based comparisons.
- Vector
Space - Vectors that can be added together and multiplied by scalars.
- Zero
- Defines an additive identity element for
Self
.
Functions§
- dot
- Dot product of two vectors.
- frustum
- Create a perspective matrix from a view frustum.
- ortho
- Create an orthographic projection matrix.
- perspective
- Create a perspective projection matrix.
- point1
- The short constructor.
- point2
- The short constructor.
- point3
- The short constructor.
- vec1
- The short constructor.
- vec2
- The short constructor.
- vec3
- The short constructor.
- vec4
- The short constructor.