PackageTrack
Sign in Get early access

cgmath

A linear algebra and mathematics library for computer graphics.

0.18.0 12M downloads/mo #2857 most downloaded on crates.io rustgd/cgmath

What this package is like to depend on

Last release 6 years ago

no release in 18 months

Ships unpredictably

gaps range from 8 days to 2.0 years

Some releases are documented

notes for 17 of 34 stable releases

2 versions withdrawn

withdrawn after publishing

12 years old

36 releases · first in 2015

0 releases in the last 12 months

see the full history below

Release timeline

36 releases · Feb 2015 to Jan 2021
2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release Withdrawn

Releases

latest 36
  1. 0.18.0 03 Jan 2021
    Release notes

    Release 0.18 (#520)

    Open source →
  2. 0.17.0 17 Jan 2019
    Release notes

    438: Angle: add the normalize_zero method r=kvark a=mathstuf

    This method is like normalize except that it normalizes to have an
    absolute value of no more than turn_div_2.


    This is useful for making sure that an angle is no more than some offset from a target angle (e.g., implementing maximum turn rates in games).

    Co-authored-by: Ben Boeckel [email protected]

    Open source →
    Release notes

    Added

    • Add signed Angle normalization

    Changed

    • Move lerp() from InnerSpace to VectorSpace
    • const constructors
    Open source →
  3. 0.16.1 21 Mar 2018
    Release notes

    Added

    • Implement ElementWise trait for point types
    • Add map function to points and vectors

    Changed

    • Remove BaseNum trait requirement for PointN::new functions
    Open source →
  4. 0.16.0 05 Jan 2018
    Release notes

    Added

    • Add InnerSpace::project_on
    • Add Array::len
    • Re-export Bounded and implement for vectors, points, and angles
    • Add vector subtraction to EuclideanSpace
    • Add swizzle functions behind that "swizzle" feature
    • Add Matrix4::look_at_dir

    Changed

    • Return Option from cast functions
    Open source →
    Release notes

    Added

    • Add InnerSpace::project_on
    • Add Array::len
    • Re-export Bounded and implement for vectors, points, and angles
    • Add vector subtraction to EuclideanSpace
    • Add swizzle functions behinde that "swizzle" feature
    • Add Matrix4::look_at_dir

    Changed

    • Return Option from cast functions
    Open source →
  5. 0.15.0 30 Jul 2017
    Release notes

    Added

    • Implement mint conversions behind a feature
    • Add Quaternion::cast

    Changed

    • Rename use_simd feature to simd
    • Rename eders feature to serde

    Fixed

    • Fix matrix inversions for small determinants
    Open source →
  6. 0.14.1 02 May 2017
    Release notes

    Fixed

    • Add a workaround for rust-lang/rust#41478, and in the process cleaned up some type projections for angles
    Open source →
  7. 0.14.0 26 Apr 2017

    Nothing published for this version

  8. 0.13.1 23 Apr 2017
    Release notes

    Changed

    • Update serde and serde_derive to version 1.0.
    Open source →
  9. 0.13.0 14 Apr 2017
    Release notes

    Added

    • Add optional use_simd feature to improve the performance of Vector4<f32>, Matrix4<f32> and Quaternion<f32>. According to @DaseinPhaos in #394, under the given benchmark certain operations were able to become up to 60% faster.
    • Add component wise casting for the matrix and point types

    Changed

    • Update serde to version 0.9, and use serde_derive instead of serde_macros.
    Open source →
  10. 0.12.0 14 Sep 2016
    Release notes

    Changed

    • Use approx for approximate equality comparisons
    • Remove #[repr(packed)] from all structs where it was specified
    • Update serde to 0.8
    Open source →
  11. 0.11.0 17 Aug 2016
    Release notes

    Added

    • Quaternion::from_arc

    Changed

    • Change the angle types to be tuple structs
    • Make from-angle constructors take generic Into<Rad<S>> values
    • Fix Decomposed::concat implementation
    Open source →
  12. 0.10.0 05 Jun 2016
    Release notes

    Added

    • A MetricSpace trait for types that have a distance between elements.
    • EuclideanSpace::{midpoint, centroid} functions with default implementations.
    • Vector1 and Point1 structs.
    • Serde support behind the eders feature flag.
    • An ApproxEq implementation for Decomposed.

    Changed

    • Depend on the num-traits crate rather than num, seeing as we only use the traits in num. num_traits has also been re-exported so that you can more easily use these in your project.
    • Use an Euler type for euler angle conversions.
    • Constrain InnerSpace by MetricSpace.
    • Constrain Rotation by One
    • Implement Transform and Transform3 for Matrix4.
    • Implement Transform, Transform2, and Transform3 for Matrix4.
    • Fix Euler-Quaternion and Quaternion-Euler conversions. The axes are now correct, and the angles are applied in x-y-z order. The conversion now matches the conversion from axis angle.
    • Fix Euler-{Matrix3, Matrix4} conversions.
    Open source →
  13. 0.9.1 20 Apr 2016
    Release notes

    Changed

    • Fix angle assignment operators so that they actually mutate self.
    Open source →
  14. 0.9.0 19 Apr 2016
    Release notes

    Changed

    • Assignment operators implementations have been stabilised, to coincide with their stabilisation in Rust 1.8.
    • Renames Vector trait to VectorSpace.
    • Renames EuclideanVector to InnerSpace.
    • Renames Point to EuclideanSpace, and Point::Vector to EuclideanSpace::Diff.
    • Quaternions now implement VectorSpace and InnerSpace for the functions they share.
    • The Matrix trait is now constraint by VectorSpace, with Matrix::Element removed in favor of VectorSpace::Scalar.
    Open source →
  15. 0.8.0 06 Apr 2016
    Release notes

    Added

    • Implements fmt::Debug for Basis2, Basis3, and AffineMatrix3
    • A prelude module for easy importing of common traits.
    • Constrained conversion functions for assisting in situations where type inference is difficult.
    • An ElementWise trait for non-mathematical element-wise operations.
    • A default implementation for EuclideanVector::angle.

    Changed

    • Improves the fmt::Debug impls for Vector, Matrix, Point, Decomposed, Quaternion and Angle to make them easier to derive, and have clearer formatting.
    • Marks vectors, points, matrices, and angles as #[repr(C, packed)].
    • Renames the Vector::{length, length2} functions to Vector::{magnitude, magnitude2}.
    • Move Angle::new to be directly implemented on the Rad and Deg types.
    • Move Vector::dot to EuclideanVector trait.
    • Move Vector::from_value to Array trait.

    Removed

    • The non-mathematical operator trait implementations have been removed from the Vector trait, in favor of the ElementWise trait.
    • Angle::equiv.
    • Remove neg_self method on vectors and matrices.
    Open source →
  16. 0.7.0 23 Dec 2015
    Release notes

    Added

    • Add missing by-ref and by-val permutations of Vector, Matrix, Point, Quaternion and Angle operators.
    • Ease lifetime constraints by removing 'static from some scalar type parameters.
    • Weaken type constraints on perspective function to take an Into<Rad<S>>.
    • Add Angle::new for constructing angles from a unitless scalar.
    • Implement assignment operators for nightly builds, enabled by the "unstable" feature.

    Changed

    • Vector, Matrix, Point, and Angle are now constrained to require specific operators to be overloaded. This means that generic code can now use operators, instead of the operator methods.
    • Take a Rad for ProjectionFov::fovy, rather than arbitrary Angles. This simplifies the signature of PerspectiveFov from PerspectiveFov<S, A> to PerspectiveFov<S>.
    • The following trait constraints were removed from Angle: Debug, ScalarConv, Into<Rad<S>>, Into<Deg<S>>.
    • Angle no longer requires One, and the implementations have been removed from Deg and Rad. This is because angles do not close over multiplication, and therefore cannot have a multiplicative identity. If we were truly accurate, Angle * Angle would return an Angle^2 (not supported by the current api).
    • Make remainder operators on Angles make sense from the perspective of dimensional analysis.
    • Moved free trigonometric functions onto Angle.

    Removed

    • Remove redundant Point::{min, max} methods - these are now covered by the Array::{min, max} methods that were introduced in 0.5.0.
    • Removed ToComponents, ToComponents2, and ToComponents3. If you were relying on ToComponents::decompose, you can produce the same effect by accessing the fields on Decomposed directly. To create the scale vector, use: Vector::from_value(transform.scale).
    • Removed CompositeTransform, CompositeTransform2, and CompositeTransform3.
    • Remove Vector::one. Vectors don't really have a multiplicative identity. If you really want a one vector, you can do something like: Vector::from_value(1.0).
    • Remove operator methods from Vector, Matrix, Point, and Angle traits in favor of operator overloading.
    • Remove *_self methods from Vector, Matrix, Point, and Angle. The operator methods can be used via the unstable assignment operators.
    • Remove #[derive(Hash)] from Deg and Rad. This could never really be used these types, because they expect to be given a BaseFloat under normal circumstances.
    Open source →
  17. 0.6.0 12 Dec 2015
    Release notes

    Added

    • This CHANGELOG for keeping track of notable changes.
    • Matrix4::{from_scale, from_nonuniform_scale} for easily constructing homogeneous scale matrices.

    Changed

    • Renamed SquareMatrix::one to SquareMatrix::identity. identity is easier to search for, and the more common name for the multiplicative identity for matrices.
    • Matrix impls have now been constrained to S: BaseFloat.
    Open source →
  18. 0.5.0 19 Nov 2015
    Release notes

    Changed

    • Take many point and vector parameters by value.
    • Take point and vector operator overloads by value.
    • Divide Matrix trait into Matrix and SquareMatrix, opening the door for non-square matrices in the future.
    • Make many trait type parameters associated types.
    • Move element-wise methods from Vector and Point onto the Array1 trait, and rename it to Array.
    • Make pointer access methods on Array match the naming scheme of those in the standard library.

    Removed

    • Removed collision types: Ray, Plane, Frustum, Aabb2, Aabb3 Obb2, Obb3 Sphere, Cylinder. These can now be found at csherratt/collision-rs.
    • Remove Array2 trait, moving methods onto the Matrix trait.
    Open source →
  19. 0.4.0 25 Oct 2015

    Nothing published for this version

  20. 0.3.1 20 Sep 2015

    Nothing published for this version

  21. 0.3.0 20 Sep 2015

    Nothing published for this version

  22. 0.2.0 11 May 2015

    Nothing published for this version

  23. 0.1.6 10 May 2015 withdrawn

    Nothing published for this version

  24. 0.1.5 24 Apr 2015

    Nothing published for this version

  25. 0.1.4 24 Apr 2015 withdrawn

    Nothing published for this version

  26. 0.1.3 07 Apr 2015

    Nothing published for this version

  27. 0.1.2 01 Apr 2015

    Nothing published for this version

  28. 0.1.1 26 Mar 2015

    Nothing published for this version

  29. 0.1.0 15 Mar 2015

    Nothing published for this version

  30. 0.0.8 09 Mar 2015

    Nothing published for this version

  31. 0.0.7 01 Mar 2015

    Nothing published for this version

  32. 0.0.6 21 Feb 2015

    Nothing published for this version

  33. 0.0.5 17 Feb 2015

    Nothing published for this version

  34. 0.0.4 12 Feb 2015

    Nothing published for this version

  35. 0.0.3 08 Feb 2015

    Nothing published for this version

  36. 0.0.2 01 Feb 2015

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive