Commit Graph

1511 Commits

Author SHA1 Message Date
Andreas Longva 34f4537376 Use view* instead of slice* methods in src/ 2022-11-14 14:14:42 +01:00
Andreas Longva 0319d236af Deprecate+rename methods for slicing 2022-11-14 14:02:36 +01:00
Andreas Longva eb456f18bb Move slice deprecation macro to lib.rs
This way we can use it across the library, in changes that
will follow this commit.
2022-11-14 10:56:14 +01:00
Andreas Longva a68d9b5ded Rename construction_slice.rs -> construction_view.rs 2022-11-14 09:42:59 +01:00
Andreas Longva 2ca4b3b02d Deprecate MatrixSliceMutN
There is no other type alias with this naming convention. I believe it
is a remnant from the past, when we had e.g. MatrixN type aliases. But
these no longer exist, therefore I believe this alias should also be
removed, instead of updated to "MatrixViewMutN".
2022-11-14 09:41:04 +01:00
Andreas Longva f792b5f568 Deprecate MatrixSliceMutMN
In the past, MatrixSliceMut did not have the same defaults. However,
for a while now MatrixSliceMut has served the exact same purpose
(in fact their definitions are identical), so we should
deprecate MatrixSliceMutMN.
2022-11-14 09:40:48 +01:00
Andreas Longva 7d5097b0b2 Remove use of deprecated *Slice aliases in nalgebra 2022-11-14 09:33:08 +01:00
Andreas Longva e245e1148a Deprecate slice type aliases 2022-11-14 09:26:45 +01:00
Andreas Longva 4234883d23 Add View type aliases 2022-11-11 17:36:50 +01:00
Andreas Longva 9a7e92e902 Rename matrix_slice.rs to matrix_view.rs 2022-11-11 17:29:55 +01:00
Andreas Longva 29bff32d2d Rename MatrixSlice(Mut) to MatrixView(Mut)
Additionally introduce deprecated type aliases with the old names to avoid
a breaking change.
2022-11-11 16:10:40 +01:00
Andreas Longva c8dfb5e348 Rename SliceStorage(Mut) to ViewStorage(Mut)
Additionally, we add type aliases with the old names to maintain
backwards compatibility with deprecation warnings.
2022-11-11 15:46:06 +01:00
devil-ira 8601c655de Support conversion for glam 0.22 2022-11-05 00:33:38 +01:00
Allan Zhang 20dbfbd6f9 Use parenthesis for exclusive lower bound
Changes `]0, pi]` to `(0, pi]`.

