Commit Graph

345 Commits

Author SHA1 Message Date
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
Sébastien Crozet 7e9bb98823 Add `to_pnt` and `to_vec` methods. 2014-10-10 12:19:37 +02:00
Sébastien Crozet 924d8269d8 Add points.
This adds the Pnt{1,2,3,4,5,6} structures.
This adds the traits:
  − AnyPnt
  − FloatPnt
  − PntExt
  − FloatPntExt
  − Orig (to return the zero point)
  − PntAsVec
  − VecAsPnt
This adds operator overloading:
  − Pnt + Vec
  − Pnt - Vec
  − Pnt * Scalar
  − Pnt / Scalar
  − Pnt + Scalar
  − Pnt - Scalar
  − Iso * Pnt
  − Rot * Pnt
  − Pnt * Iso
  − Pnt * Rot
This changes some behavior:
  − Iso multiplication with a Vec does not translate the vector any more.
  − ToHomogeneous adds a 0.0 at the end of a Vec and a 1.0 at the end of a Pnt.
  − FromHomogeneous performs w-normalization on a Pnt, but not on a Vec.
  − The Translate<Vec> trait is never implemented (i-e. a Vec is not to be translated).

cc #25
2014-10-10 11:45:20 +02:00
Sébastien Crozet ba18f5aa70 Deprecate `na::`, move all reexport to the root crate.
This also moves the tests and benches to cargo-complient folders.

Fix #21.
2014-09-28 19:22:57 +02:00
Sébastien Crozet 8f89ac421c Update to the last rust.
Version of rustc: rustc 0.12.0-nightly (d64b4103d 2014-09-26 21:47:47 +0000).
2014-09-27 09:54:03 +02:00
Sébastien Crozet a9c7fe7420 Fix the matrix inversion test.
This prevent the test from failing when the matrix is non-inversible.
2014-09-19 23:53:36 +02:00
Sébastien Crozet 086088a0ed Fix the implementation of `Row` for fixed-size matrices.
Matrices are column-major.
2014-09-19 23:51:27 +02:00
Sébastien Crozet 1945cb09f2 Merge pull request #20 from bjz/warnings
Fix warnings
2014-09-19 23:43:46 +02:00
Brendan Zabarauskas d3abbfcd4c Fix warnings 2014-09-18 15:20:04 +10:00
Brendan Zabarauskas b6959ef913 Implement index operators
Closes #18
2014-09-18 12:23:52 +10:00
Ben Foppa 6c8f14966c update for rustc 21d1f4d7c 2014-09-15 21:30:36 -04:00
Sébastien Crozet 560dff3891 Update to the last rust-nightly.
Version of rustc: 0.12.0-pre-nightly (2e92c67dc 2014-08-28 23:56:20 +0000).
2014-08-29 21:35:42 +02:00
Sébastien Crozet c408d5a0b2 Update to the last rust-nightly.
Version of rustc: 0.12.0-pre-nightly (01ec6fab2 2014-08-18 00:46:10 +0000).
2014-08-18 19:35:47 +02:00
Sébastien Crozet ff95e2a9d8 Remove the shifting from the qr algorithm. 2014-08-17 22:42:16 +02:00
Sébastien Crozet 844092205e Do not compute the matrix inverse if the determinant is near-zero. 2014-08-17 22:41:55 +02:00
Sébastien Crozet 314f0c0043 Add `na::eigen_qr` that performs an eigendecomposition using the qr algorithm. 2014-08-16 15:34:34 +02:00
Sébastien Crozet 663f8b3ccb Add a `Diag` to build, get and set a matrix diagonal. 2014-08-16 13:22:53 +02:00
Sébastien Crozet 40c9915870 Add the types: DVec1, .., DVec6.
They are stack-allocated, dynamically sized vectors with a maximum size.
This is useful for slicing small matrices, without allocation.
2014-08-16 12:16:26 +02:00
Sébastien Crozet 7d6884c3df Add a `Det` trait to compute the determinant + implement it for `Mat{1,2,3}`. 2014-08-11 19:54:13 +02:00
Sébastien Crozet 2f0234e7ac Avoid modulo on `DMat::from_fn`. 2014-07-27 09:13:13 +02:00
Nathan Stien ebe1ed1f16 Fix coordinate calculation in DMat::from_fn().
The builder function `f` was receiving incorrect coordinates, often
involving a uint underflow.

