Commit Graph

657 Commits

Author SHA1 Message Date
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
Sébastien Crozet 25f564128b Merge pull request #29 from steveklabnik/master
fail -> panic
2014-10-30 08:23:19 +01:00
Steve Klabnik 426ba307ab fail -> panic 2014-10-30 00:25:47 -04:00
Sébastien Crozet f998368fd7 Merge pull request #28 from globin/master
Upgrade to newer rust.
2014-10-22 17:05:28 +02: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
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
Sébastien Crozet 1a83622a2d Merge pull request #19 from bjz/index-operators
Implement index operators
2014-09-19 23:43:14 +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
Sébastien Crozet 972bbcc845 Merge pull request #17 from bfops/master
update for rustc 21d1f4d7c
2014-09-16 08:36:04 +02: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 f83e7d25a8 Update .travis.yml. 2014-08-23 19:37:14 +02:00
Sébastien Crozet 1b7cd5fe1f Fix .travis.yml to use rustup. 2014-08-18 21:05:36 +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 725f53d1e7 Add a `clean` rule to the makefile. 2014-07-27 09:13:43 +02:00
Sébastien Crozet 2f0234e7ac Avoid modulo on `DMat::from_fn`. 2014-07-27 09:13:13 +02:00
Sébastien Crozet 335bdd8a01 Merge pull request #16 from nathanic/master
Fix coordinate calculation in DMat::from_fn().
2014-07-27 09:11:18 +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