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