aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Spear/Math/Matrix3.hs28
-rw-r--r--Spear/Math/Matrix4.hs30
2 files changed, 57 insertions, 1 deletions
diff --git a/Spear/Math/Matrix3.hs b/Spear/Math/Matrix3.hs
index 06c06a2..b295cbd 100644
--- a/Spear/Math/Matrix3.hs
+++ b/Spear/Math/Matrix3.hs
@@ -11,7 +11,9 @@ module Spear.Math.Matrix3
11 -- * Construction 11 -- * Construction
12, mat3 12, mat3
13, mat3fromVec 13, mat3fromVec
14, transform 14, transform
15, translation
16, rotation
15, Spear.Math.Matrix3.id 17, Spear.Math.Matrix3.id
16 -- * Transformations 18 -- * Transformations
17 -- ** Translation 19 -- ** Translation
@@ -153,6 +155,30 @@ transform r f p = mat3
153 (V2.x r) (V2.x f) (V2.x p) 155 (V2.x r) (V2.x f) (V2.x p)
154 (V2.y r) (V2.y f) (V2.y p) 156 (V2.y r) (V2.y f) (V2.y p)
155 0 0 1 157 0 0 1
158
159
160-- | Get the translation part of the given transformation matrix.
161translation :: Matrix3 -> Matrix3
162translation (Matrix3
163 a00 a10 a20
164 a01 a11 a21
165 a02 a12 a22)
166 = mat3
167 1 0 a20
168 0 1 a21
169 0 0 a22
170
171
172-- | Get the rotation part of the given transformationmatrix.
173rotation :: Matrix3 -> Matrix3
174rotation (Matrix3
175 a00 a10 a20
176 a01 a11 a21
177 a02 a12 a22)
178 = mat3
179 a00 a10 0
180 a01 a11 0
181 a02 a12 1
156 182
157 183
158-- | Return the identity matrix. 184-- | Return the identity matrix.
diff --git a/Spear/Math/Matrix4.hs b/Spear/Math/Matrix4.hs
index 85ab39f..5c54aea 100644
--- a/Spear/Math/Matrix4.hs
+++ b/Spear/Math/Matrix4.hs
@@ -13,6 +13,8 @@ module Spear.Math.Matrix4
13, mat4 13, mat4
14, mat4fromVec 14, mat4fromVec
15, transform 15, transform
16, translation
17, rotation
16, lookAt 18, lookAt
17, Spear.Math.Matrix4.id 19, Spear.Math.Matrix4.id
18 -- * Transformations 20 -- * Transformations
@@ -186,6 +188,34 @@ transform right up fwd pos = mat4
186 0 0 0 1 188 0 0 0 1
187 189
188 190
191-- | Get the translation part of the given transformation matrix.
192translation :: Matrix4 -> Matrix4
193translation (Matrix4
194 a00 a10 a20 a30
195 a01 a11 a21 a31
196 a02 a12 a22 a32
197 a03 a13 a23 a33)
198 = mat4
199 1 0 0 a30
200 0 1 0 a31
201 0 0 1 a32
202 0 0 0 a33
203
204
205-- | Get the rotation part of the given transformation matrix.
206rotation :: Matrix4 -> Matrix4
207rotation (Matrix4
208 a00 a10 a20 a30
209 a01 a11 a21 a31
210 a02 a12 a22 a32
211 a03 a13 a23 a33)
212 = mat4
213 a00 a10 a20 0
214 a01 a11 a21 0
215 a02 a12 a22 0
216 a03 a13 a23 1
217
218
189-- | Build a transformation 'Matrix4' defined by the given position and target. 219-- | Build a transformation 'Matrix4' defined by the given position and target.
190lookAt :: Vector3 -- ^ Eye position. 220lookAt :: Vector3 -- ^ Eye position.
191 -> Vector3 -- ^ Target point. 221 -> Vector3 -- ^ Target point.