Commit graph

1096 commits

Author SHA1 Message Date
Andrew Dudney
3d3b9c96ca Moved angle types to tuple structs 2016-07-31 20:40:31 -07:00
Andrew Dudney
17d98af64f Made uses of Rad<S> more generic using Into<Rad<S>> 2016-07-26 17:30:05 -07:00
Brendan Zabarauskas
3e6974baa8 Merge pull request #364 from kvark/arc
Quaternion closest arc
2016-07-06 13:34:28 +10:00
Dzmitry Malyshau
55c212bde1 Styling fixes to the quaternion arc code 2016-07-05 21:30:13 -04:00
Dzmitry Malyshau
f555074a44 Quaternion closest arc 2016-07-03 00:23:46 -04:00
Dzmitry Malyshau
ec2ad0061b Fixed Decomposed::concat 2016-07-03 00:21:02 -04:00
Brendan Zabarauskas
7147180936 Merge pull request #359 from jminer/rotation-fixes
Rotation fixes
2016-05-18 00:19:43 +10:00
Romain Vaillant
118ec262fd Adds ApproxEq for Decomposed 2016-05-16 15:22:37 +02:00
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
Jordan Miner
c11371794f Fix Euler angle to matrix conversion
The equations were written with rows horizontally instead of vertically
and some signs were wrong.
2016-05-12 01:28:16 -05:00
Jordan Miner
b56119a42f Test converting axis angles to quaternions 2016-05-12 01:28:15 -05:00
Jordan Miner
467e87f3d3 Fix Euler angles to quaternion conversion and vise versa
Add tests that rotate a vector in all three axes, and tests to check
the axis rotation sequence.
2016-05-12 01:28:15 -05:00
Brendan Zabarauskas
a1d8eaed10 Make Rotation trait depend on One 2016-05-12 08:36:34 +10:00
Brendan Zabarauskas
8518ce78e8 Remove transforma_as_point method 2016-05-12 08:31:56 +10:00
Brendan Zabarauskas
06a58e006b Remove AffineMatrix3 2016-05-11 23:09:34 +10:00
Mark Hintz
ec3385ceab Remove unused imports
Fixes compile warnings
2016-05-11 13:21:56 +02:00
Brendan Zabarauskas
266f4c1d0d Fix export warning 2016-05-10 21:55:20 +10:00
Brendan Zabarauskas
65e744c8cd Remove self inversion methods 2016-05-10 21:55:11 +10:00
Brendan Zabarauskas
a4763647ec Merge pull request #339 from bjz/num-traits
Re-export num-traits crate
2016-05-09 22:31:51 +10:00
Mark Hintz
074cb2c36f Change the name of methods on the Transform trait to avoid clashes
Transform::invert becomes Transform::inverse_transform, and Transform::invert_self becomes Transform::to_inverse. Tests passing for me now
2016-05-01 14:59:38 +02:00
Mark Hintz
0a78173e2b impl Transform (2 dimensional) for Matrix3 2016-04-28 16:37:36 +02:00
Mark Hintz
a3539483b6 impl Transform (3 dimensional) for Matrix3 2016-04-28 16:37:36 +02:00
Mark Hintz
ab1d3d8622 imple Transform (and Transform3) for Matrix4
The change in transform.rs is to disambiguate which invert function is used
2016-04-28 16:37:36 +02:00
Mark Hintz
c32135a5d9 Move the From impls together 2016-04-28 16:37:36 +02:00
Mark Hintz
808a17fc22 implement from_angle{x, y, z} and from_axis_angle for Matrix4
All are duplicates of the same functions for Matrix3, with extra parameters added in to make up the full 4x4
2016-04-28 01:03:33 +02:00
Mark Hintz
c8b1d4b498 Minor documentation fix - cotangent and secant were swapped 2016-04-27 17:10: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
e1de5e9330 Merge pull request #343 from bjz/vector1
Add Vector1 and Point1 structs
2016-04-25 09:19:31 +10:00
Brendan Zabarauskas
4c2f301561 Add Vector1 and Point1 structs 2016-04-25 08:59:33 +10:00
Brendan Zabarauskas
bb4ebbdd76 Add midpoint and centroid functions 2016-04-24 13:54:29 +10:00
Brendan Zabarauskas
8795b179d7 Add MetricSpace trait for calculating distances 2016-04-23 19:58:34 +10:00
Brendan Zabarauskas
dacb511b78 Add Euler::new function 2016-04-23 17:08:40 +10:00
Brendan Zabarauskas
437e2ec9f9 Document pitch/yaw/roll 2016-04-23 16:56:07 +10:00
Brendan Zabarauskas
0259acb87f Switch to an Euler angle type for defining rotations 2016-04-23 16:56:07 +10:00
Brendan Zabarauskas
5a8caa47f0 Re-export num-traits crate 2016-04-23 16:17:31 +10:00
Brendan Zabarauskas
86c13ca14f Switch to using num_traits crate from num
Fixes #336
2016-04-23 14:03:35 +10:00
Arvamer
b21ad34b8b Fix assignment operators for angles 2016-04-20 12:17:42 +02:00
Brendan Zabarauskas
8dd2874b59 Move traits into common module 2016-04-19 20:51:40 +10:00
Brendan Zabarauskas
e9671e6070 Move Quaternion::{slerp, to_euler} out of separate impl block 2016-04-16 14:32:28 +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
a3e6cd26b5 Document fields 2016-04-09 13:47:17 +10:00
Brendan Zabarauskas
886e2fb240 Unify trait hierarchies for vectors, quaternions and matrices 2016-04-09 13:47:04 +10:00
Brendan Zabarauskas
b4063ea72a Rename Point to EuclideanSpace 2016-04-08 19:56:30 +10:00
Brendan Zabarauskas
b5f8e7646b Rename Point::Vector to Point::Diff 2016-04-08 15:35:11 +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
1905354d26 Fix spelling 2016-04-03 13:56:26 +10:00
Brendan Zabarauskas
1d33c231e3 Improve the documentation for some angle methods 2016-04-03 13:49:58 +10:00
Brendan Zabarauskas
aa6fd71ab8 Move Angle::new to be implemented directly on angle types
This is more in keeping with most Rust APIs, and the other types in this library
2016-04-03 13:36:31 +10:00
Brendan Zabarauskas
40232ec063 Remove Angle::equiv
Thus relied on the == operator, which doesn't make sense for floats. It seems better to leave this up to clients to decide if they want to normalize.
2016-04-03 13:32:55 +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
5f7e47371e Merge remote-tracking branch 'origin/master' into element-wise 2016-03-27 16:43:20 +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
813b4aa5c2 Add constrained conversion functions 2016-03-26 16:41:31 +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
652ec87dd8 Add prelude module 2016-03-25 15:27:57 +11:00
Brendan Zabarauskas
3d55187a7d Mark some types as #[repr(C, packed)]
Closes #296
2016-03-25 12:42:17 +11:00
Brendan Zabarauskas
667888a0c5 Improve documentation for the Point trait 2016-03-24 22:56:21 +11:00
Cameron Hart
73c34e9f05 Small doc fix for EuclideanVector trait 2016-02-17 22:43:41 +11:00
Cameron Hart
24a21d5fc6 Added scalar arithmetic operators for Matrix types 2016-01-02 16:11:16 +11:00
Cameron Hart
15b14c1e87 Rename vector identifier to point 2016-01-02 16:10:35 +11:00
Cameron Hart
9096e409d1 Added scalar arithmetic operators for Quaternions 2016-01-02 11:13:27 +11:00
Cameron Hart
3febc46d5a Added scalar arithmetic operators for Point types 2016-01-02 10:14:47 +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
0875ea4444 Merge pull request #284 from DerekBurch/fix-matrix3-to-quaternion
Fix conversion from Matrix3 to Quaternion
2015-12-23 13:12:03 +11:00
derekburch
744fb78662 Fix conversion from Matrix3 to Quaternion 2015-12-22 17:53:06 -08:00
Brendan Zabarauskas
f60e85b61a Merge pull request #282 from bjz/assignment-ops
Implement most assignment operators
2015-12-23 07:35:16 +11:00
Brendan Zabarauskas
e9dc8404ef Make Quaternion::magnitude pass self by-value 2015-12-22 23:14:16 +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
23c632acca Use SquareMatrix::ColumnRow instead of Matrix::Column 2015-12-21 22:10:28 +11:00
Brendan Zabarauskas
1d886f6197 Add all permutations of matrix ops, and remove operator methods
Completes #247
2015-12-21 21:02:40 +11:00
Brendan Zabarauskas
519af35d71 Remove Angle % Angle::Unitless 2015-12-14 04:42:02 +11:00
Brendan Zabarauskas
db35af6ae9 Angle % Angle should return an Angle 2015-12-14 04:40:09 +11:00
Brendan Zabarauskas
1cc11d2c8b Simplify method implementations using From::from 2015-12-13 23:51:46 +11:00
Brendan Zabarauskas
612be7fecc Move free trigonometric functions onto Angle trait 2015-12-13 23:51:00 +11:00
Brendan Zabarauskas
5b9eeb15a0 Remove Debug constraint form Angle 2015-12-13 18:38:48 +11:00
Brendan Zabarauskas
a49462426b Remove ScalarConv trait and Angle::from 2015-12-13 18:35:03 +11:00
Brendan Zabarauskas
a1f73ddf0d Remove *_self methods from Angle 2015-12-13 18:13:11 +11:00
Brendan Zabarauskas
e76921881f Remove operator methods on angles 2015-12-13 16:18:39 +11:00
Brendan Zabarauskas
369c1202c3 Fully impl operator permutations, and remove Zero and One impls 2015-12-13 15:54:10 +11:00
Brendan Zabarauskas
8f60f0a666 Angles should not implement Hash
Angles are implemented over floating point values - they will never be hashable.
2015-12-13 15:52:33 +11:00
Brendan Zabarauskas
981836626b Make Angle's type parameter an associated type 2015-12-13 13:09:44 +11:00
Brendan Zabarauskas
de4389759b Merge pull request #273 from bjz/operator-method-sweep
Operator method sweep
2015-12-13 13:05:40 +11:00
Brendan Zabarauskas
7df65333cb Simplify projection type parameters 2015-12-13 12:35:09 +11:00
Brendan Zabarauskas
a02b94fb70 Remove 'static constraints
These seem to be relics from an older Rust...
2015-12-13 12:24:30 +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
d468d76e0a Remove operator methods from Point trait 2015-12-13 12:00:34 +11:00
Brendan Zabarauskas
75b6548179 Remove ToComponents and CompositeTransform traits
Fixes #274

