- Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathmathtest.lua
More file actions
Latest commit
102 lines (90 loc) · 4.25 KB
/
Copy pathmathtest.lua
File metadata and controls
102 lines (90 loc) · 4.25 KB
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
localfunctioncreate_plane2d_example1()
returncreatePlane2D(
3, 4,
0, 2,
2, -1
), createPlane2D(
1, 2,
7, -1,
1, 6
);
end
localfunctioncreate_plane2d_example2()
returncreatePlane2D(
2, 2,
1, 5,
2, 0
), createPlane2D(
1, 5,
0, 2,
5, -4
);
end
localfunctionnum_equal(a, b)
return ( math.abs(a-b) <0.001 );
end
addCommandHandler("plane_test1",
function()
localp1, p2=create_plane2d_example1();
localu_inter, v_inter=p1.intersectPlane2D(p2, true);
-- Checking values from my math paper where I calculated by hand.
assert( #u_inter==3 );
assert( #v_inter==3 );
assert( num_equal( u_inter[1].interval.min, ( 22/86 ) ) );
assert( num_equal( u_inter[1].interval.max, ( 32/86 ) ) );
assert( num_equal( u_inter[1].min_poly.getOffset(), ( 6/5 ) ) );
assert( num_equal( u_inter[1].min_poly.getRise(), ( -13/5 ) ) );
assert( num_equal( u_inter[1].max_poly.getOffset(), ( 4/7 ) ) );
assert( num_equal( u_inter[1].max_poly.getRise(), ( -1/7 ) ) );
assert( num_equal( u_inter[2].interval.min, ( 32/86 ) ) );
assert( num_equal( u_inter[2].interval.max, ( 50/86 ) ) );
assert( num_equal( u_inter[2].min_poly.getOffset(), ( 2/7 ) ) );
assert( num_equal( u_inter[2].min_poly.getRise(), ( -1/7 ) ) );
assert( num_equal( u_inter[2].max_poly.getOffset(), ( 4/7 ) ) );
assert( num_equal( u_inter[2].max_poly.getRise(), ( -1/7 ) ) );
assert( num_equal( u_inter[3].interval.min, ( 50/86 ) ) );
assert( num_equal( u_inter[3].interval.max, ( 60/86 ) ) );
assert( num_equal( u_inter[3].min_poly.getOffset(), ( 2/7 ) ) );
assert( num_equal( u_inter[3].min_poly.getRise(), ( -1/7 ) ) );
assert( num_equal( u_inter[3].max_poly.getOffset(), 2 ) );
assert( num_equal( u_inter[3].max_poly.getRise(), ( -13/5 ) ) );
-- TODO: check the intervals and polynomes for v2 aswell.
end
);
addCommandHandler("plane_test2",
function()
-- Note: I calculated it the other way round on the math paper, determining
-- polynomes in u1/v1, so the planes have been flipped here.
localp1, p2=create_plane2d_example2();
localu_inter, v_inter=p1.intersectPlane2D( p2, true );
assert( #u_inter==3 );
assert( #v_inter==1 );
-- Check properties of u2.
assert( num_equal( u_inter[1].interval.min, ( 8/29 ) ) );
assert( num_equal( u_inter[1].interval.max, ( 10/29 ) ) );
assert( num_equal( u_inter[1].min_poly.getOffset(), 0 ) );
assert( num_equal( u_inter[1].min_poly.getRise(), 0 ) );
assert( num_equal( u_inter[1].max_poly.getOffset(), -4 ) );
assert( num_equal( u_inter[1].max_poly.getRise(), ( 29/2 ) ) );
assert( num_equal( u_inter[2].interval.min, ( 10/29 ) ) );
assert( num_equal( u_inter[2].interval.max, ( 18/29 ) ) );
assert( num_equal( u_inter[2].min_poly.getOffset(), 0 ) );
assert( num_equal( u_inter[2].min_poly.getRise(), 0 ) );
assert( num_equal( u_inter[2].max_poly.getOffset(), 1 ) );
assert( num_equal( u_inter[2].max_poly.getRise(), 0 ) );
assert( num_equal( u_inter[3].interval.min, ( 18/29 ) ) );
assert( num_equal( u_inter[3].interval.max, ( 20/29 ) ) );
assert( num_equal( u_inter[3].min_poly.getOffset(), -9 ) );
assert( num_equal( u_inter[3].min_poly.getRise(), ( 29/2 ) ) );
assert( num_equal( u_inter[3].max_poly.getOffset(), 1 ) );
assert( num_equal( u_inter[3].max_poly.getRise(), 0 ) );
-- Check properties of v2.
assert( num_equal( v_inter[1].interval.min, 0 ) );
assert( num_equal( v_inter[1].interval.max, 1 ) );
assert( num_equal( v_inter[1].min_poly.getOffset(), ( 8/29 ) ) );
assert( num_equal( v_inter[1].min_poly.getRise(), ( 2/29 ) ) );
assert( num_equal( v_inter[1].max_poly.getOffset(), ( 18/29 ) ) );
assert( num_equal( v_inter[1].max_poly.getRise(), ( 2/29 ) ) );
end
);
-- TODO: add example tests for triangle plane, circle plane.