Commit graph

672 commits

Author SHA1 Message Date
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