Sébastien Crozet
72395f3546
Add an unsafe `at_fast` method for unchecked read access to DVec and DMat.
2013-09-13 11:32:30 +02:00
Sébastien Crozet
3b814b462f
Add unsafe methods to initialize a DVec or DMat without initialization.
2013-09-13 11:11:04 +02:00
Sébastien Crozet
05470bba90
Add a `new_random` method to build a `DMat` or `DVec` filled with random numbers.
2013-09-13 10:56:25 +02:00
Sébastien Crozet
1cf3506e06
Remove some useless #[test] tags.
2013-09-13 10:34:49 +02:00
Sébastien Crozet
6f81fc6d5c
Add `Absolute`, `Col`, `Mat`, `AbsoluteRotate` traits.
...
Traits like `AbsoluteRotate` and `RotationWithTranslation` have been moved to a `comp` folder
containing any trait providing operations which are combination of several traits.
2013-09-13 10:26:19 +02:00
Sébastien Crozet
00f26f8951
Replace std::iterator by std::iter.
2013-09-09 11:19:54 +02:00
Sébastien Crozet
ea98ef15b7
Implement `Norm` and `Dot` for `DVec`.
2013-09-08 18:29:51 +02:00
Sébastien Crozet
bdf82748dc
Add a `Dot` and a `Norm` trait for vectors having a dot product and a norm.
...
Those methods are not part of the `Vec` and `AlgebraicVec` traits any more.
2013-09-08 18:20:06 +02:00
Sébastien Crozet
37f0b123e0
Make the dot-product and normalization related methods public for DVec.
...
This will change soon with two traits: Dot and Norm.
2013-09-08 18:00:28 +02:00
Sébastien Crozet
992adb99f0
Add a `Container` implementation for every vector.
2013-09-08 17:26:31 +02:00
Sébastien Crozet
57b89b38df
Add `nrow()`, `ncols()` methods for `DMat`, and Container impl. for `DVec`.
2013-09-08 17:19:50 +02:00
Sébastien Crozet
3ab06faef6
Implement `UnitSphereSample` for `Vec1`.
2013-09-08 16:03:03 +02:00
Sébastien Crozet
6147d5424e
Implement 3d rotation matrix -> axis angle conversion.
...
Cornercases are not handled correctly yet.
2013-09-08 15:45:32 +02:00
Sébastien Crozet
4e33b96aec
Update to the last rust.
2013-09-07 17:26:05 +02:00
Sébastien Crozet
8db01c6409
Add more functions to initialize DMat and DVec.
2013-09-07 08:43:17 +02:00
Sébastien Crozet
a00860df41
Reexport `DMat` in mat.rs and `DVec` in vec.rs.
2013-09-07 08:23:09 +02:00
Sébastien Crozet
0be1132452
Swap the type parameters of `Transform`.
2013-09-06 15:22:14 +02:00
Sébastien Crozet
2ccd62d558
Add methods to set the translation/rotation/transformation directly.
2013-09-06 08:48:08 +02:00
Sébastien Crozet
a0b232be0a
Rename `Mat4::projection` to `mat4::new_perspective`.
2013-09-05 13:45:11 +02:00
Sébastien Crozet
628066cdc8
Make DMat able to represent rectangular matrices.
...
The code is largely untested.
2013-09-05 00:01:52 +02:00
Sébastien Crozet
8973e0d67c
Add function to create a projection matrix.
2013-09-04 23:29:58 +02:00
Sébastien Crozet
539e34c2bf
Move all the rotation-related free functions to a `RotationWithTranslation` trait.
...
This is not a very good name though.
2013-09-04 17:07:56 +02:00
Sébastien Crozet
70cee0ea3d
Rename the main module lib.rs.
...
This is a first step toward the use of rustpkg.
2013-08-31 18:33:20 +02:00
Sébastien Crozet
a40899ef67
Add missing rotation-related functions.
2013-08-31 17:17:18 +02:00
Sébastien Crozet
9ecafc5cdf
Dont use globing `pub use`, they are buggy.
2013-08-31 17:14:41 +02:00
Sébastien Crozet
f762891ecf
Move the `Outer` product trait to vec.rs
2013-08-31 12:23:26 +02:00
Sébastien Crozet
a5a616e05e
Make the `traits` module private.
...
Use `vec::Whatever` or `mat::Whatever` instead of `traits::whatever::Whatever`.
2013-08-31 12:16:53 +02:00
Sébastien Crozet
1b31304a9e
Rework the trait exports.
...
`use vec::an_operation` will import a vector-applicable operation trait.
`use mat::an_operation` will import a matrix-applicable operation trait.
2013-08-31 11:41:32 +02:00
Sébastien Crozet
eb4e4a6aeb
Add a PVec3 type, for Padded Vector 3d.
...
This is the same as Vec3 but with an extra field for padding. This is useful for applications
needing a power-of-two number of arguments (typically mixed CPU/GPU applications).
The corresponding matrix is not yet implemented.
2013-08-31 11:13:17 +02:00
Sébastien Crozet
346a803b7f
Improve how the dummy parameter are passed to the Dim::dim function.
2013-08-30 09:53:17 +02:00
Sébastien Crozet
82ddda154f
Update to work with the last compiler.
...
Because of the unfortunate changes on type parameters resolution:
- the Dim trait now needs an useless parameter to infer the Self type.
- ApproxEps::epsilon() is broken.
2013-08-28 14:22:12 +02:00
Sébastien Crozet
f465928085
Fix Transform adaptor ToHomogeneous implementation.
2013-08-26 17:39:25 +02:00
Sébastien Crozet
7052aa88ee
Add two traits: `CrossMatrix` and `Row`.
...
CrossMatrix is a trait for vectors having a cross product representable as a matrix.
Row is a trait for Matrixces and Vectors, to access (by index) their rows.
2013-08-25 23:01:44 +02:00
Sébastien Crozet
4635d6ebac
Add Rotate, Transform, Translate impl for vectors.
2013-08-23 16:29:08 +02:00
Sébastien Crozet
833378d83f
Add and `Identity` matrix type.
...
It implements most matrix traits but all its operations are no-ops.
2013-08-23 15:59:26 +02:00
Sébastien Crozet
6999444575
Merge the Rotatable, Translatable, Transformable traits with their corresponding Rotation, Translation, Transformation.
2013-08-22 17:47:37 +02:00
Sébastien Crozet
347883caa1
Rework of the traits for Vectors.
...
The goal is to make traits less fine-grained for vectors, and reduce the amount of `use`.
- Scalar{Mul, Div} are removed, replaced by Mul<N, V> and Div<N, V>,
- Ring and DivisionRing are removed. Use Num instead.
- VectorSpace, Dot, and Norm are removed, replaced by the new, higher-level traits.
Add four traits:
- Vec: common operations on vectors. Replaces VectorSpace and Dot.
- AlgebraicVec: Vec + the old Norm trait.
- VecExt: Vec + every other traits vectors implement.
- AlgebraicVecExt: AlgebraicVec + VecExt.
2013-08-18 18:33:25 +02:00
Sébastien Crozet
cead4f8410
Moved DivisionRing to ring.rs.
2013-08-17 17:50:01 +02:00
Sébastien Crozet
344d761be5
Add the ability to stop the basis internal itertors.
2013-08-17 10:48:45 +02:00
Sébastien Crozet
d8db04cce5
Changed the UniformSphereSample trait to return a borrowed vector.
2013-08-16 18:08:51 +02:00
Sébastien Crozet
61e985634b
Fix FromIterator impl.
2013-08-16 10:14:01 +02:00
Sébastien Crozet
5187a1a73f
Add `Round` impl for vectors.
2013-08-15 10:41:47 +02:00
Sébastien Crozet
a69f43bccd
Remove some unneded visibility modifiers.
2013-08-14 09:43:02 +02:00
Sébastien Crozet
24e1862a9e
Fix to work with the last Rust deriving.
2013-08-13 10:57:19 +02:00
Sébastien Crozet
a46b063192
Add Scalar{Mul, Div, Add, Sub} for matrices.
2013-08-12 17:04:53 +02:00
Sébastien Crozet
037cf95542
Add (pointwise) Add and Sub impl for matrices.
2013-08-12 16:50:50 +02:00
Sébastien Crozet
b08a8384ae
Add outer product.
2013-08-12 16:45:31 +02:00
Sébastien Crozet
3858c63291
Update to work with the last Rust api.
2013-08-11 16:07:34 +02:00
Sébastien Crozet
50a6454ae8
Add missing #[inline] hints.
2013-08-07 20:53:51 +02:00
Sébastien Crozet
efd14f9e88
Further coding style fixes.
2013-08-05 10:15:11 +02:00
Sébastien Crozet
c59911168e
Fix curly braces.
2013-08-05 10:13:44 +02:00
Sébastien Crozet
a810bf6008
Indentation fixes.
2013-08-05 09:44:56 +02:00
Sébastien Crozet
53a5dbb6e3
Add `Orderable` implementation for vectors.
...
The `min`, `max` and `clamp` methods are component-wise.
2013-08-04 11:06:23 +02:00
Sébastien Crozet
9af1cac45d
Fix `Ord` implementations to be a partial order.
...
When two elements are not comparable, all comparison operators return `false`.
2013-08-04 10:36:35 +02:00
Sébastien Crozet
50b34ca765
Fix `for` loops (again) + `iterate` becomes `range`.
2013-08-03 12:21:56 +02:00
Sébastien Crozet
7b2dbb244e
Fix `for` loops.
2013-08-02 10:50:04 +02:00
Sébastien Crozet
3f3f59e8eb
Changed mod visibilities + add doc for types.rs
2013-08-01 18:55:42 +02:00
Sébastien Crozet
67dea17abe
for ... advance -> foreach ... in
2013-08-01 09:18:21 +02:00
Sébastien Crozet
164ff5b1b2
Add missing type bounds.
2013-07-25 14:50:55 +02:00
Sébastien Crozet
4f3de703b7
Add static methods to build canonical axis.
...
For exemple use: Vec3::x() to create the vector Vec3::new(1.0, 0.0, 0.0).
The same aplies for y, z, w, etc.
2013-07-24 23:54:54 +02:00
Sébastien Crozet
e75fe80966
Add documentation.
2013-07-24 16:50:40 +02:00
Sébastien Crozet
6cf8db0926
Replaced all remaining ocurences of from_homogeneous by from
2013-07-23 23:28:02 +02:00
Sébastien Crozet
321574a827
from_homogeneous -> from
2013-07-23 23:26:47 +02:00
Sébastien Crozet
93597f0ef9
Add look_at_z.
...
Having a look_at which aligns the z-axis with the look_at direction is useful for cameras. It
will exist only in 3d.
2013-07-23 18:41:57 +02:00
Sébastien Crozet
8634b9037d
Changed the semantic of the look_at method.
...
Before, the `look_at` method aligned the `z` axis with the look_at direction.
This will be problematic in the future if we want to generalize that on n-dimension (the z axis
could not axis at all when n < 3).
Now, the `look_at` method aligns the `x` axis with the look_at direction. Thus we have a chance for
it to be generalizable on n-dimension, `n >= 1`.
2013-07-23 12:12:03 +02:00
Sébastien Crozet
4ea1dd92e6
Fixed transposition.
2013-07-23 11:15:20 +02:00
Sébastien Crozet
cd2aeb4861
Fix look_at.
2013-07-23 01:06:20 +02:00
Sébastien Crozet
e2f34023ed
Add traits MatCast and VecCast.
...
VecCast casts a Vec<N1> to a Vec<N2> with N1 and N2 bounded by NumCast.
MatCast casts a Mat<N1> to a Mat<N2> with N1 and N2 bounded by NumCast.
2013-07-22 23:42:35 +02:00
Sébastien Crozet
81389a911a
Add utility methods.
...
Added look_at for 3d rotation matrix and 3d transform.
Rotation matrices constructors are now the static methods Rotmat::from_angle,
Rotmat::from_axis_angle.
2013-07-22 23:20:03 +02:00
Sébastien Crozet
0577f3e364
Add type aliases.
2013-07-22 13:44:08 +02:00
Sébastien Crozet
f92b28f53f
Add sphere sampling implementation for Vec3<f64>.
2013-07-22 12:32:42 +02:00
Sébastien Crozet
3a64e05c62
Merged the {vec, mat} and {vec, mat}_impl modules.
2013-07-22 11:35:36 +02:00
Sébastien Crozet
ff24f70332
Flattened the `traits` submodules.
2013-07-22 10:26:20 +02:00
Sébastien Crozet
e548e1fa5e
Add tests for vec0.
2013-07-20 17:02:54 +02:00
Sébastien Crozet
ae74a05fdd
Add implementation of Vec0.
2013-07-20 16:32:39 +02:00
Sébastien Crozet
d74a5905c6
Fix sub_dot implementations.
2013-07-20 15:18:44 +02:00
Sébastien Crozet
cf216f9b90
Removed occurences of copy/Copy + improved api.
...
Now, access to vector components are x, y, z, w, a, b, ... instead of at[i].
The method at(i) has the same (read only) effect as the old at[i].
Now, access to matrix components are m11, m12, ... instead of mij[offset(i, j)]...
The method at((i, j)) has the same effect as the old mij[offset(i, j)].
Automatic implementation of all traits the compiler supports has been added on the #[deriving]
clause for both matrices and vectors.
2013-07-20 15:07:49 +02:00
Sébastien Crozet
8918cb5d7e
invert -> inplace_inverse to avoid name clash with iterators.
2013-07-13 13:34:41 +00:00
Sébastien Crozet
7f05cc5977
abs needs the Signed trait.
2013-07-10 17:43:45 +00:00
Sébastien Crozet
c37d58f3fb
Add Vec0.
2013-07-07 22:34:18 +02:00
Sébastien Crozet
831f561441
Use Clone instead of Copy.
2013-07-05 22:54:42 +00:00
Sébastien Crozet
6f081b70b8
Add sphere sempling trait + Copy becomes Clone
2013-07-04 14:23:08 +00:00
Sébastien Crozet
51fd2bc744
map -> iter().transform
2013-07-02 10:00:55 +00:00
Sébastien Crozet
68d601a642
Basis trait now uses internal iterators to avoid allocations.
2013-07-01 16:33:22 +00:00
Sébastien Crozet
6fd9696253
Fix bug when trying to create a rotation matrix with a zero angle.
2013-06-30 21:19:36 +00:00
Sébastien Crozet
02e22717a4
More rotation sugar.
2013-06-29 19:02:51 +00:00
Sébastien Crozet
f8515f4683
Add rotation wrt center of a matrix.
2013-06-29 18:59:04 +00:00
Sébastien Crozet
50293ca417
Add read-only access to a Rotmat subcomponents.
2013-06-29 18:37:01 +00:00
Sébastien Crozet
364c16ca19
Add read-only accesse to a Transform subcomponents.
2013-06-29 18:35:01 +00:00
Sébastien Crozet
50d424a901
Changed the representation of rotations for 3D matrix.
2013-06-29 15:32:56 +00:00
Sébastien Crozet
429bcbf9c3
Fix Column implementation generating an ICE.
2013-06-29 15:19:21 +00:00
Sébastien Crozet
d3bed841f8
Add Column implementations.
2013-06-29 15:04:38 +00:00
Sébastien Crozet
8e8a87b667
Fixes to work with the new compiler.
2013-06-29 12:06:39 +00:00
Sébastien Crozet
3bb470ac95
Add Column + Homogeneous + Indexable traits.
...
Column: to access a matrix column.
Homogeneous: to convert a matrix/vector from/to homogenous coordinates.
Indexable: to access a matrix/vector element using indices.
2013-06-29 11:40:31 +00:00
Sébastien Crozet
c58e1ed40d
Reorganized files.
2013-06-29 00:34:45 +00:00
Sébastien Crozet
c54eb562ec
Refactor code for matrices.
2013-06-28 22:55:09 +00:00
Sébastien Crozet
cd355dfb30
Refactor vec{1, 2, 3} implemenation + add some useful traits.
2013-06-28 21:03:40 +00:00
Sébastien Crozet
8abcdeeedc
#[inline(always)] -> #[inline]
2013-06-27 17:40:37 +00:00
Sébastien Crozet
6723693b49
Refined traits for rotation/translation/transformation.
2013-06-27 16:16:07 +00:00
Sébastien Crozet
ffbcf4882a
Removed a lot of Copy + made Rotation and Translation more flexible.
2013-06-26 20:56:30 +00:00
Sébastien Crozet
edc5bb616d
Removed some useless references.
2013-06-24 21:38:52 +00:00
Sébastien Crozet
870f4b804b
Fix some infinite recursion on nvec.
2013-06-23 20:16:15 +00:00
Sébastien Crozet
0a90e6e6d8
all -> iter().all
2013-06-23 16:19:13 +00:00
Sébastien Crozet
8dc9067121
Coding style fix.
2013-06-23 16:08:50 +00:00
Sébastien Crozet
cfd7bac305
Fix to make it work with the new compiler.
2013-06-19 12:26:59 +02:00
Sébastien Crozet
854dda73bf
Add implementation of Bounded.
2013-06-15 22:11:33 +00:00
Sébastien Crozet
caee7eb423
workarounds -> traits. All ICE are now compiler errors.
2013-06-15 20:16:44 +00:00
Sébastien Crozet
6e627f3378
Add Ord instances.
2013-06-15 18:06:13 +00:00
Sébastien Crozet
513d4d7b08
Add inlining pragmas.
2013-06-13 16:48:28 +00:00
Sébastien Crozet
4cc5b178c8
Add DeltaTransformVector tait and fix transformation.
2013-06-13 14:44:15 +00:00
Sébastien Crozet
fb20ffdf8b
Add automatic implementation of VectorSpace.
2013-06-11 11:03:16 +02:00
Sébastien Crozet
53486fe614
Changed flattening function names.
2013-06-10 09:46:42 +02:00
Sébastien Crozet
4c65f793e8
Add flatten trait.
2013-06-10 00:09:36 +00:00
Sébastien Crozet
c02edb9d09
Used a better type parametter name.
2013-06-09 23:36:47 +00:00
Sébastien Crozet
bd5f1eae88
Codding style fix.
2013-06-09 14:04:54 +00:00
Sébastien Crozet
ffc24de9e0
Removed useless iterator usage.
2013-06-09 12:12:18 +00:00
Sébastien Crozet
965601d4e0
Adapted to new vec iterator api.
2013-06-09 12:09:22 +00:00
Sébastien Crozet
ec87e81426
Relaxed type constraints for transform rotation.
2013-06-08 16:33:49 +00:00
Sébastien Crozet
8a1b81f839
Primitive construction is more idiomatique using new.
2013-06-08 10:09:17 +00:00
Sébastien Crozet
e9948f55d0
Add rotation wrt a point.
2013-06-06 22:57:07 +00:00
Sébastien Crozet
0b8058e88f
Adapted for the compiler 'incomming' branch.
2013-06-01 20:50:00 +02:00
Sébastien Crozet
4146385e09
Fix matrix inversion algorithm.
2013-05-31 18:35:48 +02:00
Sébastien Crozet
f264b75ce6
Add dynamically sized matrix.
2013-05-31 11:28:42 +02:00
Sébastien Crozet
335794208d
Add dynamically sized vector.
2013-05-31 11:01:07 +02:00
Sébastien Crozet
a77013e4c7
Use automatic ToStr deriving for everything.
2013-05-25 18:30:03 +00:00
Sébastien Crozet
898a87b46c
Add SubDot trait and basic implementations.
2013-05-25 13:51:51 +00:00
Sébastien Crozet
2b9dc1d2e3
Fix comment.
2013-05-21 23:20:09 +00:00
Sébastien Crozet
65b175b4a7
Refactored tests using macros.
2013-05-21 23:15:20 +00:00
Sébastien Crozet
3fa933d13f
Add comments and adapted to new rust syntax.
2013-05-21 22:46:33 +00:00
Sébastien Crozet
4312daa53c
Removed the triginometric trait workaround.
2013-05-20 10:02:02 +00:00
Sébastien Crozet
b2d17300d9
Add delta-transformation implementations.
2013-05-19 19:45:30 +00:00
Sébastien Crozet
f3ed302874
Add delta-transformation.
2013-05-19 19:45:04 +00:00
Sébastien Crozet
ec160e5219
Fix rotation for transform adaptor.
2013-05-19 15:01:38 +00:00
Sébastien Crozet
52a769a431
Add a test for the 2d rotation.
2013-05-19 11:53:19 +00:00
Sébastien Crozet
dc0757b2e5
Add rotation and translation traits.
2013-05-19 11:44:27 +00:00
Sébastien Crozet
a0ada142a6
Removed useless use on the .rc.
2013-05-18 21:56:03 +00:00
Sébastien Crozet
ceed733e25
Functions to build objects dont shadow constructors any more.
2013-05-18 20:03:45 +00:00
Sébastien Crozet
01d37a1b56
Refined ScalaOp trait.
2013-05-18 18:06:36 +00:00
Sébastien Crozet
931f2e2b80
Removed useless loops on basis test.
2013-05-18 17:07:38 +00:00
Sébastien Crozet
890cdb73f2
Add tests and basis generation.
2013-05-18 17:04:03 +00:00
Sébastien Crozet
39707b42dc
Add rand for nvec.
2013-05-18 15:03:54 +00:00
Sébastien Crozet
622435f7ad
Add Rand for nmat.
2013-05-18 11:38:56 +00:00
Sébastien Crozet
98b484c311
Fix readme for workarounds.
2013-05-17 22:13:07 +00:00
Sébastien Crozet
bc93c44206
Add Rand implementation for everything.
2013-05-18 00:11:59 +00:00
Sébastien Crozet
53131731b3
Add fuzzy_eq implementation for everything.
2013-05-16 22:23:25 +00:00
Sébastien Crozet
7a58f2c66a
Add comments for traits.
2013-05-16 21:59:41 +00:00
Sébastien Crozet
699e4c5bb7
Adapted assertions with last rust zero-testing api.
2013-05-16 21:44:05 +00:00
Sébastien Crozet
e11cbb0963
Add one-dimensional primitives.
2013-05-16 21:43:14 +00:00
Sébastien Crozet
d636fdd346
Add matrix adaptors and addapted to the now rust features.
2013-05-16 21:30:39 +00:00
Sébastien Crozet
c7059af99d
Fix 2d matrix multiplication and 3d matrix inversion.
2013-05-15 11:51:53 +02:00
Sébastien Crozet
cfe636c11b
Replaced an uggly for by a bit less uggly while for the matrix inversion.
2013-05-15 01:10:18 +00:00
Sébastien Crozet
30d82f2408
Add n-dimensional vector and matrix.
2013-05-15 00:18:13 +00:00
Sébastien Crozet
4582492fda
Addesome traits and configuration file.
2013-05-14 21:08:29 +00:00
Sébastien Crozet
8b18310c3c
Add basic operations.
2013-05-14 11:35:01 +00:00