-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathintersections.test.js
57 lines (51 loc) · 1.49 KB
/
intersections.test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import { hit, intersection, intersections } from './intersection.js';
import { sphere } from './sphere.js';
test('An intersection encapsulates t and object', () => {
let s = sphere();
let i = intersection(3.5, s);
expect(i.t).toBe(3.5);
expect(i.obj).toEqual(s);
});
test('Aggregating intersections', () => {
let s = sphere();
let i1 = intersection(1, s);
let i2 = intersection(2, s);
let xs = intersections(i1, i2);
expect(xs.length).toBe(2);
expect(xs[0].obj).toEqual(s);
expect(xs[1].obj).toEqual(s);
});
test('The hit, when all intersections have positive t', () => {
let s = sphere();
let i1 = intersection(1, s);
let i2 = intersection(2, s);
let xs = intersections(i2, i1);
let i = hit(xs);
expect(i).toEqual(i1);
});
test('The hit, whne some interactions have negative t', () => {
let s = sphere();
let i1 = intersection(-1, s);
let i2 = intersection(1, s);
let xs = intersections(i2, i1);
let i = hit(xs);
expect(i).toEqual(i2);
});
test('The hit, when all intersections have negative t', () => {
let s = sphere();
let i1 = intersection(-2, s);
let i2 = intersection(-1, s);
let xs = intersections(i2, i1);
let i = hit(xs);
expect(i).toBeUndefined;
});
test('The hit is always the lowest nonnegative intersection', () => {
let s = sphere();
let i1 = intersection(5, s);
let i2 = intersection(7, s);
let i3 = intersection(-3, s);
let i4 = intersection(2, s);
let xs = intersections(i1, i2, i3, i4);
let i = hit(xs);
expect(i).toEqual(i4);
});