|
| 1 | +import math { tolerance } |
1 | 2 | import math.vec |
2 | 3 |
|
3 | 4 | fn test_vec4_int() { |
@@ -123,3 +124,28 @@ fn test_vec4_project_onto_zero() { |
123 | 124 | assert proj.z == 0.0 |
124 | 125 | assert proj.w == 0.0 |
125 | 126 | } |
| 127 | + |
| 128 | +// Test for perpendicularity |
| 129 | +// 'u' and 'v' are already perpendicular so it must return v |
| 130 | +fn test_vec4_perpendicularity_angle() { |
| 131 | + u := vec.vec4(1.0, 0.0, 0.0, 0.0) |
| 132 | + v := vec.vec4(0.0, 3.0, 2.0, 0.0) |
| 133 | + |
| 134 | + per := v.perpendicular(u) |
| 135 | + assert tolerance(per.x, v.x, vec.vec_epsilon) |
| 136 | + assert tolerance(per.y, v.y, vec.vec_epsilon) |
| 137 | + assert tolerance(per.z, v.z, vec.vec_epsilon) |
| 138 | + assert tolerance(per.w, v.w, vec.vec_epsilon) |
| 139 | +} |
| 140 | + |
| 141 | +// 'u' and 'v' are collinear so it must return the null vector |
| 142 | +fn test_vec4_collinear() { |
| 143 | + u := vec.vec4(1.0, 0.0, 0.0, 0.0) |
| 144 | + v := vec.vec4(3.0, 0.0, 0.0, 0.0) |
| 145 | + |
| 146 | + per := v.perpendicular(u) |
| 147 | + assert tolerance(per.x, 0.0, vec.vec_epsilon) |
| 148 | + assert tolerance(per.y, 0.0, vec.vec_epsilon) |
| 149 | + assert tolerance(per.z, 0.0, vec.vec_epsilon) |
| 150 | + assert tolerance(per.w, 0.0, vec.vec_epsilon) |
| 151 | +} |
0 commit comments