7.7 KiB
7.7 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
[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 toVectorSpace
. - Renames
EuclideanVector
toInnerSpace
. - Renames
Point
toEuclideanSpace
, andPoint::Vector
toEuclideanSpace::Diff
. Quaternion
s now implementVectorSpace
andInnerSpace
for the functions they share.- The
Matrix
trait is now constraint byVectorSpace
, withMatrix::Element
removed in favor ofVectorSpace::Scalar
.
v0.8.0 - 2016-04-06
Added
- Implements
fmt::Debug
forBasis2
,Basis3
, andAffineMatrix3
- 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 forVector
,Matrix
,Point
,Decomposed
,Quaternion
andAngle
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 toVector::{magnitude, magnitude2}
. - Move
Angle::new
to be directly implemented on theRad
andDeg
types. - Move
Vector::dot
toEuclideanVector
trait. - Move
Vector::from_value
toArray
trait.
Removed
- The non-mathematical operator trait implementations have been removed from
the
Vector
trait, in favor of theElementWise
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
andAngle
operators. - Ease lifetime constraints by removing
'static
from some scalar type parameters. - Weaken type constraints on
perspective
function to take anInto<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
, andAngle
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
forProjectionFov::fovy
, rather than arbitraryAngle
s. This simplifies the signature ofPerspectiveFov
fromPerspectiveFov<S, A>
toPerspectiveFov<S>
. - The following trait constraints were removed from
Angle
:Debug
,ScalarConv
,Into<Rad<S>>
,Into<Deg<S>>
. Angle
no longer requiresOne
, and the implementations have been removed fromDeg
andRad
. 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 anAngle^2
(not supported by the current api).- Make remainder operators on
Angle
s 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 theArray::{min, max}
methods that were introduced in 0.5.0. - Removed
ToComponents
,ToComponents2
, andToComponents3
. If you were relying onToComponents::decompose
, you can produce the same effect by accessing the fields onDecomposed
directly. To create the scale vector, use:Vector::from_value(transform.scale)
. - Removed
CompositeTransform
,CompositeTransform2
, andCompositeTransform3
. - Remove
Vector::one
. Vectors don't really have a multiplicative identity. If you really want aone
vector, you can do something like:Vector::from_value(1.0)
. - Remove operator methods from
Vector
,Matrix
,Point
, andAngle
traits in favor of operator overloading. - Remove
*_self
methods fromVector
,Matrix
,Point
, andAngle
. The operator methods can be used via the unstable assignment operators. - Remove
#[derive(Hash)]
fromDeg
andRad
. This could never really be used these types, because they expect to be given aBaseFloat
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
toSquareMatrix::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 intoMatrix
andSquareMatrix
, opening the door for non-square matrices in the future. - Make many trait type parameters associated types.
- Move element-wise methods from
Vector
andPoint
onto theArray1
trait, and rename it toArray
. - 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 theMatrix
trait.