cgmath/CHANGELOG.md
Jordan Miner c11371794f Fix Euler angle to matrix conversion
The equations were written with rows horizontally instead of vertically
and some signs were wrong.
2016-05-12 01:28:16 -05:00

8 KiB

Change Log

All notable changes to this project will be documented in this file, following the format defined at keepachangelog.com. This project adheres to Semantic Versioning.

Unreleased

Changed

  • Fix Euler angles to quaternion and quaternion to Euler angles conversion. The axes are now correct, and the order the angles are applied is XYZ. The conversion now matches the conversion from axis angle.
  • Fix Euler angles to matrix conversion.

[v0.9.1] - 2016-04-20

Changed

  • Fix angle assignment operators so that they actually mutate self.

v0.9.0 - 2016-04-19

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.

v0.8.0 - 2016-04-06

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.

v0.7.0 - 2015-12-23

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.

v0.6.0 - 2015-12-12

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.

v0.5.0 - 2015-11-20

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.

v0.4.0 - 2015-10-25

v0.3.1 - 2015-09-20

v0.3.0 - 2015-09-20

v0.2.0 - 2015-05-11

v0.1.6 - 2015-05-10

v0.1.5 - 2015-04-25

v0.1.4 - 2015-04-24

v0.1.3 - 2015-04-06

v0.1.2 - 2015-04-01

v0.1.1 - 2015-03-25

v0.1.0 - 2015-03-15

v0.0.8 - 2015-03-09

v0.0.7 - 2015-03-01

v0.0.6 - 2015-02-21

v0.0.5 - 2015-02-16

v0.0.4 - 2015-02-11

v0.0.3 - 2015-02-08

v0.0.1 - 2014-06-24