Replaces PR #1173 and resolves Issue #1164.
2022-11-04 09:34:46 -04:00
_ c9fa7a35e7 Added try_cast() to Matrix 2022-10-27 19:56:38 +00:00
Peng Guanwen 2cbb27c6f8 Derive CheckBytes trait on Archive struct 2022-10-13 12:22:45 +00:00
Sébastien Crozet 1870080f94 Remove const for Point1::new when targetting cuda 2022-09-24 10:13:15 +02:00
Sébastien Crozet 1079f0c1c3 Add a non-const version of Point::new when the cuda feature is enabled 2022-09-24 09:50:58 +02:00
Patiga 3aca9af616 Link listed types in lib.rs to their docs
Helpful because lib.rs is the 'main page' for docs.rs
This allows for easy/direct access to the mentioned types
Currently you need to look up mentioned types via the search bar
2022-09-04 00:39:57 +02:00
zyansheep 525bc63de2 use patch for num-complex & refactor 2022-08-15 18:47:00 -04:00
Sébastien Crozet d09d06858f
Merge pull request #1120 from Ralith/unit-vector-cast
Implement `cast` for `Unit<Vector<T, D, S>>`
2022-08-14 15:04:50 +02:00
Sébastien Crozet 0fcf2f61d2
Merge pull request #1112 from SolraBizna/point-construction-const-fn
Make "Point::new" a const fn
2022-08-14 15:03:09 +02:00
Patrick Owen 84c44984b1 Use #[inline] to improve opt-level 1 performance 2022-08-12 01:33:11 -04:00
Ritoban Roy-Chowdhury d3b7acce4d update DefaultAllocator docs to say ArrayStorage instead of GenericArray 2022-08-08 17:48:10 -07:00
Sébastien Crozet d5284a2a86 Remove unused extern crate. 2022-07-30 18:16:18 +02:00
Sébastien Crozet 89767ee9f3 Reduce code duplication for allocating a storage from a raw iterator. 2022-07-30 18:06:47 +02:00
Gianluca Oldani 59b01e955f Fixed formatting 2022-07-30 17:52:04 +02:00
Gianluca Oldani 8588ef8fb2 Sound implementation for from_row_iterator 2022-07-30 17:52:04 +02:00
Chammika Mannakkara 008511d96e from_row_iterator added 2022-07-30 17:52:04 +02:00
Sébastien Crozet d0d88f1e82
Merge pull request #1113 from trueb2/user/trueb2/fix-unitcomplex-assertion
Fix UnitComplex cast doctest failure on macOS
2022-07-30 17:33:13 +02:00
Tim Taubner 0c2d9deac7 cargo fmt 2022-07-27 11:44:42 +02:00
Tim Taubner 7aadbcf21d From_rotation_matrix: Use the larger of eps.sqrt() or eps*eps as disturbance. Add tests for eps > 1.0 2022-07-27 11:31:43 +02:00
Sébastien Crozet 26e69863e1 Rotation from matrix: small code cleanups 2022-07-27 09:49:16 +02:00
Tim Taubner d515e4f1be Perturbations to check for convergence into maximum. 2022-07-27 09:49:16 +02:00
Tim Taubner f9aa2d76aa Start from random rotation in from_matrix to prevent issues when calling from_matrix on rotation matrices 2022-07-27 09:49:16 +02:00
devil-ira 238750fb30 Use `From` trait to convert glam types to arrays. 2022-07-23 23:55:40 +02:00
devil-ira 1e31e6ba69 Add feature `convert-glam021`. 2022-07-23 17:39:59 +02:00
zyansheep 71379c0748 cargo fmt 2022-07-13 23:05:44 -04:00
zyansheep 9a98b0cf24 various implementations 2022-07-13 23:02:17 -04:00
zyansheep a725faaf6a fix matrix impl 2022-07-13 14:32:46 -04:00
zyansheep 7cc885e861 fix some rkyv impls 2022-07-11 22:36:52 -04:00
Benjamin Saunders 8aa10b819c Implement `cast` for `Unit<Vector<T, D, S>>`
Currently, `cast` is resolved via `Unit`'s `Deref` impl, which leads
to it confusingly stripping the `Unit` from `UnitVector`s. Add an
inherent impl which takes precedence, similar to the existing
specialization for `UnitQuaternion`.
2022-06-11 11:13:31 -07:00
Jacob Trueb 0cdf3ce452 Fix UnitComplex cast doctest failure on macOS 2022-05-25 17:51:19 -05:00
Solra Bizna 4d968da1ad
Make "Point::new" a const fn 2022-05-25 16:42:18 -06:00
Sébastien Crozet e913beca88 Switch to derive macros for rkyv and bytecheck 2022-04-30 10:47:30 +02:00
zyansheep 24b97932e1 add bytecheck impls 2022-04-30 10:36:39 +02:00
zyansheep 1b6f2b83f7 add bytecheck for matrix 2022-04-30 10:36:39 +02:00
zyansheep 90f2603de4 upgrade rkyv to 0.7 2022-04-30 10:36:39 +02:00
Sébastien Crozet c9bf6aa95f Fix warnings 2022-04-28 14:58:15 +02:00
Sébastien Crozet adb3820305 glam: add conversion from Vec2/3/4 to UnitVector2/3/4 + remove ambigous conversions 2022-04-28 14:53:14 +02:00
Sébastien Crozet 96d4d98811
Merge pull request #1094 from jsmith628/complex-slerp-fix
fix for `UnitComplex::slerp()` #1093
2022-04-26 18:26:27 +02:00
Joshua Smith b02e4ec2a9 fixed cargo fmt error 2022-03-26 17:32:12 -05:00
Sébastien Crozet 6a553f1ee2
Merge pull request #1098 from dimforge/explicit-const-dims
Simplify the type definitions of Const aliases, to help rust-analyzer
2022-03-24 10:00:36 +01:00
Sébastien Crozet 77cf2c935f
Merge pull request #1096 from sterlingjensen/cleanupdoc
Cleanup examples and doc links
2022-03-24 10:00:24 +01:00
sterlingjensen 44b700ecdf run `cargo fmt` 2022-03-23 22:08:20 -05:00
Sébastien Crozet aa37f28dda Simplify the type definitions of Const aliases, to help rust-analyzer 2022-03-23 22:55:16 +01:00
sterlingjensen 724117e5ad Cleanup examples and doc links
Close example code fences and normalize containing head line in touched files.
Remove stale reference to `slice_assume_init` (commit 8c6ebf27), fix long dead internal links in deprecation notices.
2022-03-22 12:03:18 -05:00
Joshua Smith 27a349d282 fix for `UnitComplex::slerp()` #1093 2022-03-21 16:08:53 -05:00
Sébastien Crozet d7117e228a Use cust_core instead of cust 2022-03-16 18:07:29 +01:00
YuhanLiin 1acd48f6f1 Address review comments 2022-03-09 21:04:43 -05:00
YuhanLiin 325618ba22 Fix SVD instability bug 2022-03-09 02:13:12 -05:00
Ben Kimock 698e130c3b Remove abomonation support
Abomonation has numerous soundness problems which have been
well-documented in its issue tracker for over 2 years. Some of them
could be fixed, but some are fundamental to its design. If a user wants
super-fast ser/de, they should use rkyv.
2022-02-05 17:15:08 -05:00
Sébastien Crozet 87a6f4965b Add support for conversion with glam 0.19 and 0.20 2022-01-09 13:43:45 +01:00
Sébastien Crozet c0f8530d5e
Merge pull request #1055 from dimforge/fix-pow
Fix Matrix::pow and make it work with integer matrices
2021-12-31 09:57:56 +01:00
Sébastien Crozet 99ac8c4032
Merge pull request #1050 from metric-space/polar-decomposition-take-2
Take-2 of polar-decomposition
2021-12-31 09:57:08 +01:00
Sébastien Crozet d806669cc7 Fix Matrix::pow and make it work only with positive exponents 2021-12-30 23:03:43 +01:00
Sébastien Crozet cc10b67dd1 Add Matrix::try_polar that returns Option and make Matrix::polar not return Option 2021-12-30 22:15:04 +01:00
Sébastien Crozet b62b65d1b6
Merge pull request #1048 from haibane-tenshi/relax-matrix-select-rows-cols
Relax T: Zero bound on Matrix::select_rows() and Matrix::select_columns()
2021-12-30 21:56:55 +01:00
Sébastien Crozet a6007de409 Add "Triangular matrix extraction" bullet to Matrix documentation 2021-12-30 21:55:29 +01:00
Sébastien Crozet 2844c55de2
Merge pull request #1053 from rokonio/patch-1
Fix a typo in a comment
2021-12-30 21:46:47 +01:00
Rokonio 05320147b1
Fix a typo in a comment 2021-12-29 18:46:01 +01:00
metric-space dbaefed8d1 Fix doc typos 2021-12-26 21:05:42 -05:00
metric-space ac94fbe831 Add polar decomposition method to main matrix decomposition interface
Add one more test for decomposition of polar decomposition of rectangular matrix
2021-12-26 21:01:05 -05:00
Leon 20a86d6613
doc fix: QR -> LU 2021-12-22 19:10:55 +00:00
metric-space 6ac6e7f75e First compiling commit for take-2 of polar-decomposition:
Code inspired by this thread: https://github.com/dimforge/nalgebra/pull/656
Main person behind this is LucasCampos
2021-12-22 00:12:27 -05:00
haibane_tenshi 24bb7bef76 fix(Matrix): relax T: Zero bound on Matrix::select_rows() and Matrix::select_columns() 2021-12-16 18:50:15 +03:00
Sébastien Crozet e0a1b1bc34 Fix the special-case for 3x3 Real SVD 2021-12-09 11:52:37 +01:00
Sébastien Crozet 9389cf2adc
Merge pull request #1034 from dimforge/specific_svd
Add dedicated implementations of SVD for 2x2 and 3x3 real matrices.
2021-12-01 13:55:10 +01:00
Sébastien Crozet 9297cc5754 Implement DeviceCopy for UnitComplex, UnitQuaternion, and Unit<Matrix> instead of using a blanket impl 2021-11-26 18:13:37 +01:00
Sébastien Crozet 49e9ceea30 Add dedicated implementations of SVD for 2x2 and 3x3 real matrices. 2021-11-26 17:45:42 +01:00
Sébastien Crozet 9d897a6b8a Add support for rust-cuda 2021-11-23 12:03:11 +01:00
Sébastien Crozet ad3eefe182 Merge remote-tracking branch 'origin/dev' into dev 2021-11-23 11:02:51 +01:00
Sébastien Crozet f715883f9f Re-add the conversion from a slice to a static array 2021-11-21 21:47:35 +01:00
Sébastien Crozet 10150ec783
Merge pull request #1016 from tpdickso/fix-dual-quaternion-sclerp
Don't panic ScLERPing `UnitDualQuaternion` with equal rotation
2021-11-21 17:57:34 +01:00
Terence 0ecbed512b cargo fmt 2021-11-20 09:12:45 -05:00
Christopher Gundler 24d29c4de3 Allow sorting SVD according to singular values 2021-11-08 10:27:53 +01:00
Sébastien Crozet df51de0664 Fix unsound usize::get_unchecked_mut 2021-10-31 14:27:32 +01:00
Sébastien Crozet 20d8e953c5
Merge pull request #1004 from MaxVerevkin/fix-750
fix linear indexing of matrix slices
2021-10-31 14:24:10 +01:00
Terence 3df81c7cc9 fix docs 2021-10-28 00:05:50 -04:00
Terence dfb7b6af22 Don't panic ScLERPing `UnitDualQuaternion` with equal rotation
Solves #1013.

