Commit graph

563 commits

Author SHA1 Message Date
Brendan Zabarauskas
a89a5d70e8 Documentation work 2013-09-03 16:37:06 +10:00
Brendan Zabarauskas
8c173c8e51 Impl Neg operator trait for vectors and matricies 2013-09-03 15:43:27 +10:00
Brendan Zabarauskas
6e548843c1 Add projection module 2013-09-03 15:23:56 +10:00
Brendan Zabarauskas
68bd70f78f Remove algebraic traits to simplify library
Pragmatically, according to advice from zeuxcg, I have decided to remove the algebraic traits. This has simplified the library a great deal by reducing indirection and removing redundant code.cx
2013-09-03 13:54:03 +10:00
Brendan Zabarauskas
c404092879 Use iterators instead of Array::{map_mut, bimap_mut, fold} 2013-09-02 18:32:25 +10:00
Brendan Zabarauskas
00bd313b87 Use iterators in inner product impl 2013-09-02 14:01:16 +10:00
Brendan Zabarauskas
ac0732409e Add ident and zero to matrices 2013-09-02 11:49:05 +10:00
Brendan Zabarauskas
e8d1dc98ad Implement matrix inversion 2013-08-28 13:56:48 +10:00
Brendan Zabarauskas
2976de3ff4 'Array' is a better mathematical name for Indexable 2013-08-28 12:03:43 +10:00
Brendan Zabarauskas
ba8c6ac7d0 Make macro syntax clearer 2013-08-28 11:05:44 +10:00
Brendan Zabarauskas
a49578fe83 Use macros for Point impls 2013-08-28 10:19:47 +10:00
Brendan Zabarauskas
6ec0d47ecf Use default method impl for swap_r 2013-08-27 21:24:13 +10:00
Brendan Zabarauskas
75988e45d2 Update directory structure to rustpkg conventions 2013-08-27 21:13:29 +10:00
Brendan Zabarauskas
026a5e89b5 Condense vector impls further using macros 2013-08-27 16:52:33 +10:00
Brendan Zabarauskas
9064b9d5c0 Add some matrix impls, add operator macros 2013-08-27 16:11:05 +10:00
Brendan Zabarauskas
b67b31b633 Add matrix traits, do lots of reorganisation/re-formatting 2013-08-27 08:59:18 +10:00
Brendan Zabarauskas
caadaa669a Fix copyright notices 2013-08-26 15:51:19 +10:00
Brendan Zabarauskas
3673c4db6d Overhaul library, rename to cgmath
Moved the old source code temporarily to src-old. This will be removed once the functionality has been transferred over into the new system.

The new design is based on algebraic principles. Thanks goes to sebcrozet and his nalgebra library for providing the inspiration for the algebraic traits: https://github.com/sebcrozet/nalgebra
2013-08-26 15:08:25 +10:00
Brendan Zabarauskas
c429ed839d Remove noise and color modules
These have now been moved to separate repositories:

  - https://github.com/bjz/noise-rs
  - https://github.com/bjz/color-rs