Added a test case to verify the new behavior.
2014-07-26 19:03:37 -05:00
Sébastien Crozet 5b1388888b Update the compilation section of the README. 2014-07-14 17:56:35 +02:00
Sébastien Crozet 65211aa89a Cleanup the Makefile + update travis.yml. 2014-07-14 16:27:46 +02:00
Sébastien Crozet 11ee4e46b1 Make cargo build a rlib too. 2014-07-14 13:48:31 +02:00
Sébastien Crozet 2ff660dfe1 Add a `ScalarMul` and a `ScalarDiv` trait.
Those might be useful to overcome rust limitations wrt operator overloading.
2014-07-13 11:43:05 +02:00
Sébastien Crozet e3d1bf6f92 Update to the last rust-nightly.
Version of rustc: 0.11.0-nightly (5ad7286dc37839b7234ff51aab172e48935869d8 2014-07-12 00:31:46 +0000)
2014-07-12 09:30:49 +02:00
Sébastien Crozet 7b9a3f2bb9 Update to the last rust-nightly.
Version of rustc: 0.11.0-nightly (459f155f81291c46633e86a480628b50304ffb1c 2014-07-04 23:46:44 +0000).
2014-07-05 10:33:57 +02:00
Sébastien Crozet ecbc159521 Update some links to point on `nalgebra.org`. 2014-06-09 21:48:24 +02:00
Sébastien Crozet efc2f46019 Update to the last rust-nightly.
Version of rustc: 0.11.0-pre-nightly (e55f64f 2014-06-09 01:11:58 -0700).
2014-06-09 21:03:36 +02:00
Sébastien Crozet 5066d6b9de Update to the last rust-nightly.
Version of rustc: 0.11.0-pre-nightly (918dbfe 2014-06-02 20:51:30 -0700).
2014-06-03 22:37:46 +02:00
Sébastien Crozet f6c597f102 Update to the last rust-nightly.
Version of rustc: 0.11.0-pre-nightly (faa7ba7 2014-05-31 01:06:40 -0700).

Main changes:
        * `cmp::Ord` -> `cmp::PartialOrd`
        * `cmp::Eq`  ->  `cmp::PartialEq`

Note that `na::PartialOrd` is not the same as `cmp::PartialOrd`
(which lacks a lot of partial ordering operators).
2014-06-01 15:22:11 +02:00
Leo Lahti f8ad8aa02b Fixed issue #13 2014-05-30 21:14:16 +00:00
Sébastien Crozet 40c5f5deb8 Rename matrix-scalar and vector-scalar operator-overloading-related traits to avoid name clashes. 2014-05-22 19:54:54 +02:00
Franklin Delehelle (Vampire.local) 6468360edb Compile with nightlies 2014-05-21 13:08:04 +02:00
Vincent Barrielle 987b91767a update to the latest rust: FloatMath for math functions (sin/exp/...)
Also removed a bunch of duplicate trait usages
2014-05-16 21:04:35 +02:00
Vincent Barrielle f8ac86effc update to latest rust 2014-05-13 08:29:56 +02:00
Vincent Barrielle a1fdec3b52 Merge remote-tracking branch 'origin/master' into genericQR 2014-05-13 08:27:52 +02:00
Vincent Barrielle 73c6610048 new_identity and housholder matrix available under na:: 2014-05-12 21:54:59 +02:00
Vincent Barrielle 3dc0e27fd2 fix typo 2014-05-12 21:54:18 +02:00
Vincent Barrielle 76a8bc3cf1 QR factorization for fixed size matrices.
The ColSlice implementation for fixed size matrices returns a DVec,
while this is probably not optimal performance-wise, the dynamic nature
of the result makes this necessary. Using a data type presenting the
ImmutableVector trait would solve this, but it looks like a non-trivial
change.
2014-05-12 14:06:25 +02:00
Alexander Christiansson 5d8727a17d std::cast::transmute -> std::mem::transmute 2014-05-12 01:31:22 +02:00
Vincent Barrielle dcf7b8ad01 generic implementation of QR decomposition
But static matrices can't use it yet, they need to implement the
Row/Col slicing traits.
2014-05-11 21:20:41 +02:00
Vincent Barrielle 6ad11edf9b more generic QR: generalize the impl of the Indexable trait
This allows the implementation of householder reflection without relying
on knowledge of DVec. This required a new member in the Indexable trait:
the shape() function, which returns the maximum index available.
2014-05-11 20:05:08 +02:00
Vincent Barrielle a213a3da93 fixing style issues 2014-05-10 12:48:25 +02:00
Vincent Barrielle d1a58f960c Moving row/col slicing traits to a better place 2014-05-09 23:05:23 +02:00
Vincent Barrielle 5611307b4d QR decomposition depends less on DMat internals 2014-05-09 22:14:37 +02:00
Vincent Barrielle 2fd880a62d implemented QR factorization
this is a first sketch, the algorithm is not yet initialized and relies
on knowledge of DMat internals. A next step would be to implement this
algorithm in a more generic manner.
2014-05-09 18:59:26 +02:00
Sébastien Crozet 9badebf24c Give access to the traits required for generalized operator overloading.
Those are `Vec3MulRhs`-like traits that allow the simulation of haskellish fundeps to allow multiple
overloads of builtin operators (* / + -).
They are all on the `na::overload` module.
2014-05-08 23:21:36 +02:00
Sébastien Crozet 7ef933aefb Update to the last Rust.
Version of rustc: 0.11-pre (eea4909 2014-04-24 23:41:15 -0700)
Vector do not implement `Rand` anymore.
2014-04-25 20:28:29 +02:00
Sébastien Crozet 1eed234e08 Avoid name conflicts with the standard lib.
The `Vec` trait is renamed `AnyVec`.
The `Less`, `Greater`, `Equal` variants are renamed `PartialLess`, `PartialGreater`,
`PartialEqual`.

