Crate cgmath

Source
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
PerspectiveFov
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§

AbsDiffEq
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
BaseFloat
Base floating point types
BaseNum
Base numeric types with partial ordering
Bounded
Numbers which have upper and lower bounds
ElementWise
Element-wise arithmetic operations. These are supplied for pragmatic reasons, but will usually fall outside of traditional algebraic properties.
EuclideanSpace
Points in a Euclidean space with an associated space of displacement vectors.
InnerSpace
Vectors that also have a dot (or inner) product.
Matrix
A column-major matrix of arbitrary dimensions.
MetricSpace
A type with a distance function between values.
One
Defines a multiplicative identity element for Self.
RelativeEq
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.
SquareMatrix
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.
VectorSpace
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.