2013-07-30 14:02:26 +10:00
Brendan Zabarauskas
994b135bcd Rename map_as_vecN to with_vecN
This brings the method names into line with standard Rust nomenclature, for example `extra::rc::RcMut::{with_borrow, with_mut_borrow}`.
2013-07-25 15:40:10 +10:00
Brendan Zabarauskas
5fecb8fc81 Generalise noise methods to take generic Dimensioned types 2013-07-25 12:57:14 +10:00
Brendan Zabarauskas
df3ce2935c Add general Dimensioned and SwapComponents impls 2013-07-25 12:55:57 +10:00
Brendan Zabarauskas
679db701c9 Impl ApproxEq for rotation matricies using macros 2013-07-25 12:38:43 +10:00
Brendan Zabarauskas
f68c488163 Implement Ken Perlin's 'Improved Noise' algorithm and add example 2013-07-23 15:11:05 +10:00
Brendan Zabarauskas
c206d7dc3c Rename dimensional acessors
index->i
col->c
row->r
elem->cr
2013-07-22 14:41:31 +10:00
Brendan Zabarauskas
1538e6e528 Merge quat impls 2013-07-22 14:06:35 +10:00
Brendan Zabarauskas
a753602d34 Remove rotate methods, standardise some method names, add displacement method
We don't need the rotation methods now because of the types in transform::rotation
2013-07-21 15:11:25 +10:00
Brendan Zabarauskas
65aea95e7d Add scalar and component-wise clamp methods 2013-07-21 15:09:20 +10:00
Brendan Zabarauskas
31be8b79df Add map_as_vec{2,3,4} methods and document AsVec method impls
These are useful for when for reusing methods available on the Vec{2,3,4} types.
2013-07-21 13:20:28 +10:00
Brendan Zabarauskas
a5c00bfe97 Use _s suffix instead of _t for methods that take scalar values
This is what rust-geom uses, and it seems to make more sense. I originally used _t because it referred to the base generic type, but I think _s makes more sense.
2013-07-19 11:10:28 +10:00
Brendan Zabarauskas
58c1fe7e1c Implement some rotation methods and fix method signatures 2013-07-16 23:36:17 +10:00
Brendan Zabarauskas
bc2c26928f Add Rotation2 trait and do some documentation work 2013-07-16 10:27:31 +10:00
Brendan Zabarauskas
03bfe9b7a7 Move rotation module into transform module
This decouples these types from the more general math types. It also makes more sense, because rotations are indeed a type of transformation.
2013-07-16 09:23:57 +10:00
Brendan Zabarauskas
8d2d0d11bd Remove Matrix trait impls for RotationMat
These operations could potentially mess up the orthoganality of the rotation matrix. We could have made these fail if an the resulting matrices were not orthogonal, but it is preferable to enforce this at compile time rather than run time. More operations should be added in the future with this restriction in mind.
2013-07-16 09:20:30 +10:00
Brendan Zabarauskas
3daea27696 Add Rotation trait, RotationMat type, and implement Mat4 conversions 2013-07-16 07:57:36 +10:00
Brendan Zabarauskas
aa2f9224ce Re-organise matrix constants 2013-07-16 07:14:10 +10:00
Brendan Zabarauskas
e9cc75f06d Add rotation module 2013-07-15 12:03:21 +10:00
Brendan Zabarauskas
2ecc99b6a7 Documentation work 2013-07-15 12:03:03 +10:00
Brendan Zabarauskas
d700a7b35f Implement min and max methods for vectors 2013-07-15 02:02:38 +10:00
Brendan Zabarauskas
4008cf8121 Implement component-wise methods 2013-07-14 16:18:25 +10:00
Brendan Zabarauskas
19376dce32 Divide vec unit tests into separate functions 2013-07-14 15:32:43 +10:00
Brendan Zabarauskas
e321b1046b Documentation work 2013-07-14 14:43:29 +10:00
Brendan Zabarauskas
1810444a0a Rename Dimensioned and Swap traits 2013-07-14 13:22:45 +10:00
Brendan Zabarauskas
d5514fc982 Move contents of geom and core modules into new math module
Having these two modules separate made more sense when the library was divided into lmath and cgmath. Now that the two have been combined, it makes more sense to bundle these types in one module (I think).
2013-07-14 11:47:10 +10:00
Brendan Zabarauskas
3ce6578d56 Rename RealVec to FloatVec and use Float trait constraints 2013-07-14 07:53:37 +10:00
Brendan Zabarauskas
04c24a01fa Traitify Mat methods and remove macros 2013-07-14 07:49:23 +10:00
Brendan Zabarauskas
6061395fd7 Add Vec trait that inherits from Dimensional and Swap 2013-07-14 07:48:54 +10:00
Brendan Zabarauskas
d19e874b76 Remove unneccesary derefs 2013-07-14 00:55:46 +10:00
Brendan Zabarauskas
6a9d690c79 Arrange vector methods into traits 2013-07-13 23:37:38 +10:00
Brendan Zabarauskas
0e483bb579 Add some doc comments to vec module 2013-07-13 23:06:17 +10:00