Those new names are not very good, so they might change in the future.
2014-04-13 10:37:39 +02:00
Sébastien Crozet 16aa5c8937 Make Iso* fields public again. 2014-04-03 20:52:52 +02:00
Sébastien Crozet 06e18d214a Update to the last Rust.
Version of rustc: 0.10-pre (b8ef9fd 2014-03-31 15:51:33 -0700)

struct fields are now public by default.
2014-04-01 23:00:59 +02:00
Sébastien Crozet 1edecbcee4 Automatically derive `TotalEq` whenever `Eq` is derived. 2014-03-28 21:40:30 +01:00
Sébastien Crozet 4435d2f7f4 Update to the last Rust.
Version of rustc: rustc 0.10-pre (b8601a3 2014-03-28 06:26:47 -0700)
2014-03-28 20:58:09 +01:00
Sébastien Crozet 1dade3bd24 Remove every `use std::vec::Vec`.
It is part of the Rust prelude now.
2014-03-22 08:14:15 +01:00
Sébastien Crozet 915d8c057e Update to the last Rust.
Version of rustc: 0.10-pre (7b957a8 2014-03-21 08:21:51 -0700)
2014-03-21 21:57:58 +01:00
Sébastien Crozet 606ad947c9 Use Vec instead of ~[].
Version of rustc: 0.10-pre (fc7a112 2014-03-14 23:11:31 -0700)
2014-03-15 12:23:54 +01:00
Peter Nguyen fc10742b5c Change std::rand to rand in lower_triangular.rs 2014-03-13 19:35:01 -04:00
Peter Nguyen 503b567b27 Update to latest Rust.
Version of rustc: rustc 0.10-pre (4d64441 2014-03-12 15:07:06 -0700)
2014-03-13 18:20:04 -04:00
Peter Nguyen 7bc561c835 Update to latest rust.
`std::rand` was moved to it's own crate.
Version of rustc: rustc 0.10-pre (4d64441 2014-03-12 15:07:06 -0700)
2014-03-13 17:47:03 -04:00
Sébastien Crozet 13430866d4 Remove the DeepClone derivings.
Version of rustc: 0.10-pre (e959c87 2014-03-08 22:41:45 -0800)
2014-03-09 10:09:08 +01:00
Sébastien Crozet 57dfc14139 Update to the last Rust.
Version of rustc: 0.10-pre (4243cad 2014-02-24 22:17:02 -0800)
2014-02-25 09:41:41 +01:00
Sébastien Crozet c834439009 Update to the last rust.
Version of rustc: 0.10-pre (a5342d5 2014-02-23 22:06:50 -0800)
2014-02-24 11:48:02 +01:00
Sébastien Crozet ba32051fdf Add deriving `Hash` and `Show`. 2014-02-23 08:44:21 +01:00
Sébastien Crozet 9a49bb5895 Update to the last Rust.
Version of rustc: 0.10-pre (698042d 2014-02-21 21:26:49 -0800)
2014-02-22 09:09:04 +01:00
Sébastien Crozet 0eab5e0d4f Add free functions for partial ordering comparison operators. 2014-02-18 12:53:15 +01:00
Sébastien Crozet 9fb67f8125 Add more comparison default methods to the `PartialOrd` trait.
This allows for some optimization.
2014-02-18 12:48:52 +01:00
Sébastien Crozet becb77843e Update to the last Rust.
Version of rustc: 0.10-pre (b0ce960 2014-02-17 22:16:51 -0800)
This replaces uses of the `Orderable` trait by a `PartialOrd` trait: the `min` and `max` methods
are replaced by `inf` and `sup` methods.
Vectors do not implement the `Ord` trait any more.

