Skip to content

Commit 1211a4d

Browse files
committed
Fix
1 parent 18e5ffe commit 1211a4d

File tree

2 files changed

+29
-16
lines changed

2 files changed

+29
-16
lines changed

spec/crystaledge_spec.cr

+25-8
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ alias Q = CrystalEdge::Quaternion
77
alias M3 = CrystalEdge::Matrix3
88
alias M4 = CrystalEdge::Matrix4
99

10-
describe CrystalEdge do
11-
it "passes Vector2 tests" do
10+
describe CrystalEdge::Vector2 do
11+
it "works" do
1212
vec1 = V2.new(1.0, 2.0)
1313
vec2 = V2.new(3.0, 4.0)
1414
vsum = V2.new(4.0, 6.0)
@@ -34,8 +34,10 @@ describe CrystalEdge do
3434
vec1.should eq(V2.new(42.0, 0.0))
3535
vec1.normalize.magnitude.should eq(1.0)
3636
end
37+
end
3738

38-
it "passes Vector3 tests" do
39+
describe CrystalEdge::Vector3 do
40+
it "works" do
3941
vec1 = V3.zero
4042
vec2 = V3.new(3.0, 4.0, 0.0)
4143
(vec1 == vec2).should eq(false)
@@ -64,7 +66,9 @@ describe CrystalEdge do
6466
vec5.should eq(V3.new(42.0, 0.0, 0.0))
6567
vec5.normalize.magnitude.should eq(1.0)
6668
end
69+
end
6770

71+
describe CrystalEdge::Vector4 do
6872
it "passes Vector4 tests" do
6973
vec1 = V4.zero
7074
vec2 = V4.new(1.0, 2.0, 3.0, 4.0)
@@ -83,32 +87,43 @@ describe CrystalEdge do
8387
vec1.should eq(V4.new(42.0, 0.0, 0.0, 0.0))
8488
vec1.normalize.magnitude.should eq(1.0)
8589
end
90+
end
8691

87-
it "passes Quaternion tests" do
92+
describe CrystalEdge::Quaternion do
93+
it "works" do
8894
q1 = Q.new(1.0, 1.0, 1.0, 1.0)
8995
q2 = Q.new(-1.0, -1.0, -1.0, 1.0)
9096
q3 = Q.new(1.0, 1.0, 1.0, -1.0)
9197
q1.conjugate.should eq(q2)
9298
(-(q1.conjugate)).should eq(q3)
9399
(q2 + q3).should eq(Q.zero)
94100
end
101+
end
95102

96-
it "passes Matrix3 tests" do
103+
describe CrystalEdge::Matrix3 do
104+
it "works" do
97105
m0 = M3.new { |i| 0.0 }
98106
m1 = M3.new { |i| i.to_f }
99107
m2 = M3.new { |i| 2.0*i }
100108

101-
(m1 == m2).should eq(false)
109+
m1.should_not eq(m2)
102110
(m1 != m2).should eq(true)
103-
(m0 == m0).should eq(true)
111+
m0.should eq(m0)
104112
(m0 + m1).should eq(m1)
105113
(m1*2.0).should eq(m2)
106114

107115
m0.make_translation!(V2.new(0.0, 1.0))
108116
m0[1, 2].should eq(1.0)
117+
118+
m3 = M3.new(StaticArray(Float64, 9).new(0.0))
119+
m4 = M3.new(StaticArray(Float64, 9).new(0.0))
120+
m4[8] = 1.0
121+
m3.should_not eq(m4)
109122
end
123+
end
110124

111-
it "passes Matrix4 tests" do
125+
describe CrystalEdge::Matrix4 do
126+
it "works" do
112127
m0 = M4.new { |i| 0.0 }
113128
m1 = M4.new { |i| i.to_f }
114129
m2 = M4.new { |i| 2.0*i }
@@ -119,7 +134,9 @@ describe CrystalEdge do
119134
(m0 + m1).should eq(m1)
120135
(m1*2.0).should eq(m2)
121136
end
137+
end
122138

139+
describe CrystalEdge do
123140
it "converts Quaternion and Euler angles" do
124141
ea = V3.new(1.0, 2.0, Math::PI)
125142
q = Q.from_euler(ea)

src/crystaledge/matrix.cr

+4-8
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
macro matrix(size, type)
22
@matrix : {{type}}[{{size*size}}]
33

4+
getter matrix
5+
46
def initialize(elems : {{type}}[{{size*size}}])
57
@matrix = elems
68
end
@@ -70,17 +72,11 @@ end
7072
module CrystalEdge
7173
module Matrix
7274
def ==(other : typeof(self))
73-
0.upto(size - 1) { |i|
74-
return false unless other[i] == self[i]
75-
}
76-
true
75+
self.matrix == other.matrix
7776
end
7877

7978
def !=(other : typeof(self))
80-
(size*size - 1).times { |i|
81-
return true unless other[i] == self[i]
82-
}
83-
false
79+
self.matrix != other.matrix
8480
end
8581

8682
def +(other : typeof(self))

0 commit comments

Comments
 (0)