Commit Graph

34 Commits

Author SHA1 Message Date
Sébastien Crozet
a0fffe93a9 Move the .shape() method to its own trait: Shape. 2014-10-30 09:21:18 +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
5ba9f27530 Add quaternions.
Fix #24.
2014-10-14 22:20:49 +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
6fb6d35980 Documentation fixes. 2014-10-10 20:56:40 +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
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
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
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
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
Alexander Christiansson
5d8727a17d std::cast::transmute -> std::mem::transmute 2014-05-12 01:31:22 +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
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
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
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
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
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
f5b0b76d8d Add the ApproxEq trait.
It is no longer part of std::num
2014-01-09 20:48:30 +01:00
Sébastien Crozet
c352452bcb Remove unused import. 2013-10-10 00:26:07 +02:00
Sébastien Crozet
7667d8f19a Add a double-trait-dispatch-trick based cast trait
The Cast trait replaces both MatCast and VecCast.
2013-10-09 23:10:43 +02:00
Sébastien Crozet
84212f1449 Huge api change!
Everything changed, hopefully for the best.

* everything is accessible from the `na` module. It re-export
  everything and provides free functions (i-e: na::dot(a, b) instead of
  a.dot(b)) for most functionalities.
* matrix/vector adaptors (Rotmat, Transform) are replaced by plain
  types: Rot{2, 3, 4} for rotation matrices and Iso{2, 3, 4} for
  isometries (rotation + translation).  This old adaptors system was to
  hard to understand and to document.
* each file related to data structures moved to the `structs` folder.
  This makes the doc a lot more readable and make people prefer the
  `na` module instead of individual small modules.
* Because `na` exists now, the modules `structs::vec` and
  `structs::mat` dont re-export anything now.

As a side effect, this makes the documentation more readable.
2013-10-06 18:07:17 +02:00