Fix #4
2014-02-18 12:13:40 +01:00
Eduard Bopp 513fb33e4a Fix call to swap function due to upstream changes
Rust moved this function from std::util (which has been dissolved now) to std::mem.
2014-02-11 20:34:28 +01:00
Sébastien Crozet 96e77e4cfd Update to the last Rust.
Version of rustc: 0.10-pre (9a672f9 2014-02-05 18:31:36 -0800)
2014-02-06 08:59:27 +01:00
Sébastien Crozet 85c67b5544 Activate the unused_results lint. 2014-01-31 15:26:25 +01:00
Sébastien Crozet d50afdf645 Update to the last Rust.
Version of rustc: 0.10-pre (e3b1f3c 2014-01-29 23:46:26 -0800)
2014-01-30 11:28:15 +01:00
Sébastien Crozet 4c262bb91d Remove useless parenthesis. 2014-01-23 01:22:23 +01:00
Sébastien Crozet f018478117 Fix the doc root url. 2014-01-21 08:24:23 +01:00
Sébastien Crozet 836a0d40ae Modify `.travis.yml` to generate the documentation. 2014-01-21 08:13:10 +01:00
Sébastien Crozet 8de8c94b45 Update to the last Rust.
Version of rustc: 0.10-pre (d4640f9 2014-01-20 11:41:29 -0800)

This also removes the `PVec` type due to lack of use-case.
2014-01-20 23:41:22 +01:00
Sébastien Crozet 9dd8bb4ea2 Fix the documentation for `na::inv_translate`. 2014-01-19 16:22:58 +01:00
Sébastien Crozet 5463da79ae Make `make test` test the documentation examples too. 2014-01-19 16:16:12 +01:00
Sébastien Crozet 79008262cb Doc: fix some typos. 2014-01-19 15:49:32 +01:00
Sébastien Crozet cbebbe8961 Add the `html_doc_url` attribute. 2014-01-18 19:57:36 +01:00
Sébastien Crozet 197f7ff4d2 Update to the last Rust
Version of rustc: 0.10-pre (1da2962 2014-01-17 23:41:45 -0800)
Iterators were renamed.
2014-01-18 10:49:47 +01:00
Sébastien Crozet 096cce413f Update to the last Rust.
The `Bounded` trait is no longer on the Rust prelude.
2014-01-16 08:17:44 +01:00
Sébastien Crozet 98b2aa8b9c Revert "Update to the last Rust."
This reverts commit c1b91eefbb.

As a matter of fact, Bounded has not been deleted.
However it is no longer automatically exported by the stdlib.
2014-01-16 08:15:57 +01:00
Sébastien Crozet c1b91eefbb Update to the last Rust.
The `Bounded` trait does not exist any more.
2014-01-16 08:12:33 +01:00
Sébastien Crozet 3e41e18c32 Fix the example on the README. 2014-01-14 09:52:18 +01:00
Sébastien Crozet f026585b63 Fix the link to the online documentation. 2014-01-14 09:48:03 +01:00
Sébastien Crozet 87c0d5b769 Make the `struct` and `traits` modules private.
Now that the documentation of public export of private modules is inlined on the exporter's
documentation, there is non need to export anything but the `na` module.
2014-01-14 09:40:12 +01:00
Sébastien Crozet 1672e9e5d2 Inline the default implementation of approx_eq 2014-01-09 20:53:01 +01:00
Sébastien Crozet f5b0b76d8d Add the ApproxEq trait.
It is no longer part of std::num
2014-01-09 20:48:30 +01:00
Sébastien Crozet 31904cad6f Add a `perspective3d` free function on the na:: module. 2014-01-01 14:44:51 +01:00
Sébastien Crozet db831f922e Update to the last Rust. 2013-12-24 11:46:16 +01:00
Sébastien Crozet effb1632d1 Update to the last Rust: pkgid -> crate_id 2013-12-20 12:55:15 +01:00
Jan Niklas Hasse 396d394ab9 Use new std::vec functions 2013-12-16 12:04:02 +01:00
Sébastien Crozet e25bac3565 Fix pkgid. 2013-12-12 18:08:05 +01:00
Sébastien Crozet f83ddde824 Update to the last Rust.
This renames lib.rs to nalgebra.rs so that the generated *.so has the right name.
2013-12-11 16:32:03 +01:00
Sébastien Crozet 1e71dc1d0a Add unchecked access to vector components on the Indexable trait. 2013-12-01 20:17:18 +01:00