forked from carp-lang/Carp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
vectorn.carp
84 lines (81 loc) · 3.14 KB
/
vectorn.carp
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
(Debug.sanitize-addresses)
(load "Test.carp")
(load "Vector.carp")
(load "Geometry.carp")
(use-all Test VectorN Geometry Double)
(deftest test
(assert-equal test
&(init 4 [0.0 0.0 0.0 0.0]) &(zero-sized 4)
"zero-sized works")
(assert-equal test
&(init 4 [1.0 2.0 3.0 4.0]) &(init 4 [1.0 2.0 3.0 4.0])
"= operator works")
(assert-op test
&(init 4 [1.0 2.0 3.0 4.0]) &(init 4 [1.0 1.0 3.0 4.0])
"/= operator works"
/=)
(assert-equal test
&(init 3 [3.0 3.0 4.5])
&(Maybe.unsafe-from
(add &(init 3 [2.0 1.0 2.0]) &(init 3 [1.0 2.0 2.5])))
"add operator works")
(assert-nothing test
&(add &(init 1 [2.0]) &(init 2 [1.0 2.0]))
"add operator works on wrong magnitudes")
(assert-equal test
&(init 3 [1.0 -1.0 -1.5])
&(Maybe.unsafe-from
(sub &(init 3 [2.0 1.0 2.0]) &(init 3 [1.0 2.0 3.5])))
"sub operator works")
(assert-nothing test
&(sub &(init 1 [2.0]) &(init 2 [1.0 2.0]))
"sub operator works on wrong magnitudes")
(assert-equal test
&(init 3 [4.0 2.0 2.2])
&(mul &(init 3 [2.0 1.0 1.1]) 2.0)
"mul operator works")
(assert-equal test
&(init 3 [1.0 0.5 0.25])
&(div &(init 3 [2.0 1.0 0.5]) 2.0)
"div operator works")
(assert-equal test
5.0
(mag &(init 3 [3.0 4.0 0.0]))
"mag works")
(assert-equal test
101.0
(mag-sq &(init 3 [10.0 1.0 0.0]))
"mag-sq works")
(assert-equal test
&(init 3 [0.6 0.8 0.0])
&(normalize &(init 3 [3.0 4.0 0.0]))
"normalize works")
(assert-op test
90.0
(radians-to-degree
(Maybe.unsafe-from (angle-between &(init 3 [1.0 0.0 0.0])
&(init 3 [0.0 1.0 0.0]))))
"angle-between works"
Double.approx)
(assert-true test
(Maybe.unsafe-from (anti-parallel? &(init 4 [1.0 0.0 0.0 0.0])
&(init 4 [-1.0 0.0 0.0 0.0])))
"anti-parallel? works")
(assert-true test
(Maybe.unsafe-from (parallel? &(init 4 [1.0 0.0 0.0 0.0])
&(init 4 [1.0 0.0 0.0 0.0])))
"parallel? works")
(assert-true test
(Maybe.unsafe-from (perpendicular? &(init 4 [1.0 0.0 0.0 0.0])
&(init 4 [0.0 0.0 1.0 0.0])))
"perpendicular? works")
(assert-equal test
53.0
(Maybe.unsafe-from (dot &(init 3 [10.0 2.0 3.0])
&(init 3 [2.0 12.0 3.0])))
"dot works")
(assert-equal test
&(init 1 [2.0])
&(Maybe.unsafe-from (vlerp &(init 1 [0.0]) &(init 1 [5.0]) 0.4))
"vlerp works")
)