Commit graph

182 commits

Author SHA1 Message Date
Romain Vaillant
cdbb9294e0 Adds serde support 2016-05-16 14:16:59 +02:00
Romain Vaillant
f3673a1d4c makes rustc-serialize optional 2016-05-15 14:48:57 +02:00
Brendan Zabarauskas
6b48236cb6 Inherit Zero and One for core structural traits 2016-04-25 15:26:56 +10:00
Brendan Zabarauskas
54adacc2a8 Re-export Zero and One via structure module 2016-04-25 11:43:28 +10:00
Brendan Zabarauskas
4c2f301561 Add Vector1 and Point1 structs 2016-04-25 08:59:33 +10:00
Brendan Zabarauskas
8795b179d7 Add MetricSpace trait for calculating distances 2016-04-23 19:58:34 +10:00
Brendan Zabarauskas
86c13ca14f Switch to using num_traits crate from num
Fixes #336
2016-04-23 14:03:35 +10:00
Brendan Zabarauskas
8dd2874b59 Move traits into common module 2016-04-19 20:51:40 +10:00
Brendan Zabarauskas
07301eb4d0 Stabilise assignment operators
Assignment operators were stabilised in Rust 1.8.
2016-04-16 10:09:47 +10:00
Brendan Zabarauskas
23fce928c0 Module documentation updates 2016-04-09 14:22:30 +10:00
Brendan Zabarauskas
886e2fb240 Unify trait hierarchies for vectors, quaternions and matrices 2016-04-09 13:47:04 +10:00
Brendan Zabarauskas
2b36ea2ef9 Rename Vector trait to VectorSpace and EuclideanVector to InnerSpace 2016-04-08 08:46:35 +10:00
Brendan Zabarauskas
f82c8826a2 Add doc comments for vector axes 2016-04-05 08:52:27 +10:00
Brendan Zabarauskas
90dbd29f6d Make some documentation more succinct 2016-04-04 20:45:37 +10:00
Brendan Zabarauskas
f766973a74 Remove neg_self methods
These are a weird methods... they aren't associated with any traits. I think they were left-over from before we moved to operator impls.
2016-04-04 20:45:37 +10:00
Brendan Zabarauskas
019cac1f74 Add some links to wikipedia pages 2016-04-04 20:45:37 +10:00
Brendan Zabarauskas
40a3ad3185 Add a default implementation for EuclideanVector::angle 2016-04-04 20:45:37 +10:00
Brendan Zabarauskas
3b55ad5f70 Move Vector::from_value function to Array trait 2016-04-04 20:45:37 +10:00
Brendan Zabarauskas
e0a5164967 Improve documentation for vector traits 2016-04-04 20:45:37 +10:00
Brendan Zabarauskas
2cd6f402df Move the dot method onto EuclideanVector
The Vector and EuclideanVector traits roughly line up with the concept of vector spaces and inner spaces respectively. It makes more sense to group `dot` with the other methods that depend on it.
2016-04-04 20:45:37 +10:00
Brendan Zabarauskas
0de8942748 Merge pull request #311 from bjz/rename-vector-length
Rename Vector::length to Vector::magnitude
2016-03-28 13:47:50 +11:00
Brendan Zabarauskas
fb5228f14f Clean up some function calls 2016-03-27 16:25:03 +11:00
Brendan Zabarauskas
f7bc6dcc54 Rename Vector::length to Vector::magnitude 2016-03-27 16:17:11 +11:00
Brendan Zabarauskas
8d10f1dc6d Remove extraneous operator overloads on vectors, and add Elementwise trait 2016-03-26 13:28:49 +11:00
Brendan Zabarauskas
3d55187a7d Mark some types as #[repr(C, packed)]
Closes #296
2016-03-25 12:42:17 +11:00
Cameron Hart
73c34e9f05 Small doc fix for EuclideanVector trait 2016-02-17 22:43:41 +11:00
Cameron Hart
338c494735 Make macro usage more like existing style 2016-01-02 00:09:11 +11:00
Cameron Hart
7426d8d807 Support for scalar on the lhs of arithmetic operators 2016-01-01 18:05:32 +11:00
Brendan Zabarauskas
429d2659fe Improve fmt::Debug impls 2015-12-29 21:50:43 +11:00
Brendan Zabarauskas
59d5e6f53a Implement most assignment operators 2015-12-22 22:34:34 +11:00
Brendan Zabarauskas
8c05db962a Implement by-ref negations for matrices 2015-12-22 00:43:15 +11:00
Brendan Zabarauskas
612be7fecc Move free trigonometric functions onto Angle trait 2015-12-13 23:51:00 +11:00
Brendan Zabarauskas
43634f0b49 Remove more *_self methods from Vector trait 2015-12-13 12:01:00 +11:00
Brendan Zabarauskas
534ba55d3e Remove Vector::one
Fixes #270
2015-12-13 12:01:00 +11:00
Brendan Zabarauskas
25f5dfd5fc Remove operator methods from Vector trait 2015-12-13 12:01:00 +11:00
Brendan Zabarauskas
577eafa654 Standardise macro use for code generation
This moves lots of the common code generation patterns into a macros module. In doing so, the code can be greatly reduced in size.
2015-12-12 22:17:03 +11:00
Brendan Zabarauskas
70dbef1eb1 Rename Array1 to Array 2015-11-14 22:02:17 +11:00
Brendan Zabarauskas
25ca567060 Move element-wise operations into Array1 trait 2015-11-14 12:17:03 +11:00
Brendan Zabarauskas
178272da3d Make lots of methods take vectors and points by value 2015-11-09 20:18:02 +11:00
Brendan Zabarauskas
7af4ebb28d Add some by-value operator overloads
Working towards #247
2015-11-08 17:45:33 +11:00
Brendan Zabarauskas
89e656b1f6 Add comments noting rust bugs 2015-11-03 15:40:52 +11:00
Brendan Zabarauskas
669e43ab59 Make scalar type parametrs out of transform and rotation traits 2015-11-03 15:23:22 +11:00
Brendan Zabarauskas
25aea84e0d Make scalar an an associated type on Vector 2015-11-03 14:30:59 +11:00
Brendan Zabarauskas
a434f18ba4 Make array type parameters associated types 2015-11-03 14:15:11 +11:00
Brendan Zabarauskas
0584bcac64 Make epsilon an associated type on ApproxEq 2015-11-03 14:00:39 +11:00
Colin Sherratt
c4e8d8ae69 Merge pull request #239 from bjz/method-renames
Method renames
2015-10-02 22:41:03 -04:00
Brendan Zabarauskas
fc2943e27b Rename $Self_ in macros 2015-10-02 14:54:33 +10:00
Brendan Zabarauskas
b168c03174 Rename identity to one
Zero is the additive identity, so this disambiguates it
2015-10-01 18:56:31 +10:00
Brendan Zabarauskas
af38e8a8be Rename comp_{add, mul} to {sum, product} 2015-10-01 18:52:55 +10:00
Brendan Zabarauskas
e3e06297a0 Implement by-ref operators for vectors, and remove by-value implementations
We can't yet remove the operator methods, due to rust-lang/rust#20671

