# Crate cgmath [−] [src]

Computer graphics-centric math.

This crate provides useful mathematical primitives and operations on them. It is organized into one module per primitive. The core structures are vectors and matrices. A strongly-typed interface is provided, to prevent mixing units or violating mathematical invariants.

Transformations are not usually done directly on matrices, but go through
transformation objects that can be converted to matrices. Rotations go
through the `Basis`

types, which are guaranteed to be orthogonal matrices.
Despite this, one can directly create a limited rotation matrix using the
`look_at`

, `from_angle`

, `from_euler`

, and `from_axis_angle`

methods.
These are provided for convenience.

## Macros

assert_approx_eq! | |

assert_approx_eq_eps! |

## Structs

Aabb2 |
A two-dimensional AABB, aka a rectangle. |

Aabb3 |
A three-dimensional AABB, aka a rectangular prism. |

AffineMatrix3 |
A homogeneous transformation matrix. |

Basis2 |
A two-dimensional rotation matrix. |

Basis3 |
A three-dimensional rotation matrix. |

Cylinder | |

Decomposed |
A generic transformation consisting of a rotation, displacement vector and scale amount. |

Deg |
An angle, in degrees |

Frustum | |

FrustumPoints | |

Line |
A generic directed line segment from |

Matrix2 |
A 2 x 2, column major matrix |

Matrix3 |
A 3 x 3, column major matrix |

Matrix4 |
A 4 x 4, column major matrix |

Obb2 | |

Obb3 | |

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. |

Plane |
A 3-dimensional plane formed from the equation: |

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 |

Ray |
A generic ray starting at |

Sphere | |

Vector2 | |

Vector3 | |

Vector4 |

## Enums

Relation |
Spatial relation between two objects. |

## Traits

Aabb | |

Angle |
Operations on angles. |

ApproxEq | |

Array1 |
An array containing elements of type |

Array2 |
A column-major array |

BaseFloat |
Base floating point types |

BaseInt |
Base integer types |

BaseNum |
Base numeric types with partial ordering |

Bound |
Generic bound. |

CompositeTransform | |

CompositeTransform2 | |

CompositeTransform3 | |

EuclideanVector |
Specifies geometric operations for vectors. This is only implemented for 2-dimensional and 3-dimensional vectors. |

FixedArray |
Homogeneous arrays of elements that can be converted to and from |

Intersect | |

Matrix | |

One |
Defines a multiplicative identity element for |

PartialOrd |
A trait providing a partial ordering. |

Point |
Specifies the numeric operations for point types. |

Projection | |

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. |

ToComponents |
A trait that allows extracting components (rotation, translation, scale) from an arbitrary transformations |

ToComponents2 | |

ToComponents3 | |

Transform |
A trait representing an affine transformation that can be applied to points or vectors. An affine transformation is one which |

Transform2 | |

Transform3 | |

Vector |
A trait that specifies a range of numeric operations for vectors. Not all of these make sense from a linear algebra point of view, but are included for pragmatic reasons. |

Zero |
Defines an additive identity element for |

## Functions

acos | |

asin | |

atan | |

atan2 | |

bisect | |

cos | |

cot | |

csc | |

deg |
Create a new angle, in degrees |

dot |
Dot product of two vectors. |

frustum |
Create a perspective matrix from a view frustrum. |

one |
Returns the multiplicative identity, |

ortho |
Create an orthographic projection matrix. |

perspective |
Create a perspective projection matrix. |

rad |
Create a new angle, in radians |

sec | |

sin | |

sin_cos | |

tan | |

vec2 |
The short constructor. |

vec3 |
The short constructor. |

vec4 |
The short constructor. |

zero |
Returns the additive identity, |

## Type Definitions

Line2 | |

Line3 | |

Ray2 | |

Ray3 |