# Conflicts:
#	src/transform.rs
2015-12-13 10:20:53 +11:00
Brendan Zabarauskas
1bd67271f2 Remove vestigial crate attributes
These were added a looong time ago. They are not really useful these days.
2015-12-12 22:18:35 +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
0b39e8f300 Add missing by-ref and by-val permutations of quaternion operators 2015-12-12 18:39:31 +11:00
Brendan Zabarauskas
74a771af79 Rename matrix scale functions for better ergonomics
Uniform scale matrices are probably the more common case. It probably makes sense that this has the shorter constructor.
2015-12-07 23:46:24 +11:00
Brendan Zabarauskas
f75c8aa7f1 Merge pull request #261 from bjz/add-matrix-scale-functions
Add matrix scale functions
2015-12-06 21:08:27 +11:00
Brendan Zabarauskas
1a291c720c Simplify impl bounds
All the useful functions are implemented for BaseFloat, so it seems reasonable to not require such fine-grained impls. This should also make the generated documentation easier to read.
2015-12-06 19:53:23 +11:00
Brendan Zabarauskas
4f0aabb164 Clarify comments about the kind of matrices that are returned by the constructors 2015-12-06 19:53:23 +11:00
Brendan Zabarauskas
2d6b4e785c Add Matrix4::{from_scale, from_uniform_scale} functions 2015-12-06 19:53:23 +11:00
Brendan Zabarauskas
2dc0a4a43f Rename SquareMatrix::one to identity
Fixes #260
2015-12-06 19:36:38 +11:00
Brendan Zabarauskas
5b2b10d65f Rename Array::swap_elems to Array::swap_elements 2015-11-14 22:05:44 +11:00
Brendan Zabarauskas
dcb0afd57b Remove Array::replace_elem
Doesn't seem very useful...
2015-11-14 22:04:04 +11:00
Brendan Zabarauskas
70dbef1eb1 Rename Array1 to Array 2015-11-14 22:02:17 +11:00
Brendan Zabarauskas
ab24f3f8fe Make Matrix trait work for matrices of arbritrary dimensions 2015-11-14 22:02:17 +11:00
Brendan Zabarauskas
ac2bba01cf Make pointer access function names match those in std 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
490997c93f Add an alias to Vector::Scalar in Point 2015-11-03 15:50:07 +11:00
Brendan Zabarauskas
89e656b1f6 Add comments noting rust bugs 2015-11-03 15:40:52 +11:00
Brendan Zabarauskas
cda76e3bbb Remove type parameters from Matrix trait 2015-11-03 15:32:17 +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
Brendan Zabarauskas
78f86a33cd Make vectors an associated type on Point 2015-11-03 11:32:15 +11:00
Brendan Zabarauskas
943a92e691 Remove collision types and traits from the library
Closes #244
2015-11-01 13:42:58 +11:00
Brendan Zabarauskas
9e53629459 Clean up index operator usages 2015-10-04 12:58:53 +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
d9675f7c7e Formatting 2015-09-30 20:47:38 +10:00
Brendan Zabarauskas
e845fd9b8c Reduce scope of dot_matrix4! macro 2015-09-30 20:06:17 +10:00
Brendan Zabarauskas
902215b532 Implement binary operators for matrices
We can't yet remove the operator methods, due to rust-lang/rust#20671
2015-09-30 19:01:30 +10:00
Brendan Zabarauskas
8b6fb94685 Implement binary operators for points
We can't yet remove the operator methods, due to rust-lang/rust#20671
2015-09-30 18:23:01 +10:00
Brendan Zabarauskas
be5c6fb55b Compress point formatting 2015-09-30 18:09:40 +10:00
Brendan Zabarauskas
b7b1f6c9cb Implement binary operators for quaternions 2015-09-30 18:05:20 +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
7a3f4f9e2d Fix formatting 2015-09-30 09:33:44 +10:00
Brendan Zabarauskas
5023b6c01e Consistently use associated functions throughout codebase 2015-09-30 09:32:25 +10:00
Brendan Zabarauskas
494f2b65ad Fix Quaternion::mul_self_q
Fixes #224

I haven't really thought about whether there is a faster way to do this, but at least it is fixed.
2015-09-29 18:36:41 +10:00
Colin Sherratt
5dd8bc7ef3 Merge pull request #233 from bjz/remove-map-method
Remove {Array1, Array2}::map method
2015-09-29 02:22:51 -04: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
3ea0b3c5b2 Move some methods onto the Matrix trait
Now we can call them like `Matrix4::identity()`! Yay!
2015-09-29 09:34:41 +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