mirror of
https://github.com/MihailRis/voxelcore.git
synced 2026-10-04 18:41:51 +00:00
fix maths_inline version of mat4.rotate
This commit is contained in:
parent
45c78609b8
commit
87310dd38f
1 changed files with 32 additions and 29 deletions
|
|
@ -276,11 +276,9 @@ function mat4.rotate(...)
|
|||
|
||||
angle = rad(angle)
|
||||
|
||||
local x = axis[1]
|
||||
local y = axis[2]
|
||||
local z = axis[3]
|
||||
local x, y, z = axis[1], axis[2], axis[3]
|
||||
|
||||
local len = sqrt(x*x + y*y + z*z)
|
||||
local len = sqrt(x * x + y * y + z * z)
|
||||
if len == 0 then
|
||||
error("rotation axis has zero length")
|
||||
end
|
||||
|
|
@ -293,39 +291,44 @@ function mat4.rotate(...)
|
|||
local s = sin(angle)
|
||||
local t = 1 - c
|
||||
|
||||
local r00 = t*x*x + c
|
||||
local r01 = t*x*y - s*z
|
||||
local r02 = t*x*z + s*y
|
||||
local r00 = t * x * x + c
|
||||
local r01 = t * x * y - s * z
|
||||
local r02 = t * x * z + s * y
|
||||
|
||||
local r10 = t*x*y + s*z
|
||||
local r11 = t*y*y + c
|
||||
local r12 = t*y*z - s*x
|
||||
local r10 = t * x * y + s * z
|
||||
local r11 = t * y * y + c
|
||||
local r12 = t * y * z - s * x
|
||||
|
||||
local r20 = t*x*z - s*y
|
||||
local r21 = t*y*z + s*x
|
||||
local r22 = t*z*z + c
|
||||
local r20 = t * x * z - s * y
|
||||
local r21 = t * y * z + s * x
|
||||
local r22 = t * z * z + c
|
||||
|
||||
local out = dst or {}
|
||||
|
||||
out[1] = matrix[1]*r00 + matrix[5]*r10 + matrix[9]*r20
|
||||
out[2] = matrix[2]*r00 + matrix[6]*r10 + matrix[10]*r20
|
||||
out[3] = matrix[3]*r00 + matrix[7]*r10 + matrix[11]*r20
|
||||
out[4] = matrix[4]*r00 + matrix[8]*r10 + matrix[12]*r20
|
||||
local m1, m2, m3, m4 = matrix[1], matrix[2], matrix[3], matrix[4]
|
||||
local m5, m6, m7, m8 = matrix[5], matrix[6], matrix[7], matrix[8]
|
||||
local m9, m10, m11, m12 = matrix[9], matrix[10], matrix[11], matrix[12]
|
||||
local m13, m14, m15, m16 = matrix[13], matrix[14], matrix[15], matrix[16]
|
||||
|
||||
out[5] = matrix[1]*r01 + matrix[5]*r11 + matrix[9]*r21
|
||||
out[6] = matrix[2]*r01 + matrix[6]*r11 + matrix[10]*r21
|
||||
out[7] = matrix[3]*r01 + matrix[7]*r11 + matrix[11]*r21
|
||||
out[8] = matrix[4]*r01 + matrix[8]*r11 + matrix[12]*r21
|
||||
out[1] = m1 * r00 + m5 * r10 + m9 * r20
|
||||
out[2] = m2 * r00 + m6 * r10 + m10 * r20
|
||||
out[3] = m3 * r00 + m7 * r10 + m11 * r20
|
||||
out[4] = m4 * r00 + m8 * r10 + m12 * r20
|
||||
|
||||
out[9] = matrix[1]*r02 + matrix[5]*r12 + matrix[9]*r22
|
||||
out[10] = matrix[2]*r02 + matrix[6]*r12 + matrix[10]*r22
|
||||
out[11] = matrix[3]*r02 + matrix[7]*r12 + matrix[11]*r22
|
||||
out[12] = matrix[4]*r02 + matrix[8]*r12 + matrix[12]*r22
|
||||
out[5] = m1 * r01 + m5 * r11 + m9 * r21
|
||||
out[6] = m2 * r01 + m6 * r11 + m10 * r21
|
||||
out[7] = m3 * r01 + m7 * r11 + m11 * r21
|
||||
out[8] = m4 * r01 + m8 * r11 + m12 * r21
|
||||
|
||||
out[13] = matrix[13]
|
||||
out[14] = matrix[14]
|
||||
out[15] = matrix[15]
|
||||
out[16] = matrix[16]
|
||||
out[9] = m1 * r02 + m5 * r12 + m9 * r22
|
||||
out[10] = m2 * r02 + m6 * r12 + m10 * r22
|
||||
out[11] = m3 * r02 + m7 * r12 + m11 * r22
|
||||
out[12] = m4 * r02 + m8 * r12 + m12 * r22
|
||||
|
||||
out[13] = m13
|
||||
out[14] = m14
|
||||
out[15] = m15
|
||||
out[16] = m16
|
||||
|
||||
return out
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue