Commit Graph

568 Commits

Author SHA1 Message Date
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