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 origin to dest.

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: A*x + B*y + C*z - D = 0.

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 origin and extending infinitely in direction.

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 Element

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.

Intersect
Matrix
One

Defines a multiplicative identity element for Self.

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

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

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

Type Definitions

Line2
Line3
Ray2
Ray3