@@ -62,53 +62,53 @@ final class TransformationTests: XCTestCase {
62
62
63
63
func testAngleAxisEdgeCases< T: Real & SIMDScalar > ( _ type: T . Type ) {
64
64
// Zero/Zero
65
- XCTAssertTrue ( Quaternion < T > ( angle: . zero, axis: . zero) . axis. isNaN)
66
- XCTAssertTrue ( Quaternion < T > ( angle: . zero, axis: . zero) . angle. isNaN)
67
- XCTAssertEqual ( Quaternion < T > ( angle: . zero, axis: . zero) , . zero)
65
+ XCTAssertTrue ( Quaternion < T > ( length : . zero , angle: . zero, axis: . zero) . axis. isNaN)
66
+ XCTAssertTrue ( Quaternion < T > ( length : . zero , angle: . zero, axis: . zero) . angle. isNaN)
67
+ XCTAssertEqual ( Quaternion < T > ( length : . zero , angle: . zero, axis: . zero) , . zero)
68
68
// Inf/Zero
69
- XCTAssertTrue ( Quaternion < T > ( angle: . infinity, axis: . zero ) . axis. isNaN)
70
- XCTAssertTrue ( Quaternion < T > ( angle: . infinity, axis: . zero ) . angle. isNaN)
71
- XCTAssertEqual ( Quaternion < T > ( angle: . infinity, axis: . zero ) , . zero)
69
+ XCTAssertTrue ( Quaternion < T > ( length : . zero , angle: . infinity, axis: . infinity ) . axis. isNaN)
70
+ XCTAssertTrue ( Quaternion < T > ( length : . zero , angle: . infinity, axis: . infinity ) . angle. isNaN)
71
+ XCTAssertEqual ( Quaternion < T > ( length : . zero , angle: . infinity, axis: . infinity ) , . zero)
72
72
// -Inf/Zero
73
- XCTAssertTrue ( Quaternion < T > ( angle: - . infinity, axis: . zero ) . axis. isNaN)
74
- XCTAssertTrue ( Quaternion < T > ( angle: - . infinity, axis: . zero ) . angle. isNaN)
75
- XCTAssertEqual ( Quaternion < T > ( angle: - . infinity, axis: . zero ) , . zero)
73
+ XCTAssertTrue ( Quaternion < T > ( length : . zero , angle: - . infinity, axis: - . infinity ) . axis. isNaN)
74
+ XCTAssertTrue ( Quaternion < T > ( length : . zero , angle: - . infinity, axis: - . infinity ) . angle. isNaN)
75
+ XCTAssertEqual ( Quaternion < T > ( length : . zero , angle: - . infinity, axis: - . infinity ) , . zero)
76
76
// NaN/Zero
77
- XCTAssertTrue ( Quaternion < T > ( angle: . nan, axis: . zero ) . axis. isNaN)
78
- XCTAssertTrue ( Quaternion < T > ( angle: . nan, axis: . zero ) . angle. isNaN)
79
- XCTAssertEqual ( Quaternion < T > ( angle: . nan, axis: . zero ) , . zero)
77
+ XCTAssertTrue ( Quaternion < T > ( length : . zero , angle: . nan, axis: . nan ) . axis. isNaN)
78
+ XCTAssertTrue ( Quaternion < T > ( length : . zero , angle: . nan, axis: . nan ) . angle. isNaN)
79
+ XCTAssertEqual ( Quaternion < T > ( length : . zero , angle: . nan, axis: . nan ) , . zero)
80
80
// Zero/Inf
81
- XCTAssertTrue ( Quaternion < T > ( angle: . zero, axis: . infinity ) . axis. isNaN)
82
- XCTAssertTrue ( Quaternion < T > ( angle: . zero, axis: . infinity ) . angle. isNaN)
83
- XCTAssertEqual ( Quaternion < T > ( angle: . zero, axis: . infinity ) , . infinity)
81
+ XCTAssertTrue ( Quaternion < T > ( length : . infinity , angle: . zero, axis: . zero ) . axis. isNaN)
82
+ XCTAssertTrue ( Quaternion < T > ( length : . infinity , angle: . zero, axis: . zero ) . angle. isNaN)
83
+ XCTAssertEqual ( Quaternion < T > ( length : . infinity , angle: . zero, axis: . zero ) , . infinity)
84
84
// Inf/Inf
85
- XCTAssertTrue ( Quaternion < T > ( angle: . infinity, axis: . infinity) . axis. isNaN)
86
- XCTAssertTrue ( Quaternion < T > ( angle: . infinity, axis: . infinity) . angle. isNaN)
87
- XCTAssertEqual ( Quaternion < T > ( angle: . infinity, axis: . infinity) , . infinity)
85
+ XCTAssertTrue ( Quaternion < T > ( length : . infinity , angle: . infinity, axis: . infinity) . axis. isNaN)
86
+ XCTAssertTrue ( Quaternion < T > ( length : . infinity , angle: . infinity, axis: . infinity) . angle. isNaN)
87
+ XCTAssertEqual ( Quaternion < T > ( length : . infinity , angle: . infinity, axis: . infinity) , . infinity)
88
88
// -Inf/Inf
89
- XCTAssertTrue ( Quaternion < T > ( angle: - . infinity, axis: . infinity) . axis. isNaN)
90
- XCTAssertTrue ( Quaternion < T > ( angle: - . infinity, axis: . infinity) . angle. isNaN)
91
- XCTAssertEqual ( Quaternion < T > ( angle: - . infinity, axis: . infinity) , . infinity)
89
+ XCTAssertTrue ( Quaternion < T > ( length : . infinity , angle: - . infinity, axis: - . infinity) . axis. isNaN)
90
+ XCTAssertTrue ( Quaternion < T > ( length : . infinity , angle: - . infinity, axis: - . infinity) . angle. isNaN)
91
+ XCTAssertEqual ( Quaternion < T > ( length : . infinity , angle: - . infinity, axis: - . infinity) , . infinity)
92
92
// NaN/Inf
93
- XCTAssertTrue ( Quaternion < T > ( angle: . nan, axis: . infinity ) . axis. isNaN)
94
- XCTAssertTrue ( Quaternion < T > ( angle: . nan, axis: . infinity ) . angle. isNaN)
95
- XCTAssertEqual ( Quaternion < T > ( angle: . nan, axis: . infinity ) , . infinity)
93
+ XCTAssertTrue ( Quaternion < T > ( length : . infinity , angle: . nan, axis: . nan ) . axis. isNaN)
94
+ XCTAssertTrue ( Quaternion < T > ( length : . infinity , angle: . nan, axis: . nan ) . angle. isNaN)
95
+ XCTAssertEqual ( Quaternion < T > ( length : . infinity , angle: . nan, axis: . nan ) , . infinity)
96
96
// Zero/-Inf
97
- XCTAssertTrue ( Quaternion < T > ( angle: . zero, axis: - . infinity ) . axis. isNaN)
98
- XCTAssertTrue ( Quaternion < T > ( angle: . zero, axis: - . infinity ) . angle. isNaN)
99
- XCTAssertEqual ( Quaternion < T > ( angle: . zero, axis: - . infinity ) , . infinity)
97
+ XCTAssertTrue ( Quaternion < T > ( length : - . infinity , angle: . zero, axis: . zero ) . axis. isNaN)
98
+ XCTAssertTrue ( Quaternion < T > ( length : - . infinity , angle: . zero, axis: . zero ) . angle. isNaN)
99
+ XCTAssertEqual ( Quaternion < T > ( length : - . infinity , angle: . zero, axis: . zero ) , . infinity)
100
100
// Inf/-Inf
101
- XCTAssertTrue ( Quaternion < T > ( angle: . infinity, axis: - . infinity) . axis. isNaN)
102
- XCTAssertTrue ( Quaternion < T > ( angle: . infinity, axis: - . infinity) . angle. isNaN)
103
- XCTAssertEqual ( Quaternion < T > ( angle: . infinity, axis: - . infinity) , . infinity)
101
+ XCTAssertTrue ( Quaternion < T > ( length : - . infinity , angle: . infinity, axis: . infinity) . axis. isNaN)
102
+ XCTAssertTrue ( Quaternion < T > ( length : - . infinity , angle: . infinity, axis: . infinity) . angle. isNaN)
103
+ XCTAssertEqual ( Quaternion < T > ( length : - . infinity , angle: . infinity, axis: . infinity) , . infinity)
104
104
// -Inf/-Inf
105
- XCTAssertTrue ( Quaternion < T > ( angle: - . infinity, axis: - . infinity) . axis. isNaN)
106
- XCTAssertTrue ( Quaternion < T > ( angle: - . infinity, axis: - . infinity) . angle. isNaN)
107
- XCTAssertEqual ( Quaternion < T > ( angle: - . infinity, axis: - . infinity) , . infinity)
105
+ XCTAssertTrue ( Quaternion < T > ( length : - . infinity , angle: - . infinity, axis: - . infinity) . axis. isNaN)
106
+ XCTAssertTrue ( Quaternion < T > ( length : - . infinity , angle: - . infinity, axis: - . infinity) . angle. isNaN)
107
+ XCTAssertEqual ( Quaternion < T > ( length : - . infinity , angle: - . infinity, axis: - . infinity) , . infinity)
108
108
// NaN/-Inf
109
- XCTAssertTrue ( Quaternion < T > ( angle: . nan, axis: - . infinity ) . axis. isNaN)
110
- XCTAssertTrue ( Quaternion < T > ( angle: . nan, axis: - . infinity ) . angle. isNaN)
111
- XCTAssertEqual ( Quaternion < T > ( angle: . nan, axis: - . infinity ) , . infinity)
109
+ XCTAssertTrue ( Quaternion < T > ( length : - . infinity , angle: . nan, axis: . nan ) . axis. isNaN)
110
+ XCTAssertTrue ( Quaternion < T > ( length : - . infinity , angle: . nan, axis: . nan ) . angle. isNaN)
111
+ XCTAssertEqual ( Quaternion < T > ( length : - . infinity , angle: . nan, axis: . nan ) , . infinity)
112
112
}
113
113
114
114
func testAngleAxisEdgeCases( ) {
@@ -151,12 +151,12 @@ final class TransformationTests: XCTestCase {
151
151
func testPolarDecomposition< T: Real & SIMDScalar > ( _ type: T . Type ) {
152
152
let axis = SIMD3 < T > ( 0 , - 1 , 0 )
153
153
154
- let q = Quaternion < T > ( length: 5 , halfAngle : . pi, axis: axis)
154
+ let q = Quaternion < T > ( length: 5 , phase : . pi, axis: axis)
155
155
XCTAssertEqual ( q. axis, axis)
156
156
XCTAssertEqual ( q. angle, . pi * 2 )
157
157
158
158
XCTAssertEqual ( q. polar. length, 5 )
159
- XCTAssertEqual ( q. polar. halfAngle , . pi)
159
+ XCTAssertEqual ( q. polar. phase , . pi)
160
160
XCTAssertEqual ( q. polar. axis, axis)
161
161
}
162
162
@@ -166,15 +166,18 @@ final class TransformationTests: XCTestCase {
166
166
}
167
167
168
168
func testPolarDecompositionEdgeCases< T: Real & SIMDScalar > ( _ type: T . Type ) {
169
- XCTAssertEqual ( Quaternion < T > ( length: . zero, halfAngle: . infinity, axis: . infinity) , . zero)
170
- XCTAssertEqual ( Quaternion < T > ( length: . zero, halfAngle: - . infinity, axis: - . infinity) , . zero)
171
- XCTAssertEqual ( Quaternion < T > ( length: . zero, halfAngle: . nan , axis: . nan ) , . zero)
172
- XCTAssertEqual ( Quaternion < T > ( length: . infinity, halfAngle: . infinity, axis: . infinity) , . infinity)
173
- XCTAssertEqual ( Quaternion < T > ( length: . infinity, halfAngle: - . infinity, axis: - . infinity) , . infinity)
174
- XCTAssertEqual ( Quaternion < T > ( length: . infinity, halfAngle: . nan , axis: . infinity) , . infinity)
175
- XCTAssertEqual ( Quaternion < T > ( length: - . infinity, halfAngle: . infinity, axis: . infinity) , . infinity)
176
- XCTAssertEqual ( Quaternion < T > ( length: - . infinity, halfAngle: - . infinity, axis: - . infinity) , . infinity)
177
- XCTAssertEqual ( Quaternion < T > ( length: - . infinity, halfAngle: . nan , axis: . infinity) , . infinity)
169
+ XCTAssertEqual ( Quaternion < T > ( length: . zero, phase: . zero , axis: . zero ) , . zero)
170
+ XCTAssertEqual ( Quaternion < T > ( length: . zero, phase: . infinity, axis: . infinity) , . zero)
171
+ XCTAssertEqual ( Quaternion < T > ( length: . zero, phase: - . infinity, axis: - . infinity) , . zero)
172
+ XCTAssertEqual ( Quaternion < T > ( length: . zero, phase: . nan , axis: . nan ) , . zero)
173
+ XCTAssertEqual ( Quaternion < T > ( length: . infinity, phase: . zero , axis: . zero ) , . zero)
174
+ XCTAssertEqual ( Quaternion < T > ( length: . infinity, phase: . infinity, axis: . infinity) , . infinity)
175
+ XCTAssertEqual ( Quaternion < T > ( length: . infinity, phase: - . infinity, axis: - . infinity) , . infinity)
176
+ XCTAssertEqual ( Quaternion < T > ( length: . infinity, phase: . nan , axis: . infinity) , . infinity)
177
+ XCTAssertEqual ( Quaternion < T > ( length: - . infinity, phase: . zero , axis: . zero ) , . zero)
178
+ XCTAssertEqual ( Quaternion < T > ( length: - . infinity, phase: . infinity, axis: . infinity) , . infinity)
179
+ XCTAssertEqual ( Quaternion < T > ( length: - . infinity, phase: - . infinity, axis: - . infinity) , . infinity)
180
+ XCTAssertEqual ( Quaternion < T > ( length: - . infinity, phase: . nan , axis: . infinity) , . infinity)
178
181
}
179
182
180
183
func testPolarDecompositionEdgeCases( ) {
@@ -273,7 +276,7 @@ final class TransformationTests: XCTestCase {
273
276
// is rotate by a perpendicular axis with an angle that is a multiple of π
274
277
275
278
// An axis perpendicular to the vector, so all lanes are changing equally
276
- let axis = SIMD3 < T > ( 1 / 2 , 0 , - 1 / 2 )
279
+ let axis = SIMD3 < T > ( 1 , 0 , - 1 ) / . sqrt ( 2 )
277
280
// Create a value (somewhat) close to .greatestFiniteMagnitude
278
281
let scalar = T (
279
282
sign: . plus, exponent: T . greatestFiniteMagnitude. exponent,
0 commit comments