Column version of to_vec4s (to_vec4s_cols) for issue #32
This commit is contained in:
parent
6c49915112
commit
13cc666232
@ -665,7 +665,7 @@ function mat4.to_string(a)
|
||||
return str
|
||||
end
|
||||
|
||||
--- Convert a matrix to vec4s.
|
||||
--- Convert a matrix to row vec4s.
|
||||
-- @tparam mat4 a Matrix to be converted
|
||||
-- @treturn table vec4s
|
||||
function mat4.to_vec4s(a)
|
||||
@ -677,6 +677,18 @@ function mat4.to_vec4s(a)
|
||||
}
|
||||
end
|
||||
|
||||
--- Convert a matrix to col vec4s.
|
||||
-- @tparam mat4 a Matrix to be converted
|
||||
-- @treturn table vec4s
|
||||
function mat4.to_vec4s_cols(a)
|
||||
return {
|
||||
{ a[1], a[5], a[9], a[13] },
|
||||
{ a[2], a[6], a[10], a[14] },
|
||||
{ a[3], a[7], a[11], a[15] },
|
||||
{ a[4], a[8], a[12], a[16] }
|
||||
}
|
||||
end
|
||||
|
||||
-- http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/
|
||||
--- Convert a matrix to a quaternion.
|
||||
-- @tparam mat4 a Matrix to be converted
|
||||
|
@ -322,7 +322,12 @@ describe("mat4:", function()
|
||||
end)
|
||||
|
||||
it("converts a matrix to vec4s", function()
|
||||
local a = mat4()
|
||||
local a = mat4 {
|
||||
1, 2, 3, 4,
|
||||
5, 6, 7, 8,
|
||||
9, 10, 11, 12,
|
||||
13, 14, 15, 16
|
||||
}
|
||||
local v = a:to_vec4s()
|
||||
assert.is_true(type(v) == "table")
|
||||
assert.is_true(type(v[1]) == "table")
|
||||
@ -330,25 +335,60 @@ describe("mat4:", function()
|
||||
assert.is_true(type(v[3]) == "table")
|
||||
assert.is_true(type(v[4]) == "table")
|
||||
|
||||
assert.is.equal(1, v[1][1])
|
||||
assert.is.equal(0, v[1][2])
|
||||
assert.is.equal(0, v[1][3])
|
||||
assert.is.equal(0, v[1][4])
|
||||
assert.is.equal(1, v[1][1])
|
||||
assert.is.equal(2, v[1][2])
|
||||
assert.is.equal(3, v[1][3])
|
||||
assert.is.equal(4, v[1][4])
|
||||
|
||||
assert.is.equal(0, v[2][1])
|
||||
assert.is.equal(1, v[2][2])
|
||||
assert.is.equal(0, v[2][3])
|
||||
assert.is.equal(0, v[2][4])
|
||||
assert.is.equal(5, v[2][1])
|
||||
assert.is.equal(6, v[2][2])
|
||||
assert.is.equal(7, v[2][3])
|
||||
assert.is.equal(8, v[2][4])
|
||||
|
||||
assert.is.equal(0, v[3][1])
|
||||
assert.is.equal(0, v[3][2])
|
||||
assert.is.equal(1, v[3][3])
|
||||
assert.is.equal(0, v[3][4])
|
||||
assert.is.equal(9, v[3][1])
|
||||
assert.is.equal(10, v[3][2])
|
||||
assert.is.equal(11, v[3][3])
|
||||
assert.is.equal(12, v[3][4])
|
||||
|
||||
assert.is.equal(0, v[4][1])
|
||||
assert.is.equal(0, v[4][2])
|
||||
assert.is.equal(0, v[4][3])
|
||||
assert.is.equal(1, v[4][4])
|
||||
assert.is.equal(13, v[4][1])
|
||||
assert.is.equal(14, v[4][2])
|
||||
assert.is.equal(15, v[4][3])
|
||||
assert.is.equal(16, v[4][4])
|
||||
end)
|
||||
|
||||
it("converts a matrix to vec4s, column-wise", function()
|
||||
local a = mat4 {
|
||||
1, 2, 3, 4,
|
||||
5, 6, 7, 8,
|
||||
9, 10, 11, 12,
|
||||
13, 14, 15, 16
|
||||
}
|
||||
local v = a:to_vec4s_cols()
|
||||
assert.is_true(type(v) == "table")
|
||||
assert.is_true(type(v[1]) == "table")
|
||||
assert.is_true(type(v[2]) == "table")
|
||||
assert.is_true(type(v[3]) == "table")
|
||||
assert.is_true(type(v[4]) == "table")
|
||||
|
||||
assert.is.equal(1, v[1][1])
|
||||
assert.is.equal(5, v[1][2])
|
||||
assert.is.equal(9, v[1][3])
|
||||
assert.is.equal(13, v[1][4])
|
||||
|
||||
assert.is.equal(2, v[2][1])
|
||||
assert.is.equal(6, v[2][2])
|
||||
assert.is.equal(10, v[2][3])
|
||||
assert.is.equal(14, v[2][4])
|
||||
|
||||
assert.is.equal(3, v[3][1])
|
||||
assert.is.equal(7, v[3][2])
|
||||
assert.is.equal(11, v[3][3])
|
||||
assert.is.equal(15, v[3][4])
|
||||
|
||||
assert.is.equal(4, v[4][1])
|
||||
assert.is.equal(8, v[4][2])
|
||||
assert.is.equal(12, v[4][3])
|
||||
assert.is.equal(16, v[4][4])
|
||||
end)
|
||||
|
||||
it("converts a matrix to a quaternion", function()
|
||||
|
Loading…
x
Reference in New Issue
Block a user