Previously, when screw-linearly interpolating two unit dual quaternions
that had an identical orientation, `try_sclerp` would return `None`, as
the operation would introduce a division-by-zero.

This PR splits out the cases where two unit dual quaternions have an
identical orientation from the cases where they have opposite
orientations. In the case where they have identical orientations, the
operation is well-defined, but the exponential parameterization could
not handle it without introducing NaNs. Therefore, the function detects
this case and simply defaults to linearly interpolating the
translational components and using one of the two inputs' rotation
components.

The case where the inputs have opposite rotations is now detected
separately using the dot product of the real (rotation) parts, which was
already being computed anyway.

Also introduces proptests for these specific scenarios, to avoid any
regression.
2021-10-28 00:02:20 -04:00
Sébastien Crozet e05bfe48b3
Merge pull request #1012 from Yuri6037/scale
Scale
2021-10-25 10:20:07 +02:00
Sébastien Crozet 4be7db36fd
Remove useless `into_owned`. 2021-10-25 09:57:58 +02:00
Yuri Edward 209f77ccaf Fixed from_superset_unchecked 2021-10-24 22:26:01 +02:00
Yuri Edward 25dba52197 Removed additional into_owned call 2021-10-24 21:58:05 +02:00
Yuri Edward 54b8a5b900 Rollbacked buggy update 2021-10-24 21:55:11 +02:00
Yuri Edward 50f65123b5 Merge branch 'scale' of github.com:Yuri6037/nalgebra into scale 2021-10-24 21:52:45 +02:00
Yuri6037 b8800ccd15
Update src/geometry/scale_conversion.rs
Co-authored-by: Sébastien Crozet <sebastien@crozet.re>
2021-10-24 21:52:35 +02:00
Yuri Edward 9d2639b742 Removed clippy suspicious_arithmetic_impl allow 2021-10-24 21:51:36 +02:00
Yuri Edward 866cabaa28 Merge remote-tracking branch 'origin/scale' into scale 2021-10-24 20:55:35 +02:00
Yuri Edward 6d3978b212 Added Scale *= scalar + reordered ops 2021-10-24 20:55:10 +02:00
Yuri Edward 0aba533556 Added Scale * Vector 2021-10-24 20:45:40 +02:00
Yuri6037 8efa9f76b7
Update src/geometry/scale_coordinates.rs
Co-authored-by: Sébastien Crozet <sebastien@crozet.re>
2021-10-24 20:41:27 +02:00
Yuri6037 510ffcbb18
Update src/geometry/scale_coordinates.rs
Co-authored-by: Sébastien Crozet <sebastien@crozet.re>
2021-10-24 20:41:21 +02:00
Yuri Edward c11e1ffb4d Fixed missing curly bracket 2021-10-24 20:40:02 +02:00
Yuri6037 ded853757c
Update src/geometry/scale.rs
Co-authored-by: Sébastien Crozet <sebastien@crozet.re>
2021-10-24 20:31:35 +02:00
Yuri6037 f7eec7317c
Update src/geometry/scale_conversion.rs
Removed return.

