Merge pull request #1008 from dimforge/default_geometry

Implement Default for most geometry types
This commit is contained in:
Sébastien Crozet 2021-10-14 11:57:41 +02:00 committed by GitHub
commit 8181aa687c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 64 additions and 0 deletions

View File

@ -13,6 +13,8 @@ This project adheres to [Semantic Versioning](https://semver.org/).
`glam 0.18`. These can be enabled by enabling the `convert-glam018` cargo features. `glam 0.18`. These can be enabled by enabling the `convert-glam018` cargo features.
- Added the methods `Matrix::product`, `::row_product`, `::row_product_tr`, and `::column_product` to compute the - Added the methods `Matrix::product`, `::row_product`, `::row_product_tr`, and `::column_product` to compute the
product of the components, rows, or columns, of a single matrix or vector. product of the components, rows, or columns, of a single matrix or vector.
- The `Default` trait is now implemented for most geometric types: `Point`, `Isometry`, `Rotation`, `Similarity`,
`Transform`, `UnitComplex`, and `UnitQuaternion`.
## [0.29.0] ## [0.29.0]
### Breaking changes ### Breaking changes

View File

@ -21,6 +21,15 @@ use crate::{
UnitQuaternion, UnitQuaternion,
}; };
impl<T: SimdRealField, R: AbstractRotation<T, D>, const D: usize> Default for Isometry<T, R, D>
where
T::Element: SimdRealField,
{
fn default() -> Self {
Self::identity()
}
}
impl<T: SimdRealField, R: AbstractRotation<T, D>, const D: usize> Isometry<T, R, D> impl<T: SimdRealField, R: AbstractRotation<T, D>, const D: usize> Isometry<T, R, D>
where where
T::Element: SimdRealField, T::Element: SimdRealField,

View File

@ -19,6 +19,15 @@ use simba::scalar::{ClosedDiv, SupersetOf};
use crate::geometry::Point; use crate::geometry::Point;
impl<T: Scalar + Zero, D: DimName> Default for OPoint<T, D>
where
DefaultAllocator: Allocator<T, D>,
{
fn default() -> Self {
Self::origin()
}
}
/// # Other construction methods /// # Other construction methods
impl<T: Scalar, D: DimName> OPoint<T, D> impl<T: Scalar, D: DimName> OPoint<T, D>
where where

View File

@ -6,6 +6,15 @@ use crate::base::{SMatrix, Scalar};
use crate::geometry::Rotation; use crate::geometry::Rotation;
impl<T, const D: usize> Default for Rotation<T, D>
where
T: Scalar + Zero + One,
{
fn default() -> Self {
Self::identity()
}
}
/// # Identity /// # Identity
impl<T, const D: usize> Rotation<T, D> impl<T, const D: usize> Rotation<T, D>
where where

View File

@ -20,6 +20,16 @@ use crate::{
Translation, UnitComplex, UnitQuaternion, Translation, UnitComplex, UnitQuaternion,
}; };
impl<T: SimdRealField, R, const D: usize> Default for Similarity<T, R, D>
where
T::Element: SimdRealField,
R: AbstractRotation<T, D>,
{
fn default() -> Self {
Self::identity()
}
}
impl<T: SimdRealField, R, const D: usize> Similarity<T, R, D> impl<T: SimdRealField, R, const D: usize> Similarity<T, R, D>
where where
T::Element: SimdRealField, T::Element: SimdRealField,

View File

@ -8,6 +8,16 @@ use crate::base::{Const, DefaultAllocator, OMatrix};
use crate::geometry::{TCategory, Transform}; use crate::geometry::{TCategory, Transform};
impl<T: RealField, C: TCategory, const D: usize> Default for Transform<T, C, D>
where
Const<D>: DimNameAdd<U1>,
DefaultAllocator: Allocator<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>,
{
fn default() -> Self {
Self::identity()
}
}
impl<T: RealField, C: TCategory, const D: usize> Transform<T, C, D> impl<T: RealField, C: TCategory, const D: usize> Transform<T, C, D>
where where
Const<D>: DimNameAdd<U1>, Const<D>: DimNameAdd<U1>,

View File

@ -15,6 +15,12 @@ use simba::scalar::{ClosedAdd, SupersetOf};
use crate::base::{SVector, Scalar}; use crate::base::{SVector, Scalar};
use crate::geometry::Translation; use crate::geometry::Translation;
impl<T: Scalar + Zero, const D: usize> Default for Translation<T, D> {
fn default() -> Self {
Self::identity()
}
}
impl<T: Scalar, const D: usize> Translation<T, D> { impl<T: Scalar, const D: usize> Translation<T, D> {
/// Creates a new identity translation. /// Creates a new identity translation.
/// ///

View File

@ -17,6 +17,15 @@ use crate::geometry::{Rotation2, UnitComplex};
use simba::scalar::{RealField, SupersetOf}; use simba::scalar::{RealField, SupersetOf};
use simba::simd::SimdRealField; use simba::simd::SimdRealField;
impl<T: SimdRealField> Default for UnitComplex<T>
where
T::Element: SimdRealField,
{
fn default() -> Self {
Self::identity()
}
}
/// # Identity /// # Identity
impl<T: SimdRealField> UnitComplex<T> impl<T: SimdRealField> UnitComplex<T>
where where