Commit graph

113 commits

Author SHA1 Message Date
aloucks
8e0d5ece92
Fix deprecation warnings (#522) 2020-12-05 18:41:30 -05:00
Aaron Loucks
c0a66d2a34 Rename Matrix3::look_at_[rh|lh] to look_to_[rh|lh]
This makes the Matrix3/4 and Decomposed `look_at_*` functions consistent
with looking at a center/focus point and `look_to_*` functions consistent
with looking in a direction.
2020-12-04 19:41:27 -05:00
Aaron Loucks
a628d134f1 Add matrix3 look_at_[lh|rh] tests 2020-12-04 19:41:27 -05:00
Aaron Loucks
24a9191189 Add more matrix4 and transform tests 2020-12-04 19:41:27 -05:00
Aaron Loucks
213fc580a9 Add Transform::{look_at_rh, look_at_lh} and deprecate look_at
Corresponding functions have been added to Matrix4 and Decomposed
and are now consistent.

Matrix3, Matrix2, and the Rotation trait are only partially updated.
2020-12-04 19:41:27 -05:00
josh65536
84da664455
Now there is only one one (#513)
* Now there is only one one

* Rotation no longer has a parameter

* Moved some type parameters to associated types

* Relaxed some bounds and simplified a bound

* Removed unnecessary bound in

* Deduplicated multiplication code
2020-08-12 15:05:38 -04:00
Andrea Catania
ff1cda766d Code formatted with 2019-11-05 07:16:38 +01:00
Andrea Catania
04b21718f3 Added to the Mat3 the possibility to be constructed from a translation vector. Added tests. 2019-11-05 07:15:33 +01:00
bors[bot]
f69e781b8f
Merge #491
491: Fix Matrix2::look_at, add look_at_stable r=kvark a=blargg

## Changes

1. Fixes `Matrix2::look_at`
2. Adds tests for `look_at`
3. Adds a new function, `look_at_stable`

## Notes
I added a new function for 2d look at rotation. `look_at` is a bit weird in practice for 2d. For example, if you are making a basis matrix to orient a 2d character to look at a point, `look_at` will flip the character as they rotate past `up` or `-up` vectors. This is the best match for what look_at is supposed to do, I think.

`look_at_stable` will not flip based on orientation, you just pass in which way to flip. This is a bit easier to use to rotate 2d characters.

`look_at_stable` could have a better name. I think we can also consider removing the flip param, and just let the user flip the matrix with a transform later.

Co-authored-by: blargg <tomjankauski@gmail.com>
2019-09-03 22:13:25 +00:00
blargg
dd9f08ccee Fix Matrix2::look_at, add look_at_stable
Fix bug in look_at

Use the up vector to determine turn direction

Add look_at_stable

Matrix2::look_at calls look_at_stable
2019-09-03 17:02:11 -05:00
Norbert Nemec
baa50d8b86 fix warning 2019-09-01 20:59:00 +02:00
Shane Pearman
2387544e08 bump rand -> 0.7, fix unused macro warnings in tests 2019-08-11 16:59:47 -07:00
bors[bot]
9402a01a5b Merge #476
476: Add short constructors for points, to match the ones for vectors r=kvark a=nstoddard

In my code I find that I need to create points almost as often as vectors, so having short constructors is helpful.

Co-authored-by: Nathan Stoddard <nstoddard@users.noreply.github.com>
2019-02-25 16:34:53 +00:00
Ben Boeckel
1b57dc93a5 tests: add tests for Angle::normalize 2019-01-16 16:02:37 -05:00
Ben Boeckel
2d2c501074 Angle: add the normalize_signed method
This method is like `normalize` except that it normalizes to have an
absolute value of no more than `turn_div_2`.
2019-01-16 16:01:46 -05:00
Nathan Stoddard
2cf020351e Add short constructors for points, to match the ones for vectors 2019-01-14 15:53:28 -08:00
Brendan Zabarauskas
574dd3b972 Run rustfmt on most files 2018-01-03 13:16:40 +11:00
Brendan Zabarauskas
ccc81b4760 Merge pull request #432 from elrnv/swizzle
Swizzle Operators
2017-10-02 09:13:07 +11:00
Egor Larionov
ae7a85305c Guard the swizzle test by the "swizzle" feature flag.
Also rename the swizzle tests with a "swizzle" postfix to easier see these in
the test log.
2017-10-01 13:36:01 -07:00
Egor Larionov
b700a8db59 Added sanity checks for the new swizzle operators 2017-09-30 15:18:31 -07:00
Simon Rönnberg
8343e40b48 Adding inverse transformation of a vector. 2017-09-28 22:32:23 +02:00
Brendan Zabarauskas
3543ac0274 Merge pull request #427 from Osspial/cast_option
Modify cast functions to return Option
2017-08-22 19:32:57 +10:00
Brendan Zabarauskas
bba6285f4d Merge pull request #420 from DataAnalysisCosby/master
Added project_on to InnerSpace
2017-08-22 19:31:07 +10:00
Matthew Plant
bc9c5b7f79 Added project_on to InnerSpace 2017-08-21 13:47:15 -07:00
Osspial
a6abd5bf02 Modify cast() functions to return Option 2017-08-16 16:21:51 -04:00
Owen Sanchez
51b3d2d477 Add cast method to Quaternion 2017-07-13 12:24:30 -07:00
Dzmitry Malyshau
7a21125c55 Refined serde dependencies 2017-06-06 16:48:55 -04:00
Dzmitry Malyshau
087336d0c0 Refinded simd feature 2017-06-06 16:44:13 -04:00
Brendan Zabarauskas
b6199ca702 Remove PartialOrd
Closes #396

This removes `PartialOrd` and makes `BaseNum` and `BaseFloat` simple trait aliases. This should allow more types to be used as parameters in the cgmath data types at the expense of removing `Array::min` and `Array::max`.
2017-05-06 17:12:52 +10:00
Brendan Zabarauskas
ff2d15e0ff Implement Sum for Angle 2017-04-26 21:56:02 +10:00
Brendan Zabarauskas
77260934a1 Clean up Sum and Product impls
This is for consistency with other impls
2017-04-26 21:56:02 +10:00
Ben Boeckel
240559b941 iter traits: impl iter::{Sum, Product}
This adds `Sum` trait for the `MatrixN`, `VectorN`, `Quaternion`
structures and the `Product` trait for `MatrixN`, `BasisN` and
`Quaternion`.

It also add constraints on the `Rotation` and `SquareMatrix` to require
the `Product` trait and `VectorSpace` to require `Sum`.
2017-04-25 11:01:18 -04:00
andystanton
cd9e873739 Fix between_vectors for opposite vectors 2017-04-14 00:23:02 +01:00
Luxko
09c8727c7c Add newline at end of file 2017-03-12 15:59:06 +08:00
Luxko
64924b954d [WIP]Add basic SIMD support
- Add an opt-in SIMD support for the module. The feature requires crate
`simd` and specialization, thus can only be enabled under nightly. Under
the given benchmark certain operations were able to be up to 60% faster.
Currently the supported types as well as operations are highly limited.
- Clean up some deadly tests. Also add new tests for SIMD.
2017-02-25 07:26:11 +08:00
Marckvdv
c9a9cad256 Added tests for the added cast functions of matrix and point. 2016-10-03 13:20:57 +02:00
Andrew Dudney
0f8a96d9b8 Changed over to the approx crate. Currently breaks rotation's doc tests. 2016-08-22 09:21:22 -06:00
Andrew Dudney
3d3b9c96ca Moved angle types to tuple structs 2016-07-31 20:40:31 -07:00
Andrew Dudney
1b77875cc3 Fixed tests, now most use deg, and none use deg(x).into() 2016-07-26 17:53:16 -07: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
Brendan Zabarauskas
7147180936 Merge pull request #359 from jminer/rotation-fixes
Rotation fixes
2016-05-18 00:19:43 +10:00
Romain Vaillant
bb5eed1af6 Add serde serialization test 2016-05-16 15:25:28 +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
65e744c8cd Remove self inversion methods 2016-05-10 21:55:11 +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
Brendan Zabarauskas
0259acb87f Switch to an Euler angle type for defining rotations 2016-04-23 16:56:07 +10:00