Corey Richardson
bcc4f11150
Merge pull request #142 from aepsil0n/vector_cast
...
Type-cast a vector component-wise
2014-11-20 10:46:30 -05: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
Martti Rannanjärvi
3ecf2eb5dd
update to compile on nightly
2014-11-20 17:15:07 +02:00
Brendan Zabarauskas
1371f75165
Update for rustc 0.13.0-nightly
...
There are still some deprecation errors in the doc tests left
2014-11-16 01:59:43 +11: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
Darkspear7
7ae16b3423
Removed constraints on ortographic projection function to allow bigger values for left, bottom, near than right, top, far.
2014-11-03 15:50:27 +02:00
Tomaka17
4fcfde13de
fail! -> panic!
2014-10-30 10:11:33 +01:00
Eduard Bopp
666bb56670
Assertion macros for approximate equality
...
For sake of readability and consistency with the standard library macros
assert! and assert_eq!, the macros assert_approx_eq! and assert_approx_eq_eps!
have been implemented based on the ApproxEq trait.
Upon failure these macros yield readable error messages including the input
values and the tolerance (epsilon) used to determine their approximate
equality.
Resolves #131 .
2014-10-23 10:22:34 +02:00
Colin Sherratt
0f0b960211
Added to_euler which allows moving from to and from euler coordinates.
...
I did not have much luck getting the old from_eular logic work the way I
expected so I updated the implementation to match my sources.
I believe this changed the order of the axis, I am unsure of what they were
before.
2014-10-13 21:05:49 -04:00
Colin Sherratt
aae8747595
Fix ortho projection matrix
2014-10-04 20:12:09 -04:00
Tomaka17
1b5da61ccb
Update for rustc 0e784e168 2014-09-16 23:26:11 +0000
2014-09-18 16:19:26 +02:00
HeroesGrave
896735a2b0
updated to latest Rust
2014-08-30 12:00:34 +12:00
Jeanne-Kamikaze
6f0573c79a
Added 'from_point_normal'
2014-08-26 17:08:24 +02:00
bachm
825f5f2975
deriving Encodable, Decodable for all structs
2014-08-23 14:34:33 +02:00
Erik Hedvall
cd5cdeacbf
Removed duplicate Aabb3 re-export
2014-08-18 15:05:25 +02:00
Brendan Zabarauskas
379dc499ec
Publicly re-export everything from the root crate
...
Closes #100
2014-08-16 14:53:54 +10:00
Brandon Waskiewicz
4f17d73f23
Add Ray2<>Aabb2 intersection impl
2014-08-13 20:51:51 -04:00
Brandon Waskiewicz
814b845de7
Update line intersection
...
*Change line<>line intersection to be ray<>line.
*Update tests accordingly
*Clean up and simplify intersection logic
2014-08-13 20:51:44 -04: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
Brendan Zabarauskas
f93963919a
Transition codebase to the new method names
2014-08-11 18:55:14 +10:00
Brendan Zabarauskas
325ebad75e
Use more self-explanatory names for indexing methods
2014-08-11 17:02:25 +10:00
Brendan Zabarauskas
8999d88216
Remove deprecated functions from array traits
2014-08-11 16:54:39 +10:00
Brendan Zabarauskas
8e5500d581
Switch to cargo
2014-08-11 16:15:14 +10:00
Vyacheslav Zeronov
535b5aa01f
Added Matrix3::from_diagonal
...
Useful for creation of scale matrices.
2014-08-08 13:46:25 +06:00
Aaron Jacobs
bfc8efff80
Fixes Matrix2::from_angle invocation and adds a test for the feature.
...
Signed-off-by: Aaron Jacobs <atheriel@gmail.com>
2014-08-05 22:28:03 -07: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
OGINO Masanori
e5f6d827da
Remove crate_id.
...
Signed-off-by: OGINO Masanori <masanori.ogino@gmail.com>
2014-07-29 11:16:15 +09:00
Brendan Zabarauskas
7ca114d5aa
Merge pull request #103 from atheriel/rot_ex
...
Add a rotation example to the documentation.
2014-07-28 09:06:05 +10:00
Aaron Jacobs
993efcc7a8
Add a good rotation example to Basis2.
...
This ads an example (the first?) on a useful feature of cgmath, and
also a Make target for running just the examples in the docs. This
may come in useful if more examples are added.
Signed-off-by: Aaron Jacobs <atheriel@gmail.com>
2014-07-23 20:25:42 -07:00
Ben Foppa
784b9d8fa1
Fix inverted asserts
2014-07-18 11:55:53 -04: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
Aaron Jacobs
d58fac1117
Use pointers for the column map.
...
Signed-off-by: Aaron Jacobs <atheriel@gmail.com>
2014-07-04 17:37:24 -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
Colin Sherratt
1cf9f8d4ef
- added translate to Matrix
...
- fixed spaces and tabs
2014-06-28 16:53:05 -04:00
Erick Tryzelaar
1c5b6f0b7a
Update to compile with rust (9f8149e)
2014-06-25 21:26:15 -07:00
Corey Richardson
82529eec25
Update transform test to use Decomposed instead of Transform3D
2014-06-24 00:25:57 -07:00
Corey Richardson
c9bdf838a5
Update for Cargo
2014-06-23 23:49:29 -07:00
Brendan Zabarauskas
1382c2ea4b
Merge pull request #89 from bjz/transform
...
Remove Transform3D type
2014-06-15 11:19:15 -07:00
Brendan Zabarauskas
f7364ce42a
Clean up formatting
2014-06-15 11:18:31 -07:00
Brendan Zabarauskas
b8996e124d
Remove Transform3D type
...
Closes #86
2014-06-15 11:18:17 -07:00
Brendan Zabarauskas
1f9430399e
Fix transmute build failure
...
Closes #87
2014-06-15 10:57:09 -07:00
Colin Sherratt
b7a3a31156
Fix inverse matrix4, base it on Cramer's rule.
2014-06-05 15:53:23 -04:00
Colin Sherratt
25d67c7ec7
Added matrix that inverted incorrectly as part of #83 .
2014-06-05 15:53:23 -04:00
ozkriff
a850e37424
Updated to latest Rust: PartialEq, PartialOrd
2014-06-02 12:18:05 +04:00
ozkriff
63e53b1592
Removed 'extern crate debug', added fmt::Show for Angle
2014-05-28 21:53:45 +04:00
ozkriff
03005604b4
Updated to latest Rust: Added 'extern crate debug;'
2014-05-28 21:27:34 +04:00
ozkriff
1805c5b35a
Made 'array' module public
2014-05-28 21:20:23 +04:00
Brendan Zabarauskas
3559ab2e35
Simplify type signatures and make function implementations more strait-forward
...
This results in more code duplication, but the resulting type signatures are much simpler and the implementations are far easier to understand. It should be easier for llvm to optimise things too, seeing as closures are not used.
2014-05-27 19:39:14 -07:00
Brendan Zabarauskas
5716dce205
Add matrix operator tests
2014-05-26 11:26:27 -07:00
Brendan Zabarauskas
efe8cd9960
Fix matrix operator overloads
...
Closes #70
2014-05-26 11:26:26 -07:00
Brendan Zabarauskas
d4ce9c7613
Clean up numeric traits
2014-05-26 10:31:55 -07:00
Corey Richardson
ad970b94ec
Expand crate documentation
2014-05-25 14:35:51 -07:00
Corey Richardson
322a5d0c38
AABB docs
2014-05-25 13:52:01 -07:00
Corey Richardson
bf2cdfade3
Document Transform
2014-05-25 04:17:26 -07:00
Corey Richardson
27488b0dbc
Touch up docs for Rotation
2014-05-25 04:10:44 -07:00
Corey Richardson
7416e5ce14
Touch up Ray docs
2014-05-25 03:17:57 -07:00
Corey Richardson
9828870380
Document Point
2014-05-25 03:09:33 -07:00
Corey Richardson
c9573ad511
Touch up the Plane docs
2014-05-25 03:04:44 -07:00
Corey Richardson
8fa0f67333
Add some docs for Angle
2014-05-25 03:00:52 -07:00
Corey Richardson
d6c0d1d65d
Minor doc cleanup for Vector
2014-05-25 02:43:51 -07:00
Corey Richardson
ed9e5d0929
Cleanup Quaternion docs
2014-05-25 01:29:19 -07:00
Corey Richardson
fd2138bd88
Document Matrix
...
And remove `is_rotated`
2014-05-25 01:01:02 -07:00
Corey Richardson
5b1d1a0f01
Document Array
2014-05-24 18:22:23 -07:00
ozkriff
f6a27cddba
Updated for latest Rust
2014-05-17 00:11:27 +04:00
Brandon Waskiewicz
8ff2598dd9
Add line segment shape and functions
...
Create a new line segment struct that contains two Points in either
2D or 3D space.
Also create an implementation of the Intersect trait for testing
whether two line segments intersect, and where.
2014-05-13 21:39:38 -04:00
Luqman Aden
d85dba915f
Update crate attribute.
2014-05-12 21:09:16 -04:00
Luqman Aden
2a1ae1348c
std::cast -> std::mem
2014-05-12 21:04:01 -04:00
Corey Richardson
9d618c37b3
Merge pull request #63 from xales/add-totaleq
...
Add deriving TotalEq for Vector.
2014-04-25 06:11:15 -04:00
Jake Greenfield
4a9999b11d
Add deriving TotalEq for Vector.
2014-04-25 05:54:00 -04:00
ozkriff
8f018bfe0d
Updated to latest Rust
2014-04-24 22:25:26 +04:00
Brendan Zabarauskas
a1f23da32b
Update bench to latest Rust
2014-04-14 12:16:25 +10:00
Brendan Zabarauskas
7c11ec250a
Update formatting
2014-04-14 12:00:48 +10:00
Brendan Zabarauskas
64ae5fbd9a
{Vec, Mat, Quat}->{Vector, Matrix, Quaternion}
...
The full names provide consistency with the other types. Also, Vec is now a type declared in libstd - this will reduce confusion.
2014-04-14 12:00:48 +10:00
ozkriff
3ee67019dd
Updated to latest Rust: math changes
2014-04-02 13:24:04 +04:00
ozkriff
18fe0e74b5
Updated to latest Rust: priv/pub
2014-04-01 15:00:17 +04:00
ozkriff
01582f5649
Updated to latest Rust: std::vec -> std::slice
2014-03-21 14:18:04 +04:00
ozkriff
83943cd5b5
Replaced partial_{min,max} funcs with PartOrdPrim trait
2014-03-19 13:18:59 +04:00
ozkriff
1107ab8e6b
aabb.rs: _{min,max} -> partial_{min,max}
2014-03-17 23:11:04 +04:00
ozkriff
c026f520e1
Fixed warnings
2014-03-17 16:14:39 +04:00
ozkriff
385c3d7de8
Udated to latest Rust: TotalOrd/min/max changes
2014-03-17 15:13:54 +04:00
ozkriff
8868c793fe
Updated to latest Rust
2014-03-14 12:27:24 +04:00
ozkriff
77d9a537fd
Updated to latest Rust: Implemented Show for Mat{2,3,4}
2014-03-03 13:34:03 +04:00
ozkriff
eb40fbce2a
Updated to latest Rust: ToStr -> fmt::Show
2014-02-25 12:56:22 +04:00
ozkriff
e5ec803fa5
Updated to latest Rust
2014-02-24 10:33:31 +04:00
ozkriff
141c4a8684
Updated to latest Rust
2014-02-22 01:44:56 +04:00
Colin Sherratt
4bcb1a5406
changed extern mod to extern crate
2014-02-15 22:46:33 -05:00
Colin Sherratt
5872ef347e
Temporary workaround for the fact that std::num::Orderable is now removed.
2014-02-15 17:22:21 -05:00
Brendan Zabarauskas
11f8e29e17
Add Makefile and enable rust-ci doc export
2014-02-14 07:18:10 +11:00
Risto Saarelma
fb03e2a660
Arguments directly used to construct AABB passed by value
2014-02-12 08:56:39 +02:00
Risto Saarelma
a391d4450b
Don't use abbrevations for the Aabb field names
2014-02-09 10:28:58 +02:00
Risto Saarelma
57ff382cf1
to_str for Aabbs
2014-02-07 08:50:10 +02:00
Risto Saarelma
907165075c
Translate and scale methods for AABB
2014-02-07 08:48:46 +02:00
Risto Saarelma
ff9fc767d4
Translate method for AABBs
2014-02-07 08:48:46 +02:00
Risto Saarelma
6ac1f09750
Utility methods for AA boxes
2014-02-07 08:48:46 +02:00
Rich Lane
17b9f5c066
replace fmt::Default with fmt::Show
2014-02-02 20:51:43 -08:00
Brendan Zabarauskas
0c903a7ec5
Merge pull request #38 from rsaarelm/master
...
Axis-aligned boxes use top and bottom corners
2014-01-30 22:43:44 -08:00
Risto Saarelma
cdcae58c02
Axis-aligned boxes use top and bottom corners
...
Fixes issue #35 .
2014-01-30 21:43:36 +02:00
Dzmitry Malyshau
21f10ee0ec
Rotation2 and Rotation3 improved with from_* methods. Betwee_vecs implemented for all rotations.
2014-01-29 19:27:39 -05:00
Colin Sherratt
fb13dc4566
Implement to_mat4 for Transform3D and quaternion
...
Add a translate builder for Transform3D
2014-01-28 22:10:38 -05:00
Brendan Zabarauskas
7435ae16bf
Merge pull request #32 from rlane/iterbytes
...
derive IterBytes for all structs
2014-01-26 22:26:27 -08:00
Rich Lane
f3e680fc34
derive IterBytes for vectors, points, and angles
...
It's useful to be able to have types like `Vec3<i32>` as hashtable keys.
2014-01-26 22:19:40 -08:00
Lennart
e9fcf971da
Fix comments on Quat::from_angle_{x|y|z} functions
2014-01-26 22:12:56 -08:00
Lennart
ba71cb4a37
Fix quat::Quat::from_angle_{x|y|z}
...
These functions were broken due to mistakenly using the full angle theta
in one place instead of theta / 2. This resulted in non-unit
quaternions that definitely did not rotate things correctly.
2014-01-26 22:11:58 -08:00
Dzmitry Malyshau
1789f26ea1
look_at() implemented as a part of Transform trait
2014-01-25 17:26:06 -05:00
Brendan Zabarauskas
6b33f5d7e5
Remove unnecessary parentheses
2014-01-26 05:02:30 +11:00
Brendan Zabarauskas
337061bd82
Call rustc directly in .travis.yml
2014-01-26 05:02:19 +11:00
Brendan Zabarauskas
c2054e4993
Reduce code duplication
...
We can now have multiple definitions in macros!
2014-01-24 03:13:53 +11:00
Brendan Zabarauskas
ac991aaec0
Impl appropriate operators for implementors of Zero and One
2014-01-24 03:00:24 +11:00
Colin Sherratt
e3183110ad
Fix renamed structures:
...
VecIterator -> Items
MutVecIterator -> MutItems
2014-01-19 21:04:48 -05:00
kvark
522d20ffe5
Fixed tests that used assert_approx_eq
2014-01-08 20:06:02 -05:00
kvark
2fdf34cd18
New ApproxEq replaced the one in std
2014-01-08 19:26:50 -05:00
Corey Richardson
2992fd5f51
pkgid and make dead code public
2013-12-17 20:44:28 -05:00
Jarrett Billingsley
234634695d
Changed 'self lifetime to 'a
2013-12-12 00:26:01 -08:00
Boden Garman
3c9a6a531d
Fixed Mat4::look_at
2013-12-07 14:36:11 +11:00
Brendan Zabarauskas
8d4a06005c
Add Mat4::look_at
...
Hopefully I got this right...
2013-12-03 20:11:39 +10:00
Boden Garman
908d3c2800
Fix ortho asserts
2013-12-01 17:46:05 +11:00
Brendan Zabarauskas
b87aec64ac
Merge pull request #11 from csherratt/mat4_opt_only
...
Improved the performance of mat4 multiply.
2013-11-27 15:34:50 -08:00
Colin Sherratt
810445d536
update to compile on latest rustc
2013-11-27 13:26:57 -05:00
Colin Sherratt
149c781e81
Documented the mat4 multiply optimization.
2013-11-27 12:20:13 -05:00
Colin Sherratt
e4689ce22b
Improved the performance of mat4 multiply.
2013-11-26 12:29:07 -05:00
Colin Sherratt
c99ef02be1
Pad out the benchmarks to make the performance difference more pronounced.
...
This also speed the benchmarks up since the bench suite has trouble with
benchmarks that less then 100ns in length.
2013-11-26 03:14:48 -05:00
Colin Sherratt
bfd2729c29
cleaned up formatting in matrix.rs in both test and bench
2013-11-26 02:30:30 -05:00
Colin Sherratt
29104f2375
Add a benchmarking suite for matrix.
2013-11-26 00:39:39 -05:00
Brendan Zabarauskas
9f39bf67b2
Formatting cleanups
2013-11-09 12:15:51 +11:00
Brendan Zabarauskas
c916b65c6f
Merge pull request #8 from kvark/master
...
Transform::concat implemented
2013-11-08 06:34:51 -08:00
jeff
fd7003dc98
cleaning up from upstream merge
2013-11-06 18:43:56 -08:00
jeff
a53f9913a8
ray-plane and ray-sphere intersection
2013-11-06 18:29:08 -08:00
Brendan Zabarauskas
9e053f22f8
Merge branch 'master' of https://github.com/kvark/cgmath-rs into kvark-master
...
Conflicts:
src/tests/plane.rs
src/tests/vector.rs
2013-11-03 14:59:28 +11:00
Jeff Belgum
7a709525d5
change float to f64
2013-11-02 10:20:35 -07:00
kvark
42e3801715
Implemented missing rotation functions (rotate_point, rotate_ray)
2013-11-02 11:16:18 -04:00
kvark
c13ebf57ab
Added transform_as_point
2013-11-02 10:18:37 -04:00
kvark
efd3403bf2
ToStr implemented for transform::Decomposed
2013-11-02 09:51:20 -04:00
kvark
7f39520aa1
Transform::concat implemented
2013-11-02 09:11:13 -04:00
kvark
364d959784
Fixed tests to compile; added Point homogeneous transform & test; added Transform inversion & test; Implemented Transform for AffineMatrix3
2013-11-01 19:42:09 -04:00
kvark
04b257e217
Homogeneous transformations added for Point3; extend/truncate added for vectors; Transform3 is implemented for AffineMatrix3
2013-11-01 10:32:29 -04:00
kvark
6dd06103fc
Generalized transform trait over any-dimensional vectors and points
2013-11-01 08:29:01 -04:00
kvark
0c41aa3951
Rotation is generalized over dimensions
2013-11-01 07:34:39 -04:00
kvark
d81157fba5
Generalized Ray & Transform over dimensions
2013-11-01 07:09:57 -04:00
kvark
53ad086e5e
Enabled Transform3, implemented it for Transform3D
2013-10-31 17:36:21 -04:00
Brendan Zabarauskas
c283c9d1e7
Add trait for accessing the pointer to the first element of a type
2013-10-21 11:30:30 +11:00
Brendan Zabarauskas
ff3522a711
Replace usages of fmt! with format!
2013-10-20 01:00:44 +11:00
Brendan Zabarauskas
7fd9f582b6
Make point structs public
2013-10-14 22:48:45 +11:00
Brendan Zabarauskas
66a329c591
Initial commit of transform module
2013-10-13 11:00:51 +11:00
Brendan Zabarauskas
77aeff0785
Rename Rot->Basis
2013-10-13 11:00:07 +11:00
Brendan Zabarauskas
70d48ed37b
Force the client to perform Degree->Rad conversions by taking Rad parameters instead of generic Angles
...
This should make the overhead of conversions evident to the client.
2013-10-13 10:52:21 +11:00
Brendan Zabarauskas
3862e867ba
Update to latest Rust
2013-10-13 06:56:05 +11:00
Brendan Zabarauskas
2ac675ae10
Fix slerp
2013-10-13 06:55:26 +11:00
Brendan Zabarauskas
cae2839a3b
Merge pull request #2 from kvark/master
...
Fixed projection.to_mat4 checks
2013-10-10 05:46:07 -07:00
kvark
049b05fe3f
Fixed projection.to_mat4 checks
2013-10-09 04:35:51 -04:00
Brendan Zabarauskas
e4e9b6909e
Reduce the number of rotation types, shifting some of the functionality to the quaternion and matrix constructors.
2013-09-30 14:30:40 +10:00
kvark
e056f7d43e
Ported to Rust-0.8
2013-09-27 06:22:33 -04:00
Brendan Zabarauskas
f968784b9b
Add matrix tests
2013-09-20 02:44:06 +10:00
Brendan Zabarauskas
4c8e1445c1
Fix bug with macro expansion
2013-09-20 02:43:33 +10:00
Brendan Zabarauskas
34af62601b
Use .fold for comp_min and comp_max
2013-09-19 20:44:26 +10:00
Brendan Zabarauskas
0772d14d59
Rename Mat{2,3,4}::ident -> Mat{2,3,4}::identity
2013-09-19 20:43:36 +10:00
Brendan Zabarauskas
8ed39f3982
Clean up usages of std::num::cast
2013-09-19 14:57:36 +10:00
Brendan Zabarauskas
279aa261a8
Add frustum constructors and use to implement Projection->Frustum conversions
2013-09-19 14:56:40 +10:00
Brendan Zabarauskas
8c17832bf8
Use match instead of cond!
2013-09-18 20:52:07 +10:00
Brendan Zabarauskas
39234b7089
Add Plane::from_points test
2013-09-18 12:54:41 +10:00
Brendan Zabarauskas
46636ca8ef
Remove glob import
2013-09-18 11:37:06 +10:00
Brendan Zabarauskas
8519e0fb8e
Add Plane::from_points constructor and impl ApproxEq for Plane
2013-09-18 11:36:41 +10:00
Brendan Zabarauskas
d2dcd51428
Remove vector! macro
2013-09-18 11:35:33 +10:00
Brendan Zabarauskas
efbe4b199b
Simplify trait bounds
2013-09-17 18:50:42 +10:00
Brendan Zabarauskas
eade6cc18f
Implement inversions for AngleAxis rotations
2013-09-17 18:45:31 +10:00
Brendan Zabarauskas
7eb8bc50c9
Remove util module
2013-09-17 18:43:20 +10:00
Brendan Zabarauskas
8a184c39b4
Add equivalence test for angles
2013-09-17 17:02:45 +10:00
Brendan Zabarauskas
3449fe8a73
Add bisection method for angles
2013-09-17 16:40:29 +10:00
Brendan Zabarauskas
8df5b14477
Add some angle constants and normalisation methods
2013-09-17 15:28:27 +10:00
Brendan Zabarauskas
52e1f0819c
Follow rustic naming conventions
2013-09-17 14:39:18 +10:00
Brendan Zabarauskas
172c60277f
Flesh out Rotation{2, 3} traits, and impl for some types
2013-09-17 14:38:25 +10:00
Brendan Zabarauskas
03a5e94a60
Add more vector tests
2013-09-16 16:39:45 +10:00
Brendan Zabarauskas
44567f6103
Add Array::each_mut method and use it instead of iterators
2013-09-14 13:40:38 +10:00
Brendan Zabarauskas
59a46bc7ab
Rename Array::zip to Array::fold
...
(woops!)
2013-09-14 12:06:02 +10:00
Brendan Zabarauskas
1a94e8d06e
Add wrapper function for Array::build
2013-09-14 11:58:19 +10:00
Brendan Zabarauskas
68e03cd392
Remove Array::{map, bimap} functions
2013-09-14 11:53:12 +10:00
Brendan Zabarauskas
ce5b2e9243
Add some method impls for the Matrix trait
2013-09-14 11:39:51 +10:00
Brendan Zabarauskas
00db4f17b4
Impl comp_add and comp_mul using Array::zip
2013-09-14 10:54:19 +10:00
Brendan Zabarauskas
28dd7963ba
Add trait for defining intersections
2013-09-10 14:51:14 +10:00
Brendan Zabarauskas
6e3860f232
Remove util::half
2013-09-10 14:49:53 +10:00
Brendan Zabarauskas
f95426173a
Rename Plane3->Plane
2013-09-08 00:43:32 +10:00
Brendan Zabarauskas
df9c66d1bb
Use macro instead of loop for Array::build
2013-09-07 19:51:01 +10:00
Brendan Zabarauskas
c84ca595b7
Add Vec{2, 3, 4}::unit_{x, y, z, w} functions
2013-09-07 15:08:59 +10:00
Brendan Zabarauskas
038b200338
Implement matrix to matrix conversions
2013-09-07 15:04:33 +10:00
Brendan Zabarauskas
15b69686b0
Further refine vector module, remove un-needed comment
2013-09-06 16:53:37 +10:00
Brendan Zabarauskas
56e718406a
Add length tests
2013-09-06 16:39:34 +10:00
Brendan Zabarauskas
3e97a2446b
Use macro to impl vector operations
2013-09-06 16:39:15 +10:00
Brendan Zabarauskas
408e86211c
Begin work on testsuite
2013-09-06 15:44:58 +10:00
Brendan Zabarauskas
0d3d40637f
Add comp_{min, max} and cross_self methods for vectors
2013-09-06 15:44:27 +10:00
Brendan Zabarauskas
4eff10a90e
Shove the util functions unceremoniously into a separate file and hope nobody looks in there
2013-09-06 10:12:29 +10:00
Brendan Zabarauskas
28faaa2ccc
Add collision types
2013-09-05 17:19:31 +10:00
Brendan Zabarauskas
aef1d153a1
Simplify projection code
2013-09-05 16:44:27 +10:00
Brendan Zabarauskas
6534855673
Add rotation module
2013-09-05 16:43:52 +10:00
Brendan Zabarauskas
6d16999d29
The trigonometric functions don't have to be methods!
2013-09-04 15:52:44 +10:00
Brendan Zabarauskas
bb17d95abe
Clean up Mat3 to Quat conversion code
2013-09-04 15:42:12 +10:00
Brendan Zabarauskas
6117fef58b
Use angle types in appropriate locations
2013-09-04 15:36:06 +10:00
Brendan Zabarauskas
9c65b38231
Add matrix algebra operations
2013-09-04 14:40:24 +10:00
Brendan Zabarauskas
bf1dd601d7
Add projection types
2013-09-04 14:39:21 +10:00
Brendan Zabarauskas
37826e56bc
Add angle unit types
2013-09-04 12:20:53 +10:00
Brendan Zabarauskas
2b8e36d4a3
Impl ApproxEq for vectors, matrices and points
2013-09-03 23:36:03 +10:00
Brendan Zabarauskas
b84e154898
Impl One for vectors and matricies
2013-09-03 23:35:06 +10:00
Brendan Zabarauskas
7635d01276
Add normalize_self, normalize_self_to and lerp_self methods
2013-09-03 22:12:54 +10:00
Brendan Zabarauskas
11022618b3
Add ray types
2013-09-03 20:15:22 +10:00
Brendan Zabarauskas
bd9f129b3a
Add Mat2::from_angle constructor
2013-09-03 18:03:18 +10:00
Brendan Zabarauskas
0325af9a69
Add ToStr impls for point, vector and quaternion types
2013-09-03 17:33:33 +10:00
Brendan Zabarauskas
00991e00f3
Copy quaternion method impls over from src-old, and add conversion traits
2013-09-03 17:28:43 +10:00
Brendan Zabarauskas
ca432e9728
Use Float
for trait bounds instead of Real + ApproxEq<S>
2013-09-03 17:14:27 +10:00
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
Brendan Zabarauskas
139cd6dbe9
Misc formatting
2013-07-13 23:03:37 +10:00
Brendan Zabarauskas
e1e6b90c1b
Move types related to bounding volumes to bounds module
2013-07-13 23:00:33 +10:00
Brendan Zabarauskas
8973179b0d
Add impl_to_vec! and impl_as_vec! macros and use for points and colors
2013-07-12 19:20:09 +10:00
Brendan Zabarauskas
ad59c9b16f
Decouple vec module from Point2 and Point3
2013-07-12 16:36:36 +10:00
Brendan Zabarauskas
7615a55d84
More module re-arrangement
2013-07-12 16:32:12 +10:00
Brendan Zabarauskas
0cbfa7d040
Remove unnecessary method impl (bools now impl Not)
2013-07-12 14:08:25 +10:00
Brendan Zabarauskas
2ed5e94710
Add ray_to method to point types
2013-07-12 14:07:21 +10:00
Brendan Zabarauskas
3d51d83c92
Rename length to magnitude and remove distance methods from vec
2013-07-12 13:42:28 +10:00
Brendan Zabarauskas
eb75d34636
Add vector conversion traits
2013-07-12 13:41:28 +10:00
Brendan Zabarauskas
4159a214da
Add skeleton structs and impls for noise types
2013-07-12 12:38:53 +10:00
Brendan Zabarauskas
8139e634fb
Remove conflicting ApproxEq impls
2013-07-12 12:19:40 +10:00
Brendan Zabarauskas
3656068f5c
Add impl_approx! macro
2013-07-12 11:22:14 +10:00
Brendan Zabarauskas
f30b79deb3
Add some more types to geom and improve field names
2013-07-12 10:33:20 +10:00
Brendan Zabarauskas
e6bb9362ed
Create space module
2013-07-12 09:17:37 +10:00
Brendan Zabarauskas
6300d4b539
Move swap and dimensional impls into separate modules
2013-07-12 07:44:20 +10:00
Brendan Zabarauskas
b06785fc89
Remove impl_approx! macro
2013-07-11 23:54:50 +10:00
Brendan Zabarauskas
c4c986c0ef
Remove yuv module
2013-07-11 16:41:43 +10:00
Brendan Zabarauskas
290861f952
Add conversions from points to homogenous coordinates
2013-07-11 15:14:32 +10:00
Brendan Zabarauskas
de649c3b50
Add a bit of documentation to the point module
2013-07-11 14:59:18 +10:00
Brendan Zabarauskas
50747703cf
Method rejiggering. Add origin method.
2013-07-11 14:49:14 +10:00
Brendan Zabarauskas
92ee628c06
Fix normalize_degrees impls
2013-07-11 13:05:29 +10:00
Brendan Zabarauskas
fd9fcd2075
Add normalize_channel method
2013-07-11 12:56:35 +10:00
Brendan Zabarauskas
659226b15e
Add more methods to Point trait and implement operator overloads
2013-07-11 12:19:29 +10:00
Brendan Zabarauskas
aedf317af1
Add rotate method to Point trait, remove from_vec function and move impl directly on types
2013-07-11 11:45:21 +10:00
Brendan Zabarauskas
f5d96ab398
Create transform module, move frustum module, add a little documentation
2013-07-11 11:11:43 +10:00
Brendan Zabarauskas
8ae7f3dbad
Add rgb tests
2013-07-11 07:58:40 +10:00
Brendan Zabarauskas
ff439c9b1d
Comments ahoy
2013-07-10 20:46:14 +10:00
Brendan Zabarauskas
0d24a87a8e
Add svg color constants
2013-07-10 20:45:42 +10:00
Brendan Zabarauskas
1188cba878
Fix build error
2013-07-10 20:14:11 +10:00
Brendan Zabarauskas
8bca8757c2
Add hsv conversion tests
2013-07-10 20:13:50 +10:00
Brendan Zabarauskas
49b9b85079
Add yuv and ycbcr skeleton modules
2013-07-10 15:51:05 +10:00
Brendan Zabarauskas
053586c8e2
Add point conversion methods for vec2 and vec3 types
2013-07-10 14:18:44 +10:00
Brendan Zabarauskas
e12f561930
Add channel and color normalization methods
2013-07-10 14:16:16 +10:00
Brendan Zabarauskas
58c3233fe3
Impl Color trait
2013-07-10 12:59:02 +10:00
Brendan Zabarauskas
a3f997e763
Make Channel::from private
2013-07-10 10:59:23 +10:00
Brendan Zabarauskas
290287a0b9
Add skeleton hex conversions
2013-07-10 10:58:55 +10:00
Brendan Zabarauskas
8adad636d1
Add RGBA and HSVA impls
2013-07-10 10:57:37 +10:00
Brendan Zabarauskas
7e70e826f2
Add generic to_channel method
2013-07-10 10:37:59 +10:00
Brendan Zabarauskas
c4728af209
Add channel tests
2013-07-10 00:06:14 +10:00
Brendan Zabarauskas
23e21ac1b3
Improve trait bounds
2013-07-09 23:10:59 +10:00
Brendan Zabarauskas
d65aa944b9
Simplify color::channel traits
2013-07-09 22:50:20 +10:00
Brendan Zabarauskas
49715e6479
Merge some color modules
2013-07-09 21:28:23 +10:00
Brendan Zabarauskas
29a99cea51
Reduce transmute ugliness
2013-07-09 21:17:04 +10:00
Brendan Zabarauskas
452decd3e2
Use upper case identifiers for static constants
2013-07-09 17:32:24 +10:00
Brendan Zabarauskas
128e645a20
Relax type bounds
2013-07-09 17:05:19 +10:00
Brendan Zabarauskas
b9369247bf
Remove free standing color conversion functions
2013-07-09 16:53:24 +10:00
Brendan Zabarauskas
afaa3af501
Re-export FrustumPoints from world module
2013-07-09 16:44:15 +10:00
Brendan Zabarauskas
5c3197a7fc
Rename Plane to Plane3 for consistency with other types
2013-07-09 16:43:33 +10:00
Brendan Zabarauskas
2ca90cb750
Fix color channel conversions
2013-07-09 16:42:19 +10:00
Brendan Zabarauskas
a5d4fc1ed4
Make point into standalone struct as opposed to a newtype struct
2013-07-08 18:17:36 +10:00
Brendan Zabarauskas
5b5d1f38b3
Add octree and quadtree mods (not yet implemented)
2013-07-08 17:48:11 +10:00
Brendan Zabarauskas
999782945c
Add color module
2013-07-08 17:39:33 +10:00
Brendan Zabarauskas
6925c5eaad
Add skeleton noise module
2013-07-08 17:04:48 +10:00
Brendan Zabarauskas
c0a5b29af1
Move files into submodules
2013-07-08 17:02:04 +10:00
Brendan Zabarauskas
288afe0898
Remove dimensional HOFs
2013-07-08 13:20:34 +10:00
Brendan Zabarauskas
c91b0747b3
Untangle mat macros
2013-07-04 10:59:21 +10:00
Brendan Zabarauskas
1819846a4c
Untangle vec macros
2013-07-01 13:25:45 +10:00
Brendan Zabarauskas
b7530c3512
Fix lifetime error
2013-07-01 11:39:13 +10:00
maikklein
d43629e2b9
fixes += operator etc
2013-06-30 18:28:39 +02:00
Brendan Zabarauskas
6fb6d57175
Use the Clone trait instead of Copy and switch from the copy keyword to calling the clone method.
...
impl_approx! is broken with a borrow issue. The library does not compile yet. Sorry!
2013-06-29 16:38:55 +10:00
maikklein
c36cb6e555
explicit copy
2013-06-29 02:26:26 +02:00
maikklein
547ac400fd
explicit copy
2013-06-29 02:25:07 +02:00
Brendan Zabarauskas
6cfb244b41
Merge vector and matrix source files
2013-06-16 18:03:14 +10:00
Brendan Zabarauskas
9d99347bbf
Add types from cgmath
2013-06-16 17:34:09 +10:00
Brendan Zabarauskas
11e1623dad
Rename macros file
2013-06-16 17:32:48 +10:00
Brendan Zabarauskas
f5ba7a7982
Remove duplicate Dimensional trait definition
2013-06-16 15:37:30 +10:00
Brendan Zabarauskas
a4c7332e2b
Move Dimensional trait and dimensional macros into separate files
2013-06-16 15:34:59 +10:00
Brendan Zabarauskas
f20eca5cc5
Use macros and higher-order functions to reduce code repetition
2013-06-16 15:21:32 +10:00
maikklein
8673cd6701
Fixing vec2.perp_dot and vec3.angle
2013-06-16 02:08:16 +02:00
Brendan Zabarauskas
e82ac511a5
Use higher order functions to reduce code repetition in some methods
2013-06-12 15:49:54 +10:00
Brendan Zabarauskas
b727dd2bf5
Implement Dimensional trait
2013-06-12 12:57:58 +10:00
Brendan Zabarauskas
5cb98d09cf
Add conversion traits
2013-06-12 11:30:18 +10:00
Brendan Zabarauskas
b2e7f2e4b1
Some constructors and functions don't need T:Copy
2013-06-12 11:15:12 +10:00
Brendan Zabarauskas
feb4ae2a00
Move tests into source files
2013-06-12 11:02:11 +10:00
Brendan Zabarauskas
f226ab2262
Re-organise modules
2013-06-12 10:02:39 +10:00
Brendan Zabarauskas
21ae345adc
Be more selective about inlining, #[inline(always)] -> #[inline] for functions other than map
2013-06-12 07:50:16 +10:00
Brendan Zabarauskas
17975b798d
De-traitify types, fix tests
2013-06-11 09:02:25 +10:00
Brendan Zabarauskas
3721167cdc
Fix std imports
2013-06-06 12:38:23 +10:00
Brendan Zabarauskas
288c49b474
Remove broken macros
2013-06-06 12:38:03 +10:00
Brendan Zabarauskas
d352577356
Use ///
style doc comments
2013-06-01 12:57:29 +10:00
Brendan Zabarauskas
f443203d4a
Create elem and elem_mut methods for accessing matrix elements
2013-06-01 11:56:11 +10:00
Brendan Zabarauskas
a485920354
Fix constructors, tests now pass (YAYAY!)
...
YAYYYYYYYYAYAYAYAYAYAYAY
*jumps for joy*
2013-06-01 11:07:25 +10:00
Brendan Zabarauskas
36039228b6
Don't use index operator in tests
2013-06-01 09:12:30 +10:00
Brendan Zabarauskas
a913be0373
Delete old files
2013-06-01 08:01:20 +10:00
Brendan Zabarauskas
d3bfcc194e
Add license/copyright notices to source files
2013-06-01 08:01:01 +10:00
Brendan Zabarauskas
e630faf239
Remove index operator impls to prevent copying
...
We could re-implement this once the Index trait has been improved
2013-05-31 21:42:46 +10:00
Brendan Zabarauskas
86241f69cb
Fix multiple borrow errors
2013-05-24 07:55:23 +10:00
Brendan Zabarauskas
f800a0ae04
Fixes for core->std and changes to use
2013-05-24 07:05:25 +10:00