| 222 | } |
| 223 | |
| 224 | func TestVectorAngle(t *testing.T) { |
| 225 | tests := []struct { |
| 226 | v1, v2 Vector |
| 227 | want float64 // radians |
| 228 | }{ |
| 229 | {Vector{1, 0, 0}, Vector{1, 0, 0}, 0}, |
| 230 | {Vector{1, 0, 0}, Vector{0, 1, 0}, math.Pi / 2}, |
| 231 | {Vector{1, 0, 0}, Vector{0, 1, 1}, math.Pi / 2}, |
| 232 | {Vector{1, 0, 0}, Vector{-1, 0, 0}, math.Pi}, |
| 233 | {Vector{1, 2, 3}, Vector{2, 3, -1}, 1.2055891055045298}, |
| 234 | } |
| 235 | for _, test := range tests { |
| 236 | if a := test.v1.Angle(test.v2).Radians(); !float64Eq(a, test.want) { |
| 237 | t.Errorf("%v.Angle(%v) = %v, want %v", test.v1, test.v2, a, test.want) |
| 238 | } |
| 239 | if a := test.v2.Angle(test.v1).Radians(); !float64Eq(a, test.want) { |
| 240 | t.Errorf("%v.Angle(%v) = %v, want %v", test.v2, test.v1, a, test.want) |
| 241 | } |
| 242 | } |
| 243 | } |
| 244 | |
| 245 | func TestVectorOrtho(t *testing.T) { |
| 246 | vectors := []Vector{ |