1
1
#![ crate_name = "vecmath" ]
2
2
#![ deny( missing_docs) ]
3
- #![ feature( core, std_misc ) ]
3
+ #![ feature( core) ]
4
4
5
5
//! A simple and generic library for vector math.
6
6
//!
19
19
//! For example, `row_mat2x3_transform_pos2` transforms a position.
20
20
//! `row_mat2x3_transform_vec2` transforms a vector.
21
21
22
- use std:: num:: { Float , NumCast , ToPrimitive } ;
22
+ extern crate num;
23
+
24
+ use num:: { Float , NumCast , ToPrimitive } ;
23
25
24
26
pub mod consts;
25
27
@@ -309,8 +311,8 @@ fn test_row_mat3x4_mul() {
309
311
/// Constructs identity matrix.
310
312
#[ inline( always) ]
311
313
pub fn mat2x3_id < T : Float + Copy > ( ) -> Matrix2x3 < T > {
312
- let one = Float :: one ( ) ;
313
- let zero = Float :: zero ( ) ;
314
+ let one = T :: one ( ) ;
315
+ let zero = T :: zero ( ) ;
314
316
[
315
317
[ one, zero, zero] ,
316
318
[ zero, one, zero]
@@ -320,8 +322,8 @@ pub fn mat2x3_id<T: Float + Copy>() -> Matrix2x3<T> {
320
322
/// Constructs identity matrix.
321
323
#[ inline( always) ]
322
324
pub fn mat3x2_id < T : Float + Copy > ( ) -> Matrix3x2 < T > {
323
- let one = Float :: one ( ) ;
324
- let zero = Float :: zero ( ) ;
325
+ let one = T :: one ( ) ;
326
+ let zero = T :: zero ( ) ;
325
327
[
326
328
[ one, zero] ,
327
329
[ zero, one] ,
@@ -332,8 +334,8 @@ pub fn mat3x2_id<T: Float + Copy>() -> Matrix3x2<T> {
332
334
/// Constructs identity matrix.
333
335
#[ inline( always) ]
334
336
pub fn mat3_id < T : Float + Copy > ( ) -> Matrix3 < T > {
335
- let one = Float :: one ( ) ;
336
- let zero = Float :: zero ( ) ;
337
+ let one = T :: one ( ) ;
338
+ let zero = T :: zero ( ) ;
337
339
[
338
340
[ one, zero, zero] ,
339
341
[ zero, one, zero] ,
@@ -344,8 +346,8 @@ pub fn mat3_id<T: Float + Copy>() -> Matrix3<T> {
344
346
/// Constructs identity matrix.
345
347
#[ inline( always) ]
346
348
pub fn mat3x4_id < T : Float + Copy > ( ) -> Matrix3x4 < T > {
347
- let one = Float :: one ( ) ;
348
- let zero = Float :: zero ( ) ;
349
+ let one = T :: one ( ) ;
350
+ let zero = T :: zero ( ) ;
349
351
[
350
352
[ one, zero, zero, zero] ,
351
353
[ zero, one, zero, zero] ,
@@ -356,8 +358,8 @@ pub fn mat3x4_id<T: Float + Copy>() -> Matrix3x4<T> {
356
358
/// Constructs identity matrix.
357
359
#[ inline( always) ]
358
360
pub fn mat4x3_id < T : Float + Copy > ( ) -> Matrix4x3 < T > {
359
- let one = Float :: one ( ) ;
360
- let zero = Float :: zero ( ) ;
361
+ let one = T :: one ( ) ;
362
+ let zero = T :: zero ( ) ;
361
363
[
362
364
[ one, zero, zero] ,
363
365
[ zero, one, zero] ,
@@ -369,8 +371,8 @@ pub fn mat4x3_id<T: Float + Copy>() -> Matrix4x3<T> {
369
371
/// Constructs identity matrix.
370
372
#[ inline( always) ]
371
373
pub fn mat4_id < T : Float + Copy > ( ) -> Matrix4 < T > {
372
- let one = Float :: one ( ) ;
373
- let zero = Float :: zero ( ) ;
374
+ let one = T :: one ( ) ;
375
+ let zero = T :: zero ( ) ;
374
376
[
375
377
[ one, zero, zero, zero] ,
376
378
[ zero, one, zero, zero] ,
@@ -809,21 +811,21 @@ pub fn vec4_len<T: Float>(a: Vector4<T>) -> T {
809
811
/// Computes the inverse length of a vector.
810
812
#[ inline( always) ]
811
813
pub fn vec2_inv_len < T : Float > ( a : Vector2 < T > ) -> T {
812
- let one: T = Float :: one ( ) ;
814
+ let one = T :: one ( ) ;
813
815
one / vec2_len ( a)
814
816
}
815
817
816
818
/// Computes the inverse length of a vector.
817
819
#[ inline( always) ]
818
820
pub fn vec3_inv_len < T : Float > ( a : Vector3 < T > ) -> T {
819
- let one: T = Float :: one ( ) ;
821
+ let one = T :: one ( ) ;
820
822
one / vec3_len ( a)
821
823
}
822
824
823
825
/// Computes the inverse length of a vector.
824
826
#[ inline( always) ]
825
827
pub fn vec4_inv_len < T : Float > ( a : Vector4 < T > ) -> T {
826
- let one: T = Float :: one ( ) ;
828
+ let one = T :: one ( ) ;
827
829
one / vec4_len ( a)
828
830
}
829
831
@@ -1325,42 +1327,42 @@ pub fn mat4_det<T: Float>(mat: Matrix4<T>) -> T {
1325
1327
/// Computes inverse determinant of a 2x3 matrix.
1326
1328
#[ inline( always) ]
1327
1329
pub fn mat2x3_inv_det < T : Float > ( mat : Matrix2x3 < T > ) -> T {
1328
- let one: T = Float :: one ( ) ;
1330
+ let one = T :: one ( ) ;
1329
1331
one / mat2x3_det ( mat)
1330
1332
}
1331
1333
1332
1334
/// Computes inverse determinant of a 3x2 matrix.
1333
1335
#[ inline( always) ]
1334
1336
pub fn mat3x2_inv_det < T : Float > ( mat : Matrix3x2 < T > ) -> T {
1335
- let one: T = Float :: one ( ) ;
1337
+ let one = T :: one ( ) ;
1336
1338
one / mat3x2_det ( mat)
1337
1339
}
1338
1340
1339
1341
/// Computes inverse determinant of a 3x3 matrix.
1340
1342
#[ inline( always) ]
1341
1343
pub fn mat3_inv_det < T : Float > ( mat : Matrix3 < T > ) -> T {
1342
- let one: T = Float :: one ( ) ;
1344
+ let one = T :: one ( ) ;
1343
1345
one / mat3_det ( mat)
1344
1346
}
1345
1347
1346
1348
/// Computes inverse determinant of a 3x4 matrix.
1347
1349
#[ inline( always) ]
1348
1350
pub fn mat3x4_inv_det < T : Float > ( mat : Matrix3x4 < T > ) -> T {
1349
- let one: T = Float :: one ( ) ;
1351
+ let one = T :: one ( ) ;
1350
1352
one / mat3x4_det ( mat)
1351
1353
}
1352
1354
1353
1355
/// Computes inverse determinant of a 4x3 matrix.
1354
1356
#[ inline( always) ]
1355
1357
pub fn mat4x3_inv_det < T : Float > ( mat : Matrix4x3 < T > ) -> T {
1356
- let one: T = Float :: one ( ) ;
1358
+ let one = T :: one ( ) ;
1357
1359
one / mat4x3_det ( mat)
1358
1360
}
1359
1361
1360
1362
/// Computes the inverse determinant of a 4x4 matrix.
1361
1363
#[ inline( always) ]
1362
1364
pub fn mat4_inv_det < T : Float > ( mat : Matrix4 < T > ) -> T {
1363
- let one: T = Float :: one ( ) ;
1365
+ let one = T :: one ( ) ;
1364
1366
one / mat4_det ( mat)
1365
1367
}
1366
1368
0 commit comments