This also removes the implementations of `Zero` and `One` for vectors.
2015-09-30 17:37:52 +10:00
Brendan Zabarauskas
5023b6c01e Consistently use associated functions throughout codebase 2015-09-30 09:32:25 +10:00
Brendan Zabarauskas
4be95bcb7d Remove {Array1, Array2}::map method
This doesn't seem to be used anywhere - not sure how useful it is. It isn't really a proper `map` anyway, because it mutates `self`.
2015-09-29 09:47:57 +10:00
Brendan Zabarauskas
7f73c2cdd9 Add conversion tests for vectors, points, and quaternions 2015-09-27 17:20:02 +10:00
Brendan Zabarauskas
69caaf48b6 Add index tests 2015-09-27 13:01:14 +10:00
Brendan Zabarauskas
aff340dc1e Add range index operators 2015-09-21 07:56:03 +10:00
Brendan Zabarauskas
0ce28fbe10 Remove FixedArray trait in favour of std::convert
Fixes #225
2015-09-21 06:49:33 +10:00
Dzmitry Malyshau
16302ffa20 Fixed the num crate 2015-04-24 23:28:31 -04:00
Dzmitry Malyshau
498df01729 Fixed all the warnings, compile issues, and tests 2015-04-04 22:31:18 -04:00
Dzmitry Malyshau
b56ad542b3 Fixed NumCast and angles 2015-04-04 21:32:12 -04:00
Dzmitry Malyshau
8db429acae Using rust-lang/num 2015-04-04 21:19:11 -04:00
Dzmitry Malyshau
94d428d23e Fixed the Neg disaster 2015-04-04 20:15:00 -04:00
Dzmitry Malyshau
05c4147cec Fixed Index implementations 2015-03-25 21:58:33 -04:00
Jonathan Neuschäfer
4c527f8334 s/AUTHORS file/Cargo.toml file/ 2015-03-18 17:51:03 +01:00
Colin Sherratt
64fedca8e9 Manually add rand trait 2015-03-14 22:54:02 -04:00
Pierre Krieger
8895654f92 Remove dependencies to rand and rand_macros
Conflicts:
	src/cgmath.rs