Co-authored-by: Sébastien Crozet <sebastien@crozet.re>
2021-10-24 20:27:54 +02:00
Yuri6037 5b44502632
Update src/geometry/scale.rs
Simplified code.

Co-authored-by: Sébastien Crozet <sebastien@crozet.re>
2021-10-24 20:27:38 +02:00
Yuri6037 26e36c15ba
Update src/geometry/scale.rs
Removed return

Co-authored-by: Sébastien Crozet <sebastien@crozet.re>
2021-10-24 20:25:48 +02:00
Yuri6037 6123c86f9e
Update src/geometry/scale.rs
Removed return

Co-authored-by: Sébastien Crozet <sebastien@crozet.re>
2021-10-24 20:24:16 +02:00
Yuri6037 91b8424a86
Update src/geometry/scale.rs
Removed return

Co-authored-by: Sébastien Crozet <sebastien@crozet.re>
2021-10-24 20:21:07 +02:00
Yuri6037 de41c42af7
Update src/geometry/scale.rs
Simplified code

Co-authored-by: Sébastien Crozet <sebastien@crozet.re>
2021-10-24 20:20:13 +02:00
Yuri Edward b91ead7971 Fixed Subset for Matrix 2021-10-21 15:56:07 +02:00
Yuri Edward 4466fb2514 Added point * vector 2021-10-21 15:47:00 +02:00
Yuri Edward 99704a0ea1 Updated all examples related to inversion API 2021-10-21 15:22:18 +02:00
Yuri Edward 82b8ac84a0 Fixed code formatting 2021-10-21 15:10:26 +02:00
Yuri Edward a64417870b Changed inverse API to pseudo_inverse, try_inverse, try_inverse_mut, try_inverse_transform_point, inverse_unchecked. 2021-10-21 15:06:25 +02:00
Yuri Edward 1341801c56 Added scale * scalar + Cleanup scale_ops 2021-10-19 16:33:12 +02:00
Yuri Edward 865ac001d3 Re-armed scale_simba 2021-10-19 16:20:25 +02:00
Yuri Edward 94ef916f49 Fixed cargo fmt 2021-10-19 16:18:25 +02:00
Yuri Edward 0e2865085e Updated doc tests 2021-10-19 16:09:06 +02:00
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