6.8 KiB
6.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
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.