Commit Graph

661 Commits

Author SHA1 Message Date
Sébastien Crozet 9bd2890875 Add documentation. 2018-02-03 13:59:05 +01:00
Sébastien Crozet 84a01a720d Fix unnecessary parenthesis. 2018-02-03 13:59:05 +01:00
Sébastien Crozet 662cc9cd7f Run rust fmt. 2018-02-03 13:59:05 +01:00
Sébastien Crozet 6d4bfc3b79 Fix warnings. 2018-02-03 13:59:05 +01:00
Sébastien Crozet 5c28af3a53 Add 3d cross-product matrix construction from a vector. 2018-02-03 13:59:05 +01:00
Sébastien Crozet 3dc76caf7e Add Isometry × Unit<Vector>.
Fix #285.
2018-02-03 13:59:05 +01:00
Sébastien Crozet 144dfbd555 Add quadform/cmpy/cdpy. 2018-02-03 13:59:05 +01:00
Sébastien Crozet 52598de44c Add rotation_between_axis/scaled_rotation_between_axis. 2018-02-03 13:59:05 +01:00
Sébastien Crozet dc41b55e5a Add iamin. 2018-02-03 13:59:05 +01:00
Sébastien Crozet fcfcc391b5 Rename slice constructors to remove the "_slice" after "new". 2018-02-03 13:59:05 +01:00
Sébastien Crozet 4cb43498a4 Add unsafe slice construction. 2018-02-03 13:59:05 +01:00
Sébastien Crozet a35e40b38e Add the `repeat` constructor. 2018-02-03 13:59:05 +01:00
Sébastien Crozet 300b3d0452 Add transpose gemv. 2018-02-03 13:59:05 +01:00
Sébastien Crozet 1a7f0dea9f Add column vector slice aliases. 2018-02-03 13:59:05 +01:00
Sébastien Crozet 1ee8a702ea Fix quadratic form computation.
For the moment only the version that does not make any assumption regarding symmetry is
implemented.
2018-02-03 13:59:05 +01:00
Sébastien Crozet 39d20306f1 Add symmetric quadratic form computation. 2018-02-03 13:59:05 +01:00
Sébastien Crozet 94c1ab8e7b Add matrix slice construction from array slices. 2018-02-03 13:59:05 +01:00
Sébastien Crozet adbb7d989e Add aliases for matrix slices. 2018-02-03 13:59:05 +01:00
Eduard Bopp 098d91cae0 Remove phantom data from matrix debug output
Addresses #295.
2018-01-31 19:24:42 +01:00
Nil Goyette 2ad227661a Fix RowVector3 cross product 2018-01-17 11:23:27 -05:00
Jack Wrenn 922b339fb0 Implement to_euler_angles for Rotation3 and UnitQuaternion
Resolves sebcrozet/nalgebra#243.
2018-01-09 15:15:57 -05:00
Colin Wallace e5259130e5 Fix spelling of "below" 2017-10-26 21:13:35 -07:00
Dzmitry Malyshau 94db3f533b Mint rebase 2017-10-09 20:22:24 +02:00
Dzmitry Malyshau 6b6a0717c2 Mint matrices 2017-10-09 20:22:24 +02:00
Dzmitry Malyshau ce2063c191 Mint Euler angles 2017-10-09 20:22:24 +02:00
Dzmitry Malyshau b0127ab5dc Mint quaternions 2017-10-09 20:22:24 +02:00
Dzmitry Malyshau 7d96007bdb Mint vector conversions 2017-10-09 20:22:24 +02:00
Eduard Bopp 3a1fb0ed88 Fix feature flagging for abomonation-serialize
The tests can now be run without the abomonation feature. Also fixes a
bug in the feature flagging for abomonation.
2017-09-18 20:10:32 +02:00
Sébastien Crozet 48f80d99cc Fix abomonation integration. 2017-08-15 19:36:38 +02:00
Sébastien Crozet afef66227e Merge branch 'master' into abomonation 2017-08-15 19:18:39 +02:00
Sébastien Crozet 740d19437c Fix unused_result lint errors. 2017-08-15 19:07:18 +02:00
Sébastien Crozet b475c4da9f Move `set_row`, `set_column` from matrix.rs to edition.rs. 2017-08-15 19:07:18 +02:00
Sébastien Crozet 3e349b80cf Implement serde traits for all linalg structs. 2017-08-15 19:07:18 +02:00
Sébastien Crozet e84b73c848 Deprecate into_owned and clone_owned for Quaternion, UnitQuaternion, and Transform. 2017-08-15 19:07:18 +02:00
Sébastien Crozet 70bb2cbe46 Implement Clone, Debug, Copy for all linalg structures. 2017-08-15 19:07:18 +02:00
Sébastien Crozet b22eb91a16 Add documentation. 2017-08-15 19:07:18 +02:00
Sébastien Crozet c258d13f98 Fix stepping for slices.
The previous implementation was wrong compared to what the documentatino claimed.
2017-08-15 19:07:18 +02:00
Sébastien Crozet 41f5231446 Add `assign` and generalize `map` to other return types.
The method assign replaces each components with the result of a closure (that takes the
corresponding component as parameter).
2017-08-15 19:07:18 +02:00
Sébastien Crozet 053de0576f nalgebra-lapack: unify API of LU.solve and Cholesky.solve with nalgebra. 2017-08-15 19:07:18 +02:00
Sébastien Crozet 00039c0a76 Add methods for computing decompositions. 2017-08-15 19:07:18 +02:00
Sébastien Crozet aaa359f3b0 Remove hand-written rustdoc doc for quaternon and unit_complex.
Those are now generated automatically by rustdoc.
2017-08-15 19:07:18 +02:00
Sébastien Crozet a7bce9cf3f symmetric_eigen: allow computing only eigenvalues. 2017-08-15 19:07:18 +02:00
Sébastien Crozet 3f70af97dd Add the most common matrix decompositions. 2017-08-15 19:07:18 +02:00
Eduard Bopp a45ef26375 Provide safer Abomonation impl for matrix arrays
This is more robust than delegating to a slice, which has been removed
upstream due to unsafety. Since we can rely on there being no pointer
indirection in a GenericArray, we just iterate over the array.
2017-08-14 20:53:55 +02:00
Eduard Bopp e09af0ca82 Implement Abomonation for remaining types 2017-08-14 14:32:02 +02:00
Eduard Bopp f67a7bd324 Implement Abomonation for rotations 2017-08-14 12:41:03 +02:00
Eduard Bopp 308177a7d6 Implement Abomonation for translations 2017-08-14 12:37:16 +02:00
Eduard Bopp 7c3a05f668 Implement Abomonation for dynamic matrices 2017-08-14 12:33:14 +02:00
Eduard Bopp 49f12a379d Implement Abomonation for static-size points 2017-08-14 12:18:47 +02:00
Eduard Bopp 65fa4cf740 Implement Abomonation for static matrices 2017-08-14 12:07:06 +02:00
Eduard Bopp e0cc7ff21b Fix TCategory implementation for TAffine
Closes #271.
2017-07-29 14:45:20 +02:00
Eduard Bopp 9e02b13f3e Refer to other conversion method in documentation
This is motivated by #235 hoping to improve discoverability of this
feature.
2017-07-28 20:13:52 +02:00
Eduard Bopp 7a62b68c38 Merge pull request #251 from Ralith/unnested-serialization
Remove gratuitous indirection in serialization impls
2017-07-26 19:40:57 +02:00
Sébastien Crozet f86752e44a De-ambiguat AsRef/AsMut/Into implementations.
Addresses comments of #225.
2017-07-22 09:57:21 +02:00
Eduard Bopp cfa3c6533f Merge pull request #242 from sebcrozet/into_iterator
Implement IntoIterator for &Matrix and &mut Matrix
2017-07-13 03:12:38 +02:00
Eduard Bopp 69fd070d50 Merge pull request #259 from burtonageo/update_readme
update crate documentation to point to latest crates.io version
2017-07-13 03:09:17 +02:00
Brendan Zabarauskas ba41a8ce5a Implement the sum and product traits for matrices
Closes #264
2017-07-02 01:27:16 +10:00
George Burton 7b17fa58e8 update crate documentation to point to latest 2017-05-20 19:39:02 +01:00
Sébastien Crozet b78dcb3155 Add methods to set a row or a column of the matrix. 2017-05-17 22:47:45 +02:00
Benjamin Saunders 0979896dbd Remove gratuitous indirection in serialization impls 2017-05-03 19:51:26 -07:00
Sébastien Crozet 35d2b6dc88 Add kronecker product.
Closes #248
2017-05-03 22:47:18 +02:00
Andreas Longva a52b079578 Relax invertibility test in try_inverse()
The previous implementation of try_inverse() used an approximate
check of the determinant against 0 for small matrices to
determine if the matrix was invertible. This is not a reliable test,
and may fail for perfectly invertible matrices. This change
simply makes the test criterion an exact comparison instead.
2017-04-28 19:11:33 +02:00
Sébastien Crozet 485abf1462 Update to serde 1.0. 2017-04-24 20:13:30 +02:00
Sébastien Crozet 68b7d21828 Implement IntoIterator for &Matrix and &mut Matrix
IntoIterator for Matrix will beharder to implement.
Partially addresses #241.
2017-04-11 00:16:43 +02:00
Sébastien Crozet cbbe1a2aee Fix html_root_url. 2017-04-09 13:19:27 +02:00
Jonas Olson 9c79937485 Allow for documentation strings in macro component_binop_impl. 2017-04-07 18:42:22 +02:00
Jonas Olson acfa8586ea Fix typo in scalar.rs. 2017-04-06 19:49:00 +02:00
Sébastien Crozet e6ee11617a Add a method to compute the trace of a matrix.
Fix #231.
2017-03-19 22:44:08 +01:00
Sébastien Crozet d6285e1165 Implement AsRef, AsMut, Into, From. 2017-02-18 13:44:03 +01:00
Sébastien Crozet 42b48563be Make serde optional behind the "serde-serialize" feature. 2017-02-15 22:04:34 +01:00
Sébastien Crozet 086e6e719f Doc + slerp + conversions. 2017-02-12 18:17:09 +01:00
Sébastien Crozet 99b6181b1e Complete library rewrite.
See comments on #207 for details.
2016-12-04 22:47:36 +01:00
nwin 30d37bc6cc Fixed typos in point.rs and vector.rs. 2016-10-15 12:02:24 +02:00
Sébastien Crozet 89c745fa17 Fix &DMatrix - DMatrix.
Fix #203.
2016-09-06 19:42:28 +02:00
Sébastien Crozet d442b0479d Prevent the README cargo example to be compiled as a test. 2016-08-29 21:22:09 +02:00
Sébastien Crozet 8f5b60421c Add an example dependency entry to the README. 2016-08-29 21:16:15 +02:00
Sébastien Crozet 96d7f68f14 Merge pull request #199 from phaazon/unused-arg
Unused arg in ApproxEq removed
2016-08-29 21:11:55 +02:00
Jakub Hlusička 840fa71e67 implement common operations for references 2016-08-26 12:22:13 +02:00
Dimitri Sabadie 4afb2ff476 Fixed tests (#198). 2016-08-26 11:00:34 +02:00
Dimitri Sabadie a90c2c23fa Fixed #198. 2016-08-26 10:09:53 +02:00
Sébastien Crozet d29ff53329 Implement traits from the algebra crate. 2016-08-21 21:35:56 +02:00
Sébastien Crozet 326b22ac33 Fix benchmarks. 2016-08-16 13:35:17 +02:00
Sébastien Crozet 05a0c12c4a Add a missing file that defines the `Unit` type. 2016-08-16 12:47:11 +02:00
Sébastien Crozet c4728a33d4 Fix quaternion polar decomposition. 2016-08-16 12:40:39 +02:00
Sébastien Crozet 9c4bff1f85 Rename methods starting with `new_with_` to `from_`. 2016-08-16 10:48:41 +02:00
Sébastien Crozet d45c242a15 Add a `Unit` wrapper type, remove UnitQuaternion.
The `Unit` wrapper type ensures that elements of the underlying type has a unit norm.
For example, `Unit<Vector3>` designates an element of S².
In particular `UnitQuaternion<N>` is now a type alias for `Unit<Quaternion<N>>`.
2016-08-16 10:27:07 +02:00
Sébastien Crozet 88a74ca4e5 Macro groupping. 2016-08-11 23:28:08 +02:00
Sébastien Crozet 7b4a57c224 Fix some clippy warning.
The following lints were disabled:

* wrong_self_convention
* needless_range_loop
* reverse_range_loop
* len_without_is_empty
* explicit_iter_loop
* many_single_char_names
* similar_names
* too_many_arguments
* float_cmp
* new_without_default
2016-08-11 23:08:21 +02:00
Dimitri 'phaazon' Sabadie 1fdd8979af Fixed Zero and One for Quaternion. 2016-07-30 14:08:55 +02:00
Dimitri Sabadie 988d9272d2 Cleaned up exp(), log() and powf() for Quaternion. Also, they’re for Quaternion only as we cannot define them on UnitQuaternion. 2016-07-29 17:51:35 +02:00
Dimitri Sabadie 213cc41f7d Added exp(), log() and powf() for Quaternion / UnitQuaternion. 2016-07-29 15:56:04 +02:00
Sébastien Crozet aa7d4b927c Implement Display for Identity. 2016-04-30 14:32:16 +02:00
Sébastien Crozet 13a5bee25f Implement From returning a value (instead of a ref only) for matrices and vectors. 2016-04-19 09:36:30 +02:00
Sébastien Crozet df872f407d Replace "col" by "column".
Related to #176.
2016-04-18 08:32:12 +02:00
Sébastien Crozet 0c84d18850 Substitute: diag -> diagonal. 2016-04-17 19:47:56 +02:00
Sébastien Crozet 0380661bd2 Remove some restrictions for `NumVector`.
This removes the following inheritances:
        * Mul<Self, Output = Self>
        * Div<Self, Output = Self>
        * Add<N, Output = Self>
        * Sub<N, Output = Self>
        * MulAssign<Self>
        * DivAssign<Self>
        * AddAssign<N>
        * SubAssign<N>

They silently overrided:
        * Mul<N, Output = Self>
        * Div<N, Output = Self>
        * Add<Self, Output = Self>
        * Sub<Self, Output = Self>
        * MulAssign<N>
        * DivAssign<N>
        * AddAssign<Self>
        * SubAssign<Self>
2016-04-17 19:26:18 +02:00
Sébastien Crozet 479cc7a7ff Fix compilation when the "generic_sizes" feature is enabled. 2016-04-17 17:42:14 +02:00
Sébastien Crozet e6156727f2 Use full names for everything.
Note that `sqdist` becomes `distance_squared` and `sqnorm` becomes `norm_squared`.

Fix #176.
2016-04-17 17:26:58 +02:00
Sébastien Crozet 9a87e2360d Implement Outer for DVec. (#186)
Fix #181.
2016-04-17 13:20:58 +02:00
Sébastien Crozet 9e739676a7 Implement `*Assign` traits for everything.
Fix #184.
2016-04-17 12:57:54 +02:00
Jason Orendorff 74fd3e1a04 Support `f64 * Vec3<f64>` and so on.
To be specific, support is added for `N op T<N>` where `N` is `f32` or `f64`,
`op` is one of `+` `-` `*`, and `T` is one of the `Vec`, `DVec`, `Mat`, or `DMat`
generic types. These are all cases where `T<N> op N` is already supported.

Rust does not support generic impls in this case, but `f32` and `f64` cover
many common cases.

 Fixes #182.
2016-04-17 09:25:08 +02:00
Jeroen Bollen dea0ccc1fd Made PntAsVec use associated types. (#179)
Fix #177
2016-04-17 09:23:37 +02:00
Sébastien Crozet 0dc3b91abd Fix Ortho when the feature `arbitrary` is enabled. 2016-03-31 21:44:42 +02:00
Sébastien Crozet 20bb99c312 Minor documentation fixes.
Fix #174.
2016-03-31 21:30:23 +02:00
Sébastien Crozet 4c58e37910 Make look_at, perspective, and orthographic projection matrices conform to computer-graphics convensions.
The `look_at` method itself has been split into a right-handed and a left-handed variant:
`look_at_rh` and `look_at_lh`.

Fix #171, #158, #88, #79.
2016-03-31 21:22:02 +02:00
Sébastien Crozet 91e14670ed Add multiplications between Iso, Rot, and Sim. 2016-03-28 17:05:44 +02:00
Sébastien Crozet 5b7af11555 Add Sim/Rot, Sim/Iso, Iso/Rot multiplications. 2016-03-28 15:18:28 +02:00
Sébastien Crozet 02001667f7 Fix look_at matrices + implement Display for statically sized structures. 2016-03-28 14:56:25 +02:00
Sébastien Crozet 60c0f32e1c Feature-gate the `VecN` structure.
`rustc` is has a hard time compiling it from time to time.
2016-03-24 19:44:08 +01:00
Sébastien Crozet fe73e8743f Minor comment fix. 2016-03-24 19:44:08 +01:00
Sébastien Crozet cbbf5f138d Remove the double-dispatch trick for Cast implementations.
It is obsolete now that rustc supports multiple trait implementations.
2016-03-24 19:44:08 +01:00
Sébastien Crozet c1ec00cfe7 Complete the documentation. 2016-03-24 19:44:08 +01:00
Sébastien Crozet 87a80c2de6 Fix tests. 2016-03-24 19:44:08 +01:00
Sébastien Crozet ceed9e52bd Implement `Arbitrary` for `VecN`. 2016-03-24 19:44:08 +01:00
Sébastien Crozet 88fb33cf44 Remove useless or incomplete structs: `Vec0`, `Pnt0`, `Iso4`, `Rot4`. 2016-03-24 19:43:50 +01:00
Sébastien Crozet 0c8b8bfcdb Add similarity transformations Sim2 and Sim3 (uniform scale followed by a rotation followed by a translation). 2016-03-24 19:03:40 +01:00
Sébastien Crozet f8f4924e47 Add vector perametrizable by their sizes. 2016-03-24 19:03:29 +01:00
Sébastien Crozet ca6026e5cb Merge pull request #168 from arturoc/master
mat_macros: from_homogeneous_impl was using dimension of src not dst
2016-01-10 16:12:44 +01:00
Sébastien Crozet d15211737a Restore most of @oleglite Row/Col implementations lost during the last merge. 2016-01-10 16:10:14 +01:00
Sébastien Crozet 91c4b58bbb Fix missing trait bounds when the "arbitrary" feature is enabled. 2016-01-10 15:39:54 +01:00
Sébastien Crozet 58de7f461e DMat{1..6}: make the `Col` and `Row` implementation return a DVec{1..6} instead of a plain DVec.
Also adds the `DVec{1..6}::new_uninitialized(dim)` function.
2016-01-10 15:23:18 +01:00
Sébastien Crozet 1338e0c358 DMat: implement `from_row_iter` and `from_col_iter`.
Those create a DMat by moving its argument into an interator and collecting it.
Fix #167.
2016-01-10 14:50:08 +01:00
Sébastien Crozet 581251d5b4 Implement dynamic matrix with a maximum size.
Those are named DMat1 to DMat6 and have the same relation with DMat as DVec1 to DVec6 are related
to DVec.

As a side effect, the method `to_vec` of DMat was renamed `into_vec` to be more in line with the std lib.
Addresses the second point of #100.
2016-01-10 14:50:02 +01:00
Sébastien Crozet 3cd4221bf7 Implement `Row` and `Col` for `DMat`.
Fix #153.
2016-01-10 14:49:55 +01:00
Sébastien Crozet 11b49f50c9 Implement `Mean` for `DVec`, `DVecN`, `VecN` and `MatN`.
Fix #166.
2016-01-10 14:49:48 +01:00
Sébastien Crozet 5cbbc25bb2 Make vectors indexable the same way as slices.
This includes range indexing.
In addition, for unification, the methods `.as_slice` and `.as_mut_slice` of DVec have been renamed
to `.as_ref` and `.as_mut`.
2016-01-10 14:49:37 +01:00
arturo castro 4845a0790a mat_macros: from_homogeneous_impl was using dimension of src not dst 2016-01-08 10:02:06 +01:00
Sébastien Crozet 4098c6c5e5 Make Iso::look_at{_z} static.
This did not need to access `self`.

Fix #161.
2015-11-15 21:56:25 +01:00
Sébastien Crozet 58000e4838 Implement AsRef, AsMut, From for vectors and matrices.
This allows pointer conversion between arrays and vectors or matrices.
Those implementations replace the `.as_array()` and `.as_array_mut()` method.
2015-11-15 21:38:28 +01:00
Sébastien Crozet 948341685e Add implementation of `RotationMatrix` for `UnitQuat`. 2015-11-15 21:38:23 +01:00
Daniel D 179a6560ce Fix eigenvalue calculation for diagonal matrices 2015-11-14 15:40:35 +01:00
Sébastien Crozet 37f1a1d26c Style fixes. 2015-10-13 22:53:19 +02:00
Daniel c4753aaf65 Implemented QR algorithm with initial transformation to Hessenberg form and Wilkinson shift for symmetric matrices 2015-09-22 15:17:03 +02:00
Jeroen Bollen 72ce1881ce Fixed issue #154 https://github.com/sebcrozet/nalgebra/issues/154 2015-09-15 19:47:27 +02:00
Sébastien Crozet 0bcbd4df4b Removed unused import. 2015-09-13 23:53:28 +02:00
Antsiscool f9d79fcf5a Removed Display trait from Debug method for DMat.
DMat was unable to show using debug if the object stored in it did not implement Display.
2015-09-10 14:34:41 +10:00
Anders Kalør 043d7ab108 Fix wrong allocated vector length in RowSlice
The length of the returned DVec should correspond to the
the number of elements in the slice and not the number of rows in the
matrix.
2015-08-27 16:55:20 +02:00
Sébastien Crozet 0a8920f11c Merge pull request #150 from sebcrozet/rustup
Fix warnings generated by the last rust-nightly.
2015-08-20 21:46:46 +02:00
Sébastien Crozet ca3c4e73c5 Fix warnings generated by the last rust-nightly. 2015-08-20 21:41:40 +02:00
Tim Kuehn e2c21c4ae2 Fix transpose_mut for square matrices.
And add a test for it.
2015-08-12 16:52:55 -07:00
Sébastien Crozet 2091cd8da6 Minor codding style fixes. 2015-08-09 14:39:45 +02:00
Daniel 89bbe0f4b4 Removed unused code 2015-08-08 17:52:16 +02:00
Daniel dc571838bb Added check for symmetricity of input matrix 2015-08-07 15:03:38 +02:00
Daniel b197959e2b Implemented Cholesky decomposition with tests 2015-08-07 14:44:25 +02:00
Arttu Ylä-Outinen 75208896a3 Fix multiplication of non-square DMats.
Matrices were in wrong order.
2015-07-12 10:25:43 +03:00
Sébastien Crozet c13b0388ef Remove implementations of `Rotation`, `Translation` and `Transformation` for the `Identity` type.
Because most of their methods did not make sence for the (constant) identity matrix, they were set
to `panic!` at runtime whenever the user tried to use them. Instead, it is much safer to completely
forbid their use by removing the related trait implementation.

See sebcrozet/ncollide#87.
2015-07-07 22:40:14 +02:00
mitchmindtree 2efb30876e Added missing ops implementations for DMat 2015-06-21 01:08:23 +10:00
mitchmindtree 51381ff84d Allow for non-consuming std operations on DMat. Added DMat multiplication test. 2015-06-21 00:20:39 +10:00
Sébastien Crozet 44df67bde2 Fix the README examples. 2015-06-06 14:28:34 +02:00
Sébastien Crozet 410c3c9566 Add pointwise addition and subtraction for `DMat`.
Fix #132.
2015-06-06 12:59:47 +02:00