2015-03-14 22:07:15 -04:00
Dzmitry Malyshau
bf257a3e49 Added ToComponents. Moved from_value into . 2015-03-01 01:05:22 -05:00
Ben Foppa
562dfeb7a6 Add #[must_use] on functions with in-place variants. 2015-02-22 16:33:16 -05:00
Bo Bakker
a7d6c82f42 Fix for rustc
It works, and passes all tests.
2015-02-15 15:39:21 +01:00
Colin Sherratt
778a3c13aa use the new rand_macros crate 2015-02-08 13:25:42 -05:00
Colin Sherratt
e712bdee7c fmt::Show to fmt::Debug 2015-02-08 13:19:32 -05:00
Hyeon Kim
23fbac94e7 Update rust
`Output` is not a member of trait `IndexMut` anymore.
2015-02-09 02:50:35 +09:00
Dzmitry Malyshau
6ecbf2dbfd Implemented short vector constructors 2015-02-06 23:03:00 -05:00
Colin Sherratt
e064ea0e59 int to isize 2015-01-09 16:28:33 -07:00
Colin Sherratt
c0ce271e39 Updated to latest rustc 2015-01-09 15:06:45 -07:00
Colin Sherratt
c7270a9077 Update to latest rustc 2015-01-07 15:34:42 -07:00
Colin Sherratt
d6bb64fd65 Update for associated types changes 2015-01-04 18:56:01 -07:00
Connorcpu
22c2fe4755 Updated to rust nightly 2015-01-03 13:29:26 -08:00
Colin Sherratt
4bb12d6859 Switch to rustc_serialize 2014-12-26 16:18:29 -05:00
Jakob Fries
968adcd2cb Update to match latest Neg trait. 2014-12-21 18:28:59 +01:00
Connorcpu
43cfdd94ec Fixed macros with missing semicolons 2014-12-19 09:48:59 -08:00
Colin Sherratt
b0187ddeaa Update to match the latest std::ops::* traits 2014-12-17 02:16:13 -05:00
Jameson Ernst
5726e6c7dc Add deriving Copy to all structs that would previously be inferred to be Copy
Remove use of deprecated Equiv trait
Remove unsed attributes
2014-12-12 17:06:52 -08:00
Eduard Bopp
4d2fb64482 Type-cast a vector component-wise
This allows one to e.g. cast a vector of f64s to an equivalent vector of f32s.
More generally this is allowed for arbitrary NumCast types.
2014-11-20 16:41:27 +01:00
Eduard Bopp
9f8580eeca Replace deprecated std::num traits
These traits are akin to the deprecated standard library traits (Zero, One,
Primitive) to keep everything running as before. However, for the long term a
better algebraic abstraction should be used/provided.
2014-11-20 16:28:02 +01:00
Sébastien Crozet
0bbefed4bc Improve the benchmark suite.
As a side effect, this adds `Rand` deriving to the benchmarked strucures.
2014-11-07 16:23:10 +01:00
Tomaka17
4fcfde13de fail! -> panic! 2014-10-30 10:11:33 +01:00
bachm
825f5f2975 deriving Encodable, Decodable for all structs 2014-08-23 14:34:33 +02:00
Brendan Zabarauskas
379dc499ec Publicly re-export everything from the root crate
Closes #100
2014-08-16 14:53:54 +10:00
Brendan Zabarauskas
3ff1eb583f Add fixed-length array conversions
Closes #111

`FixedArray::from_fixed` cannot yet be implemented due to  rust-lang/rust#16418
2014-08-11 21:10:38 +10:00
Corey Richardson
e9a1723ef4 Merge pull request #106 from atheriel/vecdocs
Add a tutorial of sorts for working with cgmath's vectors.
2014-08-03 04:29:49 -07:00
Brendan Zabarauskas
1e1f60379e Deprecate element and column accessors in favour of index operators
Also removes some unnecessary `clone` calls.
2014-07-30 04:06:31 +10:00
Aaron Jacobs
5c25683cfb Adds a tutorial of sorts for working with cgmath's vectors.
There are several runnable code examples that should compile when
using `make doctest`.

Signed-off-by: Aaron Jacobs <atheriel@gmail.com>
2014-07-28 23:05:15 -07:00
Aaron Jacobs
fddb3a7903 Implements the (mutable) index operator for vectors.
Again, this is possibly an oversight. The operators simply use the
mut_i() and i() methods which are demanded by the Array1<S> trait.

This means you may access the field `x` on a VectorN with vector[0]
syntax.

Signed-off-by: Aaron Jacobs <atheriel@gmail.com>
2014-07-28 22:37:49 -07:00
Aaron Jacobs
7e81b258a9 Implements division and remainder operators for vectors.
This might have been an oversight at one point. Although the `rem_v`
and `div_v` methods are available for vectors, the actual operators
were not.

Signed-off-by: Aaron Jacobs <atheriel@gmail.com>
2014-07-28 22:21:58 -07:00
Brendan Zabarauskas
61a6810324 Merge pull request #96 from atheriel/vecmap
Add a map() method for vectors.
2014-07-05 19:24:12 -07:00
HeroesGrave
047dbefd6f remove lifetime notations causing errors 2014-07-05 12:15:10 +12:00
Aaron Jacobs
b0f706a96e Adds map() to Array1, and provides implementations for Vectors,
Points, Matrices, and Quaternions.

Signed-off-by: Aaron Jacobs <atheriel@gmail.com>
2014-07-02 21:34:26 -07:00
Corey Richardson
c9bdf838a5 Update for Cargo 2014-06-23 23:49:29 -07:00
Brendan Zabarauskas
8199cbe742 Create Dimensional trait 2012-11-15 12:22:41 +10:00
Brendan Zabarauskas
90ee516370 Move numeric-specific modules to num module, clean up imports 2012-11-15 10:31:35 +10:00