7
7
8
8
use crate :: framework:: itest;
9
9
10
- use godot:: builtin:: {
11
- inner:: InnerVector3 ,
12
- math:: { assert_eq_approx, ApproxEq } ,
13
- real,
14
- real_consts:: PI ,
15
- Vector3 , Vector3Axis ,
16
- } ;
10
+ use godot:: builtin:: inner:: InnerVector3 ;
11
+ use godot:: builtin:: math:: { assert_eq_approx, ApproxEq } ;
12
+ use godot:: builtin:: real;
13
+ use godot:: builtin:: real_consts:: { FRAC_PI_4 , PI } ;
14
+ use godot:: builtin:: { Vector3 , Vector3Axis } ;
17
15
18
16
#[ itest]
19
17
fn abs ( ) {
@@ -28,6 +26,36 @@ fn angle_to() {
28
26
let b = Vector3 :: new ( -7.8 , 9.1 , -11.12 ) ;
29
27
30
28
assert_eq_approx ! ( a. angle_to( b) , a. as_inner( ) . angle_to( b) as real) ;
29
+
30
+ // Concrete example (135°).
31
+ let right = Vector3 :: new ( 1.0 , 0.0 , 0.0 ) ;
32
+ let back_left = Vector3 :: new ( -1.0 , 0.0 , 1.0 ) ;
33
+
34
+ assert_eq_approx ! ( right. angle_to( back_left) , 3.0 * FRAC_PI_4 ) ;
35
+ assert_eq_approx ! ( back_left. angle_to( right) , 3.0 * FRAC_PI_4 ) ;
36
+ }
37
+
38
+ #[ itest]
39
+ fn signed_angle_to ( ) {
40
+ let a = Vector3 :: new ( 1.0 , 1.0 , 0.0 ) ;
41
+ let b = Vector3 :: new ( 1.0 , 1.0 , 1.0 ) ;
42
+ let c = Vector3 :: UP ;
43
+
44
+ assert_eq_approx ! (
45
+ a. signed_angle_to( b, c) ,
46
+ a. as_inner( ) . signed_angle_to( b, c) as real,
47
+ "signed_angle_to\n " ,
48
+ ) ;
49
+
50
+ // Concrete example (135°).
51
+ let right = Vector3 :: new ( 1.0 , 0.0 , 0.0 ) ;
52
+ let back_left = Vector3 :: new ( -1.0 , 0.0 , 1.0 ) ;
53
+
54
+ let pi_3_4 = 3.0 * FRAC_PI_4 ;
55
+ assert_eq_approx ! ( right. signed_angle_to( back_left, Vector3 :: UP ) , -pi_3_4) ;
56
+ assert_eq_approx ! ( right. signed_angle_to( back_left, Vector3 :: DOWN ) , pi_3_4) ;
57
+ assert_eq_approx ! ( back_left. signed_angle_to( right, Vector3 :: UP ) , pi_3_4) ;
58
+ assert_eq_approx ! ( back_left. signed_angle_to( right, Vector3 :: DOWN ) , -pi_3_4) ;
31
59
}
32
60
33
61
#[ itest]
@@ -402,19 +430,6 @@ fn sign() {
402
430
assert_eq ! ( b. sign( ) , b. as_inner( ) . sign( ) ) ;
403
431
}
404
432
405
- #[ itest]
406
- fn signed_angle_to ( ) {
407
- let a = Vector3 :: new ( 1.0 , 1.0 , 0.0 ) ;
408
- let b = Vector3 :: new ( 1.0 , 1.0 , 1.0 ) ;
409
- let c = Vector3 :: UP ;
410
-
411
- assert_eq_approx ! (
412
- a. signed_angle_to( b, c) ,
413
- a. as_inner( ) . signed_angle_to( b, c) as real,
414
- "signed_angle_to\n " ,
415
- ) ;
416
- }
417
-
418
433
#[ itest]
419
434
fn slerp ( ) {
420
435
let a = Vector3 :: new ( 1.2 , -3.4 , 5.6 ) ;
0 commit comments