Commit Graph

1391 Commits

Author SHA1 Message Date
Yuri Edward d82b39ca9a Added to_homogeneous 2021-10-19 16:01:02 +02:00
Yuri Edward f1f947b924 Added to_homogeneous 2021-10-19 15:55:06 +02:00
Yuri Edward c249cc76b0 Added inverse, inverse_mut inverse_transform_point and transform_point 2021-10-19 15:02:50 +02:00
Yuri Edward cf811abb92 Added identity() 2021-10-19 14:47:46 +02:00
Yuri Edward bfb4aceede Updated operator overloads + fixed scale_construction 2021-10-19 14:31:20 +02:00
Yuri Edward 9c506b18e1 Renamed all instances of Translation to Scale 2021-10-19 14:21:26 +02:00
Yuri Edward 1252fb00a0 Added scale.rs 2021-10-19 14:05:51 +02:00
Yuri Edward 8c6ad490bc Initial commit copy all translation_x files into scale_x files 2021-10-19 14:02:07 +02:00
Sébastien Crozet ec700ab7cf Fix conflicting Default impl for unit-quaternions. 2021-10-14 11:48:12 +02:00
Sébastien Crozet 7275b5146e Implement Default for most geometry types 2021-10-14 11:39:22 +02:00
Max Verevkin bf48e093a9 fix linear indexing of matrix slices 2021-10-06 18:02:02 +03:00
Sébastien Crozet 97a79a994b Add methods to compute the products of a single matrix components/rows/columns 2021-10-06 10:48:46 +02:00
Sébastien Crozet 2e9c8aef20
Merge pull request #1002 from MaxVerevkin/unsafe-dim
make Dim trait unsafe
2021-10-04 09:32:13 +02:00
Max Verevkin 65d3b42ff9 make Dim trait unsafe 2021-10-03 20:26:34 +03:00
Max Verevkin ba7ededbf9 remove unnecessary `T: Scalar` 2021-09-26 21:07:34 +03:00
Max Verevkin 5cbff59f80 simplify Matrix::is_identity while also improving performance 2021-09-26 19:34:19 +03:00
Sébastien Crozet 7f236d88aa
Merge pull request #991 from MaxVerevkin/fix-ub
Fix UB in `Matrix::perp()`
2021-09-26 11:05:44 +02:00
Sébastien Crozet 5d9dbb62ef
Merge pull request #993 from MaxVerevkin/deny-unused-mut
deny unused_mut and unused_variables
2021-09-26 10:59:27 +02:00
Max Verevkin f4a8b4cfa1 deny unused_mut and unused_variables 2021-09-25 22:05:31 +03:00
Max Verevkin b91eecebcd Matrix::perp() fix UB 2021-09-25 21:52:09 +03:00
Sébastien Crozet 85202f85f7
Merge pull request #986 from Ralith/concise-debug
Concise Debug impls
2021-09-25 17:23:14 +02:00
Sébastien Crozet dd8b6800f5
Merge pull request #992 from MaxVerevkin/exp-rs
exp.rs: factorial(): use precomputed factorial array
2021-09-25 12:32:11 +02:00
Sébastien Crozet d12ad891f9
Merge pull request #981 from geieredgar/dev
Implement conversion traits for glam 0.18
2021-09-25 12:12:25 +02:00
Max Verevkin ad8250c361 exp.rs: factorial(): use precomputed factorial array 2021-09-21 23:14:42 +03:00
Sébastien Crozet 654eca7f80
Merge pull request #979 from Fuuzetsu/cholesky-lax
Allow setting Cholesky field directly; more lax decomposition method
2021-09-17 05:16:39 -07:00
Benjamin Saunders 0541f13b26 Concise Debug impls
Replace the verbose derived (or nearly equivalent) Debug impls for
several newtypes with explicit impls that forward to the inner type,
making readable diagnostics logging much easier.
2021-09-12 10:56:25 -07:00
Mateusz Kowalczyk fc3526b58a
Allow fallback value for Cholesky decomposition
This is useful in case where the values are very close to zero or
possibly even slightly negative. This can quite easily happen due to
numerical errors.

A common strategy is to replace these values with a small epsilon value
that keeps the matrix SPD. Some libraries even do this by default (such
as https://github.com/STOR-i/GaussianProcesses.jl/issues/1).

We point the user to `LU` decomposition and also make it clearer that
the method is basically a hack. The public method no longer takes an
`Option` which didn't really make sense. A private method is used to not
repeat implementation in `new`.
2021-09-03 09:01:04 +09:00
Mateusz Kowalczyk a4c2ca941d
Allow constructing Cholesky struct directly
This is useful if there the data for the matrix comes from elsewhere,
such as a custom algorithm. One such use-case can be seen
https://github.com/nestordemeure/friedrich/issues/43 where we do special
handling for the try_sqrt or is_zero cases that would normally fail the
decomposition in `Cholesky::new()`.
2021-09-03 09:01:04 +09:00
Edgar Geier bc21b6f1e6
Add support for conversion with glam 0.18 2021-08-30 18:31:21 +02:00
Sébastien Crozet 319597e137
Merge pull request #974 from cchillen/RotationDocumentation
Improve clarity of Rotation doc comments
2021-08-30 10:32:47 +02:00
Sébastien Crozet 90e531337a
Merge pull request #969 from remilauzier/dev
Fix some clippy warnings
2021-08-30 10:11:51 +02:00
Rémi Lauzier ea9a9e8b7f
Fix some clippy warnings 2021-08-28 12:05:21 -04:00
cchillen 5b84c46840 Update imports in doc example. 2021-08-28 09:41:09 -04:00
cchillen 25341e40f0 Improve clarity of Rotation doc comments
The doc comments for `Rotation` incorreclty refer to quaternion instead of a rotation matrix. No code change, purely documentation.
2021-08-28 09:09:53 -04:00
raimundo saona 2233a38048 Implement conversion methods for RowDVector 2021-08-26 11:07:00 +02:00
Sébastien Crozet bd9e0fb72c Add support for conversion with glam 0.16 and 0.17 2021-08-08 17:41:10 +02:00
Sébastien Crozet a9ed6cb621 Fix wrong sign in UnitComplex::axis_angle 2021-08-08 13:23:09 +02:00
Sébastien Crozet 1bc919e0db
Merge pull request #962 from dimforge/non-copy-types
Tha clone wars: allow non-copy scalar types everywhere
2021-08-08 13:21:39 +02:00
Marius Knaust 649e0f5a59
Fix wrong reference in docs. 2021-08-07 12:06:15 +02:00
Sébastien Crozet dd6c40016e Remove the Copy requirement from SimdRealField. 2021-08-04 17:34:25 +02:00
Sébastien Crozet 65b299557c More inlining. 2021-08-04 11:19:57 +02:00
Sébastien Crozet 6d57396a42 Remove the Scalar::is method, which is unsound. 2021-08-03 17:53:48 +02:00
Sébastien Crozet eedb860565 Fix missing docs. 2021-08-03 17:27:15 +02:00
Sébastien Crozet d609a2f174 Address unsoundness in the resizing API. 2021-08-03 17:02:42 +02:00
Sébastien Crozet 27ae30b46a First step to fix unsoundness on the resize API. 2021-08-03 10:59:03 +02:00
Sébastien Crozet f67a81e50a Fix build with --all-features 2021-08-03 10:07:05 +02:00
Sébastien Crozet 7a1a4bcc02 Fix test and no-std builds. 2021-08-03 09:54:11 +02:00
Sébastien Crozet 8c6ebf2757 Implement the single-allocator-trait approach. 2021-08-02 18:41:46 +02:00
Sébastien Crozet d34fed45bc Merge branch 'dev' into ub3 2021-08-02 18:40:33 +02:00
Sébastien Crozet 441bfcb3ff
Merge pull request #955 from qu1x/reflection
Add bias getter and alias for reflection.
2021-08-01 10:29:11 +02:00
Violeta Hernández 2243a11e89 Added some derives 2021-07-29 12:33:45 -05:00
Rémi Lauzier c35f792b4f
Fix some warnings 2021-07-27 19:24:55 -04:00
Sébastien Crozet 2a80e96766
Merge pull request #948 from CAD97/ops-transform-complex
Add Transform × UnitComplex & friends
2021-07-27 15:22:53 +02:00
Sébastien Crozet 99a79d51f5
Merge pull request #925 from CAD97/bytemuck
Impl bytemuck traits for geometry types
2021-07-27 15:19:14 +02:00
Sébastien Crozet 15c4a25c96
Merge pull request #950 from CAD97/moar-const
Make `from_matrix_unchecked`es const
2021-07-27 15:18:42 +02:00
Rouven Spreckels 9824fbc67b Add reflection alias. 2021-07-27 15:18:07 +02:00
Rouven Spreckels 06e20b4b95 Add getter for reflection bias. Fix typos. 2021-07-27 15:17:30 +02:00
Sébastien Crozet 0d3af06e01
Merge pull request #952 from remilauzier/dev
Fix rust_2018_idioms warnings
2021-07-27 10:29:40 +02:00
Andreas Longva de540aa7ff Do not require T: (De)Serialize for OPoint impl
The bounds recently got a little too strict by accident.
2021-07-26 17:57:24 +02:00
Rémi Lauzier ed6b34a0d6
Fix rust_2018_idioms warnings 2021-07-25 13:18:21 -04:00
CAD97 ceb30a68b8 Fix a few bitrotted user guide links 2021-07-23 21:22:59 -05:00
CAD97 04dd3ff241 Make some from_matrix_unchecked const 2021-07-22 18:07:12 -05:00
Christopher Durham 07c3fbc191
Merge branch 'dev' into bytemuck 2021-07-22 17:47:57 -05:00
Violeta Hernández 22b657f566 First draft of `Owned` overhaul 2021-07-19 18:00:40 -05:00
Violeta Hernández a753d84aae cargo fmt 2021-07-17 21:50:06 -05:00
Violeta Hernández b74be8499f Miscellaneous improvements 2021-07-17 21:43:50 -05:00
Violeta Hernández 10b5dc9bb6 Many miscellaneous improvements throughout 2021-07-17 20:19:20 -05:00
Violeta Hernández 7e1b2f81b3 Fixed some more blatant issues 2021-07-17 13:53:01 -05:00
Violeta Hernández fa1ed9683b Got rid of the `unimplemented_or_uninitialized_generic` macro 2021-07-17 13:36:35 -05:00
Violeta Hernández 0687318c7a Tests work! 2021-07-17 13:30:57 -05:00
Violeta Hernández c01d591478 We have reached compilation! 2021-07-17 13:01:03 -05:00
Violeta Hernández 9a528e23b9 Almost! 2021-07-17 04:36:14 -05:00
Violeta Hernández a6b8dd6d78 Checkpoint #10 2021-07-17 02:52:57 -05:00
Violeta Hernández 87fe2b30df Checkpoint #9 2021-07-16 23:17:56 -05:00
Violeta Hernández c3f869e017 Checkpoint #8 2021-07-16 01:53:28 -05:00
Violeta Hernández 8270dd8e89 `ops.rs` works too now! 2021-07-16 00:39:15 -05:00
Violeta Hernández 54e9750191 Tied some blas loose strings 2021-07-16 00:27:16 -05:00
Violeta Hernández df9b6f5f64 blas.rs works now! 2021-07-15 23:56:58 -05:00
CAD97 b1775ee747 Add Transform × UnitComplex & friends 2021-07-14 23:52:38 -05:00
Violeta Hernández bbd045d216 `blas.rs` should be sound now 2021-07-14 23:30:31 -05:00
Violeta Hernández 775917142b More trait restructuring! 2021-07-14 17:21:22 -05:00
Violeta Hernández 8d10e69e33 Finally figured out some trait nitty-gritty 2021-07-14 13:24:27 -05:00
Violeta Hernández 1a78b00476 Checkpoint #1 2021-07-14 04:25:16 -05:00
Sébastien Crozet cce7d9e9b6
Merge pull request #937 from jsmith628/fixed-size-borrow
Implemented Borrow and BorrowMut on fixed size matrices
2021-07-11 17:48:09 +02:00
Sébastien Crozet c320988088
Merge pull request #944 from vadixidav/dev
import macros from alloc
2021-07-11 17:47:51 +02:00
Sébastien Crozet b007e192d4
Merge pull request #938 from Nateckert/omatrix_to_string
Make display generical for Omatrix
2021-07-11 17:45:02 +02:00
Geordon Worley 02e9ac4cad import macros from alloc to solve issues with missing format! macro, among other issues 2021-07-10 18:33:11 -05:00
Sébastien Crozet 7bcb54641d
Merge pull request #943 from dimforge/point_dim_name
Add a OPoint type that takes type-level integers instead of const-generics
2021-07-10 11:40:31 +02:00
Sébastien Crozet ac61e112dd
Merge pull request #932 from CAD97/moar-const
Remove scalar bound from geometry type defs
2021-07-10 11:28:23 +02:00
Crozet Sébastien 2ce6811e2c Fix compilation when enabling the bytemuck feature. 2021-07-10 11:24:23 +02:00
CAD97 85d07b22a3 FIx serde impl bounds 2021-07-09 15:30:06 -05:00
CAD97 22ba88353a Fix bounds for bytemuck impls 2021-07-09 15:23:08 -05:00
Violeta Hernández 1be8964c12 Fixed indent 2021-07-08 11:15:08 -05:00
Violeta Hernández 04e937792b Removed unnecessary `unsafe` markers 2021-07-08 11:12:43 -05:00
Joshua Smith a7fe7a5d9a fixed check-fmt error 2021-07-08 11:05:32 -05:00
nathan.eckert 92a51662bf Remove Allocator<usize, > from display 2021-07-08 14:18:22 +02:00
Sébastien Crozet 0a5bd520a4
Merge pull request #922 from Cryptjar/impl-into-slice
Allow to extract the inner slices of SliceStorage
2021-07-08 09:50:41 +02:00
Sébastien Crozet a66b54a015
Merge pull request #929 from remilauzier/dev
Fix some clippy warnings and typo
2021-07-08 09:44:43 +02:00
Joshua Smith 2279da446e impl Borrow and BorrowMut for fixed size matrices 2021-07-07 13:26:19 -05:00
Violeta Hernández 6e96c28ad9 Trivial doc comment improvements 2021-07-06 21:05:25 -05:00
Rémi Lauzier bbd60fbc8c
Fix some clippy warnings and typo 2021-07-06 11:39:29 -04:00
Sébastien Crozet 1fc29dcf63
Merge pull request #930 from CAD97/patch-1
impl Hash for Transform
2021-07-06 01:09:00 -07:00
CAD97 314b4dd103 Remove scalar bound from geometry type defs
This was inconsistently applied, with some types having <T>, some having
<T: Scalar>, and some having <T: RealField>.
This unifies all types to match the convention of Matrix:
Just declare <T> at type def time, and apply bounds on impls only.

A significant advantage of this approach is const fn construction. Const
fn generics currently still can't have trait bounds, so any generic
const fn needs to only move opaque types around. Construction methods
such as new_unchecked or from_parts can be made const by removing their
generic bounds after this PR.

Actual constification is left to a follow-up PR.

Note that na::Transform is _not_ loosened here, as it has more complicated
definition requirements.
2021-07-05 19:04:10 -05:00
Christopher Durham 1eeaf3526c
Rotation::matrix_mut_unchecked may not cause UB
...because it isn't unsafe, so clarify the documentation to match.
2021-07-05 18:53:11 -05:00
Christopher Durham 3b4b661756
impl Hash for Transform
This just fixes the types in the existing TODO to compile.
2021-07-05 18:36:33 -05:00
Sébastien Crozet b10711e66e
Merge pull request #927 from remilauzier/dev
Fix some clippy warnings
2021-07-05 06:55:26 -07:00
CAD97 e77a97e854 Add a couple trivial const fn conversions 2021-07-04 17:42:39 -05:00
Rémi Lauzier 78da5209e9
Fix some clippy warnings 2021-07-03 23:43:45 -04:00
Andreas Longva 92c26334ec Fix serde impls and Distribution impl for OPoint 2021-07-02 12:01:01 +02:00
CAD97 396d3d6615 Add missing repr(C) on bytemuckable geometry types 2021-06-28 20:49:57 -05:00
CAD97 cb0812aaf3 Add bytemuck impls to geometry types 2021-06-28 20:36:28 -05:00
Crozet Sébastien 16b8f4812d Define OPoint, a generic point with D: DimName
And define Point<T, const D: usize> as an alias for OPoint.
2021-06-26 18:39:20 +02:00
Cryptjar 1554c0114e Fix unsoundness in `into_slice` by adding `ContiguousStorage` bound. 2021-06-18 13:18:33 +02:00
Sébastien Crozet 0312981a4f
Merge pull request #921 from OfficialURL/ptr_alias
Fixed potential UB
2021-06-18 09:49:41 +02:00
Violeta Hernández 281b140365
Fix most clippy warnings 2021-06-18 09:45:37 +02:00
Violeta Hernández c5f240cc28 Fixed potential UB 2021-06-17 19:51:00 -05:00
Cryptjar 801d8a61a6 Add a `From` impl to convert `DVectorSlice[mut]` back to into a slice. 2021-06-18 02:50:10 +02:00
Cryptjar 498b377d0e Add `into_slice[_mut]` and impl to SliceStorage[Mut]. 2021-06-18 02:42:03 +02:00
Sébastien Crozet 38add0b00d
Fix potential undoundness with Storage::as_slice and Storage::as_mut_slice (#905) 2021-06-17 09:46:49 +02:00
Violeta Hernández d64e799fc9
Fixes #909 (#917) 2021-06-17 09:45:33 +02:00
Violeta Hernández 7643a24cc1
`Result<(), ()>` to `bool` (#916) 2021-06-17 09:44:06 +02:00
Violeta Hernández 885bbdaf97
Implemented `SliceRange` for `RangeInclusive` (#911) 2021-06-17 09:42:47 +02:00
Malte Tammena 38e9a5da33 Annotate `get_mut`/`slice`-like functions with `#[must_use]` 2021-06-07 17:15:36 +02:00
Malte Tammena e1fe76235f Normalize `#[must_use]` hints 2021-06-07 16:44:59 +02:00
Malte Tammena 9fb963017f Simplify default `#[must_use]` annotation 2021-06-07 16:34:03 +02:00
Malte Tammena 39aa52d019 Add must_use annotations in src/**/*.rs 2021-06-06 14:46:36 +02:00
Malte Tammena d85c10a73c Add some missing question marks 2021-06-06 11:34:29 +02:00
Malte Tammena 925fc1edd7 Annotate functions with #[must_use] where appropriate 2021-06-06 11:28:12 +02:00
Crozet Sébastien 7acd4ecdcc Fix bug in the glam conversion Vec2 -> Isometry2 2021-06-04 10:52:28 +02:00
Crozet Sébastien dfc8ad3d6a Release v0.27.0 2021-06-02 15:15:17 +02:00
Crozet Sébastien 47a4f52e8d Replace unchecked glam conversion by TryFrom or checks 2021-06-01 10:48:24 +02:00
Crozet Sébastien 4af979c55b Support multiple version of the optional glam conversion 2021-06-01 10:27:32 +02:00
Crozet Sébastien 8810b85a2f Add a point! macro for construction points
This macro is similar to the `vector!` macro, except that it builds a point instead of a vector.
2021-05-24 17:53:59 +02:00
David Koloski 9fff10b1f0 Move rkyv impls into separate modules 2021-05-09 12:24:07 -04:00
David Koloski 38dd3345e0 Switch to distributive implementations 2021-05-09 12:24:03 -04:00
David Koloski b48b104d57 Add rkyv implementations for a few types 2021-05-09 12:23:16 -04:00
Sébastien Crozet 23ac85e896
Merge pull request #886 from Andlon/matrix-macro
Matrix macro
2021-05-09 16:52:04 +02:00
Sébastien Crozet a803271fcc
Merge pull request #889 from dimforge/dvector_deserialize
Fix potential unsoundness after deserializing a DVector with a bad number or elements.
2021-05-09 16:50:38 +02:00
Andreas Longva 922393b04f Enable from_{}_storage only when std/alloc available 2021-05-07 09:09:10 +02:00
Andreas Longva 3a3bc55f66 Move from_{}_storage impl blocks to matrix.rs 2021-05-07 09:00:29 +02:00
Crozet Sébastien b398a5e189 Re-add conversion between arrays and row vectors. 2021-05-06 18:22:04 +02:00
Crozet Sébastien 5bff5368bf Manually implement Serialize and Deserialize for VecStorage 2021-05-06 18:16:42 +02:00
Andreas Longva 8552fc8385 Cargo fmt 2021-05-03 13:52:34 +02:00
Andreas Longva eeab4db69a Add nalgebra/macros feature and re-export matrix macros from nalgebra 2021-05-03 13:52:34 +02:00
Andreas Longva d2c11ad797 Impl DMatrix/DVector::from_vec_storage
These methods enable safe & const construction of DMatrix/DVector from a
given VecStorage.
2021-05-03 13:52:34 +02:00
Andreas Longva 9142dc8f84 Implement SMatrix::from_array_storage and use it in matriX! impl
This allows us to avoid injecting unsafe code into every macro
invocation, which seems desirable.
2021-05-03 13:52:34 +02:00
Chammika Mannakkara 105e894c0a add missing doc tests 2021-05-02 13:50:03 +09:00
Crozet Sébastien d59d438189 Add more conversion for glam types
Add Isometry3 <-> (Vec3, Quat)
Add Isometry2 <-> (Vec3, Quat)
Add Translation2/3/4 <-> Vec2/3/4
2021-04-27 13:21:46 +02:00
Crozet Sébastien 65b94ccb91 Add more conversions for translations
Add [T; D] <-> Translation<T, D>
Add Point<T, D> -> Translation<T, D>
2021-04-27 13:17:51 +02:00
Crozet Sébastien db27a080f1 Cleanup conversions between points and static vectors. 2021-04-27 13:17:12 +02:00