12 KiB
12 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.16.0 - 2018-01-03
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
v0.15.0 - 2017-07-30
Added
- Implement
mint
conversions behind a feature - Add
Quaternion::cast
Changed
- Rename
use_simd
feature tosimd
- Rename
eders
feature toserde
Fixed
- Fix matrix inversions for small determinants
v0.14.1 - 2017-05-02
Fixed
- Add a workaround for rust-lang/rust#41478, and in the process cleaned up some type projections for angles
v0.14.0 - 2017-04-26
Changed
- Constrain
VectorSpace
,Rotation
, andAngle
byiter::Sum
- Constrain
SquareMatrix
byiter::Product
v0.13.1 - 2017-04-22
Changed
- Update
serde
andserde_derive
to version1.0
.
[v0.13.0] - 2017-04-14
Added
- Add optional
use_simd
feature to improve the performance ofVector4<f32>
,Matrix4<f32>
andQuaternion<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 version0.9
, and useserde_derive
instead ofserde_macros
.
v0.12.0 - 2016-09-14
Changed
- Use approx for approximate equality comparisons
- Remove
#[repr(packed)]
from all structs where it was specified - Update serde to 0.8
v0.11.0 - 2016-08-17
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
v0.10.0 - 2016-05-11
Added
- A
MetricSpace
trait for types that have a distance between elements. EuclideanSpace::{midpoint, centroid}
functions with default implementations.Vector1
andPoint1
structs.- Serde support behind the
eders
feature flag. - An
ApproxEq
implementation forDecomposed
.
Changed
- Depend on the
num-traits
crate rather thannum
, seeing as we only use the traits innum
.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
byMetricSpace
. - Constrain
Rotation
byOne
- Implement
Transform
andTransform3
forMatrix4
. - Implement
Transform
,Transform2
, andTransform3
forMatrix4
. - Fix
Euler
-Quaternion
andQuaternion
-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.
Removed
Rotation::transform_as_point
AffineMatrix3
Rotation::invert_self
Matrix::invert_self
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.