Commit Graph

840 Commits

Author SHA1 Message Date
Bernardo Meurer
c9be27abb5 Added imax/imin() as variations of iamax/iamin() 2018-07-10 20:15:21 +02:00
sebcrozet
3eaa65c9cf Minor doc fixes. 2018-07-07 17:37:15 +02:00
Thomas Forgione
b1616e236c Changed loops order in from_fn_generic 2018-06-16 14:27:55 +02:00
Simon Heath
ba5bc77262 Removes DefaultAllocatorBound from mint::Point conversions 2018-06-09 00:36:19 +02:00
Simon Heath
491903e1de Replace mem::transmute() with pointer casts
And fix erroneous #[cfg]
2018-06-09 00:36:19 +02:00
Simon Heath
a3c4dbca95 Adds conversions to and from mint Point types. 2018-06-09 00:36:19 +02:00
Hoàng Xuân Phú
4b3a157513 Fix mismatching description for is_empty 2018-05-29 07:55:06 +02:00
sebcrozet
3ee13ec528 Update changelog. 2018-05-27 12:25:58 +02:00
Shane Pearman
2814e09d31 Add from array impl for points. 2018-05-27 12:23:54 +02:00
sebcrozet
c2d597e744 Release v0.15.0. 2018-05-26 22:26:06 +02:00
sebcrozet
cdfa73eba6 Fix warnings. 2018-05-26 22:07:57 +02:00
sebcrozet
0c29a04042 Fix compilation with the 'mint' feature. 2018-05-26 22:07:57 +02:00
sebcrozet
d759db682c Make the alloc feature actually work. 2018-05-26 22:07:57 +02:00
sebcrozet
a51744f86b Update to rand 0.5. 2018-05-26 22:07:57 +02:00
sebcrozet
57fa307d4d Remove deprecated code related to the incoherent_fundamental_impl lint 2018-05-26 22:07:57 +02:00
sebcrozet
6c895ed383 gemm: don't return early for scalar types other than f32,f64. 2018-05-26 22:07:57 +02:00
sebcrozet
40e74e0186 Fix compilation with and without #![no_std]. 2018-05-26 22:07:57 +02:00
sebcrozet
ca093fad29 Move core/* to base/* + add conditional compilation to dynamics matrices when no_std is enabled. 2018-05-26 22:07:57 +02:00
sebcrozet
88055dfc45 Update to approx 0.2. 2018-05-26 22:07:57 +02:00
sebcrozet
8cfd89f287 Add ::from_distribution to build a matrix from a user-provided distribution. 2018-05-17 15:59:51 +02:00
Sébastien Crozet
60fcff9e1d Re-add the ::new slice constructor, but mark them as deprecated. 2018-05-06 23:44:57 +02:00
sebcrozet
d89e3dbac6 Rename the matrix slice constructors from ::new_* to _from_slice_*. 2018-05-06 23:44:57 +02:00
sebcrozet
fefba2ef4e Fix conflicting impls for isometry multiplication. 2018-05-06 23:44:57 +02:00
Sébastien Crozet
7357d17b77 Fix typos. 2018-05-06 23:31:36 +02:00
Sébastien Crozet
31e3547401 Add UnitQuaternion::{new_eps, from_scaled_axis_eps}. 2018-05-06 23:31:36 +02:00
Sébastien Crozet
1ac8bbd3d1 Add .axis_angle to UnitComplex and UnitQuaternion + .rotation_between_axis to UnitComplex. 2018-03-08 17:30:59 +01:00
Sébastien Crozet
5ce41060e5 Fix typos. 2018-02-03 15:25:04 +01:00
Sébastien Crozet
daba16023a Comment the argument of the (private) extend_rows function. 2018-02-03 13:59:05 +01:00
Sébastien Crozet
487af7d979 Fix matrix resizing with empty matrices.
Fix #306.
2018-02-03 13:59:05 +01:00
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
Sébastien Crozet
ea86890647 Add the RotationTo trait to compute the delta rotation between two elements.
Use `::angle_between` or `.angle_to`  to compute the rotation angle between two vectors/rotation
matrices/unit quaternions.
Use `::rotation_between` or `.rotation_to` to compute the rotation matrix/unit quaternion to
transform a vector/rotation matrix/uniq quaternion to another.

Fix #130.
2015-06-01 22:39:27 +02:00
Sébastien Crozet
ca87f9eb95 Rollup of minor beaking changes.
Use associated types for the `Outer` trait.
Add a `Repeat` trait for constructing a multidimensional value by repeating an element.
Split the `Diag` trait into `Diag` and `DiagMut`.
Implement `RustEncodable` for `Identity`.
2015-05-25 14:47:14 +02:00
Tinco Andringa
b26a994659 This reference should not be mut 2015-05-09 16:23:53 +02:00
Sébastien Crozet
5f7b480827 Merge pull request #125 from tinco/add_neg_to_base_float
Add neg trait to BaseFloat
2015-05-08 23:55:00 +02:00
Tinco Andringa
83917cb4a4 Qualify the output of FloatVec Neg 2015-05-08 21:44:03 +02:00
Tinco Andringa
f0ce528903 Add neg trait to BaseFloat 2015-05-08 21:03:13 +02:00
Eduard Bopp
730dc40b01 Remove operator hacks
The LMul, RMul and Scalar* traits were only necessary due to language
limitations regarding trait bounds that are now gone. The Mat trait is now
expressed in terms of regular operator traits.

However, due to the removal of these traits this constitutes a breaking change.
2015-05-06 13:23:14 +02:00
arturo castro
24fa9c7826 fixes for latest rust 2015-04-23 20:26:16 +02:00
Sébastien Crozet
36223991c1 Remove all deprecated functions/traits. 2015-04-18 14:58:38 +02:00
Sébastien Crozet
313ca1b8ae Use the Zero and One traits from the num crate.
Remove our own definitions of those traits.
Also fixes test-related attributes to make them compile again.
2015-04-18 14:38:34 +02:00
Eduard Bopp
e453bfed47 Use Float trait from num crate 2015-04-04 17:53:25 +02:00
Eduard Bopp
9d428be8b4 Rename frac_2_sqrtpi -> frac_2_sqrt_pi 2015-04-04 17:05:30 +02:00
Anders Kaseorg
e3962e8775 FRAC_2_SQRTPI was renamed to FRAC_2_SQRT_PI
Signed-off-by: Anders Kaseorg <andersk@mit.edu>
2015-04-04 16:58:11 +02:00
Eduard Bopp
49abb42980 Merge pull request #114 from andersk/neg
Remove Neg from BaseNum
2015-04-04 16:44:29 +02:00
Anders Kaseorg
d47cdb5594 Remove Neg from BaseNum
As per https://github.com/rust-lang/rust/pull/23945, Neg is no longer
implemented for unsigned types.

Signed-off-by: Anders Kaseorg <andersk@mit.edu>
2015-04-03 18:59:18 -04:00
Anders Kaseorg
005aebc498 Remove #![feature(core)]
Signed-off-by: Anders Kaseorg <andersk@mit.edu>
2015-04-02 04:53:55 -04:00
Anders Kaseorg
165e095a57 Remove use of num::cast
Signed-off-by: Anders Kaseorg <andersk@mit.edu>
2015-04-02 04:53:55 -04:00
Anders Kaseorg
c1cbf7465d Remove use of PI_2
Signed-off-by: Anders Kaseorg <andersk@mit.edu>
2015-04-02 04:10:36 -04:00
Anders Kaseorg
1cb3314064 Add type annotation required by rustc 2015-03-31
Resolves this error, which is fallout from
https://github.com/rust-lang/rust/pull/23673:

src/structs/dmat.rs:501:43: 501:74 error: type annotations required: cannot resolve `<f64 as core::ops::Div<_>>::Output == f64` [E0284]
src/structs/dmat.rs:501         let normalizer: N    = Cast::from(1.0f64 / Cast::from(self.nrows));
                                                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Signed-off-by: Anders Kaseorg <andersk@mit.edu>
2015-03-31 17:49:09 -04:00
Eduard Bopp
ef4a52d53b Remove unused feature unboxed_closures 2015-03-29 13:45:33 +02:00
Eduard Bopp
de2351a441 Only use test feature in test configuration 2015-03-29 13:45:33 +02:00
Eduard Bopp
70b4def5cc Stop using unstable std_misc feature
It was only used for `Float::{max_value, min_value}` in non-necessary places,
so for now this helps stabilization for Rust 1.0.
2015-03-29 13:45:33 +02:00
Eduard Bopp
df93ed2d1c Replace quoted crate declarations 2015-03-29 13:00:09 +02:00
Eduard Bopp
ec5ece46ca Use slicing syntax instead of deprecated methods 2015-03-29 12:57:16 +02:00
Sébastien Crozet
0988b837dc Update to the last rust-nighly.
Version of rustc: rustc 1.0.0-nightly (123a754cb 2015-03-24).
2015-03-25 22:39:06 +01:00
Pierre Krieger
7c415692c3 Update for rustc 2015-03-23 14:38:48 +01:00
Jameson Ernst
9b8076e179 Add #[repr(C)] to structs likely to be used in ffi 2015-03-01 12:50:17 -08:00
Jameson Ernst
caca330995 Fix deprecated closure syntax 2015-03-01 12:41:13 -08:00
Jameson Ernst
b805f9d829 Fix macros for nightly 2015-03-01 12:34:42 -08:00
Eduard Bopp
bd593a923c Fix a number of warnings
Mostly related to the `us` → `usize` suffix renaming. It turns out that none of
the suffixes are required any more, as the type inference appears to have
improved in that regard. There were also parantheses around range terms that
are not required any more.

Finally the `[]` syntax has been deprecated and thereby removed.
2015-02-21 15:07:50 +01:00
Ben Foppa
8d28d7dbd6 FromIterator changes and phantom type annotations. 2015-02-20 18:02:27 -05:00
Eduard Bopp
b2a4918376 Fix bug in UnitQuat construction from Quat 2015-02-17 13:54:56 +01:00
Eduard Bopp
d368270ebc Fix iterator mutability
For loops now consume iterators.
2015-02-17 13:45:25 +01:00
Eduard Bopp
f14f240aa7 Migrate random generation to use crates.io rand
The standard library random generation facilities have been deprecated in
favour of a new crate on crates.io.
2015-02-17 13:45:16 +01:00
Peter Atashian
6b71de4665 Update rust
Signed-off-by: Peter Atashian <retep998@gmail.com>
2015-02-08 02:28:57 -05:00
Sébastien Crozet
316298f825 Merge pull request #87 from aepsil0n/workaround-ice
Workaround internal compiler error.
2015-02-04 22:21:51 +01:00
Eduard Bopp
27bfe381d9 Workaround internal compiler error
The associated type bound here was not parsed correctly. This is likely due to
the ICE described in rust-lang/rust#20413.
2015-02-03 19:18:58 +01:00
Eduard Bopp
3107dd607b Rename similar in-place and copy methods
Fixes #52.

This renames pairs of methods like `normalize_cpy`, `normalize` to `normalize`
and `normalize_mut`. Note that the previous in-place operations had the same
name that now belongs to the copy operations. Therefore this is a breaking
change.

On a similar note, the `Quat::conjugate` method was also renamed to
`conjugate_mut` and a new copying method has taken its place. This appears to
be a similar issue (apart from the lack of the copy operation) and thus was
dealt with here, too.
2015-02-01 23:23:57 +01:00
Sébastien Crozet
39fd7c1ae7 Silence warnings and replace Show by Debug. 2015-02-01 16:15:55 +01:00
Eduard Bopp
5ca3e41375 Implement AssertEq for reference types
Just as the standard library's PartialEq is implemented for reference types,
the ApproxEq trait should be implemented on them as well. This is mostly an
ergonomic improvement for certain testing situations, where a method yields a
reference. For non-copy types it allows using the assert_approx_… macros, which
would otherwise not be possible.
2015-01-25 19:51:07 +01:00
Zbigniew Siciarz
6d00860ef8 Fix Debug implementation for DMat. 2015-01-24 18:24:35 +01:00
Sébastien Crozet
1b6a44e8fb Update to the last rust-nightly.
Version of rustc: 1.0.0-nightly (4874ca36f 2015-01-23 00:18:57 +0000).
2015-01-23 21:48:10 +01:00
Sébastien Crozet
08049e515e Coding style fixes. 2015-01-17 22:54:57 +01:00
arturo
f82cb8002d impl BaseNum for integers 2015-01-16 11:46:56 +01:00
Brett Levin
8c205ea2d0 fix warning from unneeded old_orphan_check 2015-01-10 11:31:26 -08:00
Eduard Bopp
1103996b83 Implement Arbitrary for (almost) all types
Rot4 and Iso4 had to be left out, since Rot4 apparently lacks a working
constructor.

Thereby (almost) all types in nalgebra can now be used for quickcheck-style
testing.

"arbitrary" is now a conditionally compiled feature that contains these impls
adding a dependency on quickcheck.
2015-01-10 01:36:13 +01:00
Sébastien Crozet
ce0178785c Fix automatic text replacement on comments. 2015-01-09 23:01:46 +01:00
Sébastien Crozet
53c80bc72b Allow unstable items.
Some of them don't have any stable equivalent yet.
2015-01-09 22:51:17 +01:00
Sébastien Crozet
4b47b1e98a Use slice and range syntax when possible. 2015-01-09 22:46:26 +01:00
Sébastien Crozet
2d4e1bfc95 Fix warnings related to the POrd implementation. 2015-01-09 22:34:57 +01:00
Sébastien Crozet
e6e099b7c4 Replace int, and uint, by isize and usize. 2015-01-09 22:26:05 +01:00
Sébastien Crozet
59316d7ca1 Remove tabs. 2015-01-09 22:22:34 +01:00
arturo
fc1fd16e20 fixes compiling on alpha 1.0 2015-01-09 21:55:15 +01:00
Sébastien Crozet
c708632036 Merge pull request #70 from bfops/fnmut
Change Fn to FnMut
2015-01-07 22:45:39 +01:00
Ben Foppa
f1fe7315f0 Change Fn to FnMut 2015-01-07 15:16:56 -05:00
Ben Foppa
bd7b4f287f rustup 2015-01-07 15:14:40 -05:00
Ben Foppa
1429cbf34e Remove obsolete closure syntax 2015-01-06 18:46:50 -05:00
Pierre Krieger
89edd64204 Update for Rustc 2015-01-05 15:12:06 +01:00
Sébastien Crozet
e94061ed10 Fix an unconstrained type in na::shape. 2015-01-04 19:43:04 +01:00
Sébastien Crozet
014aabb856 Update to the last rust-nightly.
Version of rustc: 0.13.0-nightly (c6c786671 2015-01-04 00:50:59 +0000).
2015-01-04 19:03:28 +01:00
Sébastien Crozet
0e2563a88f Merge pull request #61 from mikedilger/ulps
ApproxEq trait enhanced with ULPs method of specifying closeness:
2015-01-04 10:17:54 +01:00
Sébastien Crozet
018d4a2ec0 Remove glob imports. 2015-01-04 09:39:32 +01:00
Connorcpu
a18a53b82e Updated to latest rust master 2015-01-03 13:48:10 -08:00
Eduard Bopp
8f7aac0711 Update to latest Rust
The version is rustc 0.13.0-dev (cd614164e 2015-01-02 02:31:12 +0000).

The fixed array syntax was changed from [x, ..3] to [x; 3].
2015-01-03 15:19:52 +01:00
Ben Foppa
b701ca3b58 Update for last rustc of 2014! 2015-01-01 17:23:35 -05:00
Mike Dilger
122c95f2b4 fix macro 2015-01-01 10:41:07 +13:00
Mike Dilger
4c1cfb03cf ApproxEq trait enhanced with ULPs method of specifying closeness:
approx_eq_ulps() allows specification of epsilon as an integer number
  of Units in the Last Place (ULPs) difference between the two floating
  point values

  default approx_ulps() is set to 8.

  approx_eq() function continues to use epsilon method, although I
  recommend further commits and a migration towards the ULPs method.
2015-01-01 10:12:27 +13:00
Ben Foppa
0ba92a51bd Fix Encodable/Decodable deprecation warnings 2014-12-25 16:05:33 -05:00
Pierre Krieger
258e7465d4 Fix Neg trait taking self instead of &self 2014-12-23 19:09:06 +01:00
Pierre Krieger
7bfad8e118 Rename std::slice::Items -> std::slice::Iter 2014-12-23 19:01:49 +01:00
Eduard Bopp
e3c2d46f03 Add trailing ';' to all item macros
This is a fix for the latest nightly, see
https://github.com/rust-lang/rust/pull/19984.
2014-12-19 15:33:01 +01:00
Sébastien Crozet
a92c681d01 Update to the last rust-nightly.
Version of rustc: 0.13.0-nightly (42deaa5e4 2014-12-16 17:51:23 +0000).

Fix #54.
2014-12-17 23:39:47 +01:00
Eduard Bopp
11a2b84ee0 Derive Copy wherever sensible
Copy is now opt-in, see [1]. To keep the current library functionality it is
derived for all sensibly copyable types.

[1]: 096a28607f
2014-12-10 15:37:49 +01:00
Eduard Bopp
223dc316ad Update to latest Rust 2014-12-10 15:09:38 +01:00
Eduard Bopp
edaeab72ac Use object-oriented style for trait methods
Wherever sensible the geometric traits now take `&self` arguments, so that
implementations can be invoked as instance methods instead of static methods.
This makes some idioms easier to express and generally allows for greater
flexibility as the restructured methods can still be invoked like static
methods.

Fixes #39.
2014-12-01 19:44:43 +01:00
Sébastien Crozet
3b44441ce9 Update to the last rust-nightly.
Version of rustc: 0.13.0-nightly (fac5a0767 2014-11-26 22:37:06 +0000).
2014-11-30 15:47:31 +01:00
Sébastien Crozet
9d5d3f49f9 Do not mantion the double-dispatch on the doc. 2014-11-26 14:36:50 +01:00
Sébastien Crozet
d296bebfac Replace the double dispatch trick by multidispatch!
Fix #38.
2014-11-26 14:23:30 +01:00
Sébastien Crozet
3317e057f5 Add float constants to BaseFloat.
Fix #42.
2014-11-25 11:19:31 +01:00
Sébastien Crozet
40c14ace39 Make from_array-like methods static.
Fix #45.
2014-11-25 11:00:26 +01:00
Eduard Bopp
956c5cdecc Implement assertion macros for ApproxEq
These macros yield readable error messages as test assertions for ApproxEq
types. They can be invoked as:

    assert_approx_eq!(a, b);
    assert_approx_eq_eps!(a, b, eps);

Fixes #40.
2014-11-23 14:15:56 +01:00
Eduard Bopp
733219d728 Have ToHomogeneous use &self in method signature
I find makes the syntax a bit lighter.
2014-11-22 12:01:45 +01:00
Eduard Bopp
2f3b68bebb Fix erroneous Translate documentation
Looks like it's been copied & pasted without adapting.
2014-11-21 15:59:26 +01:00
Sébastien Crozet
bab38ca6d5 Add conversion from/to arrays for matrices and vectors.
Use `.as_array()`, `.as_array_mut()`, `.from_array_ref()`, `.from_array_mut()`.
Fix #33.
2014-11-21 11:34:46 +01:00
Sébastien Crozet
d8dfedbf99 Update to the last rust-nightly.
Version of rustc: 0.13.0-nightly (336349c93 2014-11-17 20:37:19 +0000).
2014-11-19 12:11:32 +01:00
Sébastien Crozet
77348f668f Use our own traits instead of the deprecated ones.
We might switch to bjz/num-rs eventually (#32), but in the mean time we just re-declare the
deprecrated traits in nalgebra.
2014-11-16 14:42:18 +01:00
Sébastien Crozet
39b9d20717 Quick update to the last rust-nightly.
This is just a quick-fix so that nalgebra compiles.
This does not fix the deprecation warnings!

Version of rustc: 0.13.0-nightly (d91a015ab 2014-11-14 23:37:27 +0000).
2014-11-15 15:47:59 +01:00
Sébastien Crozet
226b115f1e Overload DVec * DVec -> DVec and DVec / Dvec -> DVec.
Fix #31.
2014-11-06 23:17:35 +01:00
Sébastien Crozet
a2848e6e18 Update to the last rust-nightly.
Version of rustc: 0.13.0-nightly (63c4f22f2 2014-11-05 22:31:44 +0000).
2014-11-06 14:52:52 +01:00
Sébastien Crozet
3834913402 Update to the last rust-nightly.
Version of rustc: 0.13.0-nightly (3327ecca4 2014-11-01 22:41:48 +0000).
2014-11-02 22:47:11 +01:00
Sébastien Crozet
eb745df4bc Update to the last rust-nightly.
Version of rustc: 0.13.0-nightly (221fc1e3c 2014-10-31 02:27:15 +0000).
2014-10-31 17:40:47 +01:00
Sébastien Crozet
36d3e88cb0 Do not automatically impl Scalar{Mul,Div,Add,Sub}.
This makes them implementable without using the double dispatch trick.
2014-10-30 09:21:22 +01:00
Sébastien Crozet
93b184815f Always use Cast<f64> instead of Cast<f32>. 2014-10-30 09:21:22 +01:00
Sébastien Crozet
6b4b25acd4 Basis: add a method to compute the i-th element of the canonical basis. 2014-10-30 09:21:20 +01:00
Sébastien Crozet
171576e2a0 Move the eigen_qr function behind the EigenQR trait.
This simplifies generic programming.
2014-10-30 09:21:20 +01:00
Sébastien Crozet
27be1f0651 Add a SquareMat trait for square matrices. 2014-10-30 09:21:20 +01:00
Sébastien Crozet
6a194b2b62 Rename: Any{Vec,Pnt} to Num{Vec,Pnt} + do not impl them automatically.
Instead, implement them manually. This clarifies error messages for the users.
2014-10-30 09:21:19 +01:00
Sébastien Crozet
628aac0961 Coding style fix. 2014-10-30 09:21:18 +01:00
Sébastien Crozet
a0fffe93a9 Move the .shape() method to its own trait: Shape. 2014-10-30 09:21:18 +01:00
Sébastien Crozet
3354ffc37b Make FloatPnt and FloatVec derive from Index.
The point it that `Index` provides the i-th element decomposed into the trivial basis of their
associated vector spaces.
2014-10-30 08:38:05 +01:00
Sébastien Crozet
2b23446d54 Matrix Index/IndexMut implementation: return an element instead of a column.
There is no reason why indexing would prefer returning a column instead of a line. Instead, we
return an element, and let the user use the `Col` and `Row` traits istead.
2014-10-30 08:38:05 +01:00
Sébastien Crozet
eb24c4063f Remove the {Any,Float}{Pnt,Vec}Ext traits.
They are meaningless and too hard to implement in an ad-hoc way to be really useful.
2014-10-30 08:38:05 +01:00
Sébastien Crozet
074c9356bf Rename: PartialOrd -> POrd, PartialOrdering -> POrdering.
This avoids name clashes with the standard library.
2014-10-30 08:38:05 +01:00
Sébastien Crozet
a960afa4f9 Make AnyVec inherit from Basis.
Every vector must have a basis.
2014-10-30 08:38:05 +01:00
Sébastien Crozet
2f273d655a Rename: VecExt -> AnyVecExt, PntExt -> AnyPntExt. 2014-10-30 08:38:05 +01:00
Steve Klabnik
426ba307ab fail -> panic 2014-10-30 00:25:47 -04:00
Robin Gloster
4e4eb62ffc upgrade to newer rust 2014-10-22 13:35:17 +02:00
Sébastien Crozet
e2fc8aa764 Deprecate to_pnt, as_pnt and VecAsPnt.
Those are meaningless. Use `na::orig() + the_vector` instead.
2014-10-20 22:35:43 +02:00
Sébastien Crozet
276bf3f999 Update to the last rust-nightly.
Version of rustc: 0.13.0-nightly (222ae8b9b 2014-10-18 00:47:22 +0000).
2014-10-18 20:52:35 +02:00
Sébastien Crozet
8288ebdfab Add quaternions to the feature list. 2014-10-14 22:24:10 +02:00
Sébastien Crozet
5ba9f27530 Add quaternions.
Fix #24.
2014-10-14 22:20:49 +02:00
Sébastien Crozet
162346ab47 Fix typos. 2014-10-13 08:46:39 +02:00
Sébastien Crozet
0cf725f5f2 Add 3D orthogonal and perspective projection structures.
Fix #26.
2014-10-12 20:40:46 +02:00
Sébastien Crozet
03eda09084 Some documentation fixes.
Fix #25.
2014-10-12 10:35:56 +02:00
Sébastien Crozet
b6090042ac Add a Axpy that implements y <- y + ax.
This is very useful for accumulations to compute, e.g. centers.
2014-10-12 09:24:16 +02:00
Sébastien Crozet
de2479b70f Do not implement Transform<Vec*> for Vec*.
This is error prone as this is a no-op for vectors and a translation for points.
2014-10-11 00:23:10 +02:00
Sébastien Crozet
70de340498 Remove the Iso * Vec overload and the ability to Transform a Vector with an Iso.
This is too error prone as the user has to remember if he is using a vector or a point.
Istead, to transform a vector with an Isometry, use the internal rotation matrix of the isometry:
`iso.rotation * vector` instead of `iso * vector`.

The `Rotation` trait can also be used.
2014-10-10 22:21:05 +02:00
Sébastien Crozet
bf67f079e7 Add a function nalgebra::center(a, b) that computes the center of two points. 2014-10-10 21:24:18 +02:00
Sébastien Crozet
b3e7540b3c Delete the deprecated na:: module. 2014-10-10 20:57:20 +02:00
Sébastien Crozet
6fb6d35980 Documentation fixes. 2014-10-10 20:56:40 +02:00
Sébastien Crozet
e852eb4783 Fix the implementation of ToHomogeneous for Iso*. 2014-10-10 20:56:24 +02:00