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