Fix Quaternion → Matrix conversion
This commit is contained in:
@@ -75,9 +75,9 @@ pub const Matrix4x4 = extern struct {
|
||||
|
||||
return .{
|
||||
// zig fmt: off
|
||||
.ix = 1 - 2 * (yy + zz), .iy = 2 * (xy - zw), .iz = 2 * (xz + yw), .iw = 0,
|
||||
.jx = 2 * (xy + zw), .jy = 1 - 2 * (xx + zz), .jz = 2 * (yz - xw), .jw = 0,
|
||||
.kx = 2 * (xz - yw), .ky = 2 * (yz + xw), .kz = 1 - 2 * (xx + yy), .kw = 0,
|
||||
.ix = 1 - 2 * (yy + zz), .iy = 2 * (xy + zw), .iz = 2 * (xz - yw), .iw = 0,
|
||||
.jx = 2 * (xy - zw), .jy = 1 - 2 * (xx + zz), .jz = 2 * (yz + xw), .jw = 0,
|
||||
.kx = 2 * (xz + yw), .ky = 2 * (yz - xw), .kz = 1 - 2 * (xx + yy), .kw = 0,
|
||||
.tx = 0, .ty = 0, .tz = 0, .tw = 1,
|
||||
// zig fmt: on
|
||||
};
|
||||
@@ -121,9 +121,9 @@ pub const Matrix4x4 = extern struct {
|
||||
|
||||
return .{
|
||||
// zig fmt: off
|
||||
.ix = 1 - 2 * (yy + zz), .iy = 2 * (xy - zw), .iz = 2 * (xz + yw), .iw = 0,
|
||||
.jx = 2 * (xy + zw), .jy = 1 - 2 * (xx + zz), .jz = 2 * (yz - xw), .jw = 0,
|
||||
.kx = 2 * (xz - yw), .ky = 2 * (yz + xw), .kz = 1 - 2 * (xx + yy), .kw = 0,
|
||||
.ix = 1 - 2 * (yy + zz), .iy = 2 * (xy + zw), .iz = 2 * (xz - yw), .iw = 0,
|
||||
.jx = 2 * (xy - zw), .jy = 1 - 2 * (xx + zz), .jz = 2 * (yz + xw), .jw = 0,
|
||||
.kx = 2 * (xz + yw), .ky = 2 * (yz - xw), .kz = 1 - 2 * (xx + yy), .kw = 0,
|
||||
.tx = t.x, .ty = t.y, .tz = t.z, .tw = 1,
|
||||
// zig fmt: on
|
||||
};
|
||||
@@ -153,9 +153,9 @@ pub const Matrix4x4 = extern struct {
|
||||
|
||||
return .{
|
||||
// zig fmt: off
|
||||
.ix = s.x * (1 - 2 * (yy + zz)), .iy = s.x * 2 * (xy - zw), .iz = s.x * 2 * (xz + yw), .iw = 0,
|
||||
.jx = s.y * 2 * (xy + zw), .jy = s.y * (1 - 2 * (xx + zz)), .jz = s.y * 2 * (yz - xw), .jw = 0,
|
||||
.kx = s.z * 2 * (xz - yw), .ky = s.z * 2 * (yz + xw), .kz = s.z * (1 - 2 * (xx + yy)), .kw = 0,
|
||||
.ix = s.x * (1 - 2 * (yy + zz)), .iy = s.x * 2 * (xy + zw), .iz = s.x * 2 * (xz - yw), .iw = 0,
|
||||
.jx = s.y * 2 * (xy - zw), .jy = s.y * (1 - 2 * (xx + zz)), .jz = s.y * 2 * (yz + xw), .jw = 0,
|
||||
.kx = s.z * 2 * (xz + yw), .ky = s.z * 2 * (yz - xw), .kz = s.z * (1 - 2 * (xx + yy)), .kw = 0,
|
||||
.tx = t.x, .ty = t.y, .tz = t.z, .tw = 1,
|
||||
// zig fmt: on
|
||||
};
|
||||
|
||||
@@ -113,9 +113,9 @@ pub const Matrix4x4x8 = extern struct {
|
||||
|
||||
return .{
|
||||
// zig fmt: off
|
||||
.ix = vm.ps(1) - vm.ps(2) * (yy + zz), .iy = vm.ps(2) * (xy - zw), .iz = vm.ps(2) * (xz + yw), .iw = vm.ps(0),
|
||||
.jx = vm.ps(2) * (xy + zw), .jy = vm.ps(1) - vm.ps(2) * (xx + zz), .jz = vm.ps(2) * (yz - xw), .jw = vm.ps(0),
|
||||
.kx = vm.ps(2) * (xz - yw), .ky = vm.ps(2) * (yz + xw), .kz = vm.ps(1) - vm.ps(2) * (xx + yy), .kw = vm.ps(0),
|
||||
.ix = vm.ps(1) - vm.ps(2) * (yy + zz), .iy = vm.ps(2) * (xy + zw), .iz = vm.ps(2) * (xz - yw), .iw = vm.ps(0),
|
||||
.jx = vm.ps(2) * (xy - zw), .jy = vm.ps(1) - vm.ps(2) * (xx + zz), .jz = vm.ps(2) * (yz + xw), .jw = vm.ps(0),
|
||||
.kx = vm.ps(2) * (xz + yw), .ky = vm.ps(2) * (yz - xw), .kz = vm.ps(1) - vm.ps(2) * (xx + yy), .kw = vm.ps(0),
|
||||
.tx = vm.ps(0), .ty = vm.ps(0), .tz = vm.ps(0), .tw = vm.ps(1),
|
||||
// zig fmt: on
|
||||
};
|
||||
@@ -134,9 +134,9 @@ pub const Matrix4x4x8 = extern struct {
|
||||
|
||||
return .{
|
||||
// zig fmt: off
|
||||
.ix = vm.ps(1 - 2 * (yy + zz)), .iy = vm.ps(2 * (xy - zw)), .iz = vm.ps(2 * (xz + yw)), .iw = vm.ps(0),
|
||||
.jx = vm.ps(2 * (xy + zw)), .jy = vm.ps(1 - 2 * (xx + zz)), .jz = vm.ps(2 * (yz - xw)), .jw = vm.ps(0),
|
||||
.kx = vm.ps(2 * (xz - yw)), .ky = vm.ps(2 * (yz + xw)), .kz = vm.ps(1 - 2 * (xx + yy)), .kw = vm.ps(0),
|
||||
.ix = vm.ps(1 - 2 * (yy + zz)), .iy = vm.ps(2 * (xy + zw)), .iz = vm.ps(2 * (xz - yw)), .iw = vm.ps(0),
|
||||
.jx = vm.ps(2 * (xy - zw)), .jy = vm.ps(1 - 2 * (xx + zz)), .jz = vm.ps(2 * (yz + xw)), .jw = vm.ps(0),
|
||||
.kx = vm.ps(2 * (xz + yw)), .ky = vm.ps(2 * (yz - xw)), .kz = vm.ps(1 - 2 * (xx + yy)), .kw = vm.ps(0),
|
||||
.tx = vm.ps(0), .ty = vm.ps(0), .tz = vm.ps(0), .tw = vm.ps(1),
|
||||
// zig fmt: on
|
||||
};
|
||||
@@ -177,9 +177,9 @@ pub const Matrix4x4x8 = extern struct {
|
||||
|
||||
return .{
|
||||
// zig fmt: off
|
||||
.ix = vm.ps(1) - vm.ps(2) * (yy + zz), .iy = vm.ps(2) * (xy - zw), .iz = vm.ps(2) * (xz + yw), .iw = vm.ps(0),
|
||||
.jx = vm.ps(2) * (xy + zw), .jy = vm.ps(1) - vm.ps(2) * (xx + zz), .jz = vm.ps(2) * (yz - xw), .jw = vm.ps(0),
|
||||
.kx = vm.ps(2) * (xz - yw), .ky = vm.ps(2) * (yz + xw), .kz = vm.ps(1) - vm.ps(2) * (xx + yy), .kw = vm.ps(0),
|
||||
.ix = vm.ps(1) - vm.ps(2) * (yy + zz), .iy = vm.ps(2) * (xy + zw), .iz = vm.ps(2) * (xz - yw), .iw = vm.ps(0),
|
||||
.jx = vm.ps(2) * (xy - zw), .jy = vm.ps(1) - vm.ps(2) * (xx + zz), .jz = vm.ps(2) * (yz + xw), .jw = vm.ps(0),
|
||||
.kx = vm.ps(2) * (xz + yw), .ky = vm.ps(2) * (yz - xw), .kz = vm.ps(1) - vm.ps(2) * (xx + yy), .kw = vm.ps(0),
|
||||
.tx = t.x, .ty = t.y, .tz = t.z, .tw = vm.ps(1),
|
||||
// zig fmt: on
|
||||
};
|
||||
@@ -198,9 +198,9 @@ pub const Matrix4x4x8 = extern struct {
|
||||
|
||||
return .{
|
||||
// zig fmt: off
|
||||
.ix = vm.ps(1 - 2 * (yy + zz)), .iy = vm.ps(2 * (xy - zw)), .iz = vm.ps(2 * (xz + yw)), .iw = vm.ps(0),
|
||||
.jx = vm.ps(2 * (xy + zw)), .jy = vm.ps(1 - 2 * (xx + zz)), .jz = vm.ps(2 * (yz - xw)), .jw = vm.ps(0),
|
||||
.kx = vm.ps(2 * (xz - yw)), .ky = vm.ps(2 * (yz + xw)), .kz = vm.ps(1 - 2 * (xx + yy)), .kw = vm.ps(0),
|
||||
.ix = vm.ps(1 - 2 * (yy + zz)), .iy = vm.ps(2 * (xy + zw)), .iz = vm.ps(2 * (xz - yw)), .iw = vm.ps(0),
|
||||
.jx = vm.ps(2 * (xy - zw)), .jy = vm.ps(1 - 2 * (xx + zz)), .jz = vm.ps(2 * (yz + xw)), .jw = vm.ps(0),
|
||||
.kx = vm.ps(2 * (xz + yw)), .ky = vm.ps(2 * (yz - xw)), .kz = vm.ps(1 - 2 * (xx + yy)), .kw = vm.ps(0),
|
||||
.tx = vm.ps(t.x), .ty = vm.ps(t.y), .tz = vm.ps(t.z), .tw = vm.ps(1),
|
||||
// zig fmt: on
|
||||
};
|
||||
@@ -241,9 +241,9 @@ pub const Matrix4x4x8 = extern struct {
|
||||
|
||||
return .{
|
||||
// zig fmt: off
|
||||
.ix = s.x * (vm.ps(1) - vm.ps(2) * (yy + zz)), .iy = s.x * vm.ps(2) * (xy - zw), .iz = s.x * vm.ps(2) * (xz + yw), .iw = vm.ps(0),
|
||||
.jx = s.y * vm.ps(2) * (xy + zw), .jy = s.y * (vm.ps(1) - vm.ps(2) * (xx + zz)), .jz = s.y * vm.ps(2) * (yz - xw), .jw = vm.ps(0),
|
||||
.kx = s.z * vm.ps(2) * (xz - yw), .ky = s.z * vm.ps(2) * (yz + xw), .kz = s.z * (vm.ps(1) - vm.ps(2) * (xx + yy)), .kw = vm.ps(0),
|
||||
.ix = s.x * (vm.ps(1) - vm.ps(2) * (yy + zz)), .iy = s.x * vm.ps(2) * (xy + zw), .iz = s.x * vm.ps(2) * (xz - yw), .iw = vm.ps(0),
|
||||
.jx = s.y * vm.ps(2) * (xy - zw), .jy = s.y * (vm.ps(1) - vm.ps(2) * (xx + zz)), .jz = s.y * vm.ps(2) * (yz + xw), .jw = vm.ps(0),
|
||||
.kx = s.z * vm.ps(2) * (xz + yw), .ky = s.z * vm.ps(2) * (yz - xw), .kz = s.z * (vm.ps(1) - vm.ps(2) * (xx + yy)), .kw = vm.ps(0),
|
||||
.tx = t.x, .ty = t.y, .tz = t.z, .tw = vm.ps(1),
|
||||
// zig fmt: on
|
||||
};
|
||||
@@ -262,9 +262,9 @@ pub const Matrix4x4x8 = extern struct {
|
||||
|
||||
return .{
|
||||
// zig fmt: off
|
||||
.ix = vm.ps(s.x * (1 - 2 * (yy + zz))), .iy = vm.ps(s.x * 2 * (xy - zw)), .iz = vm.ps(s.x * 2 * (xz + yw)), .iw = vm.ps(0),
|
||||
.jx = vm.ps(s.y * 2 * (xy + zw)), .jy = vm.ps(s.y * (1 - 2 * (xx + zz))), .jz = vm.ps(s.y * 2 * (yz - xw)), .jw = vm.ps(0),
|
||||
.kx = vm.ps(s.z * 2 * (xz - yw)), .ky = vm.ps(s.z * 2 * (yz + xw)), .kz = vm.ps(s.z * (1 - 2 * (xx + yy))), .kw = vm.ps(0),
|
||||
.ix = vm.ps(s.x * (1 - 2 * (yy + zz))), .iy = vm.ps(s.x * 2 * (xy + zw)), .iz = vm.ps(s.x * 2 * (xz - yw)), .iw = vm.ps(0),
|
||||
.jx = vm.ps(s.y * 2 * (xy - zw)), .jy = vm.ps(s.y * (1 - 2 * (xx + zz))), .jz = vm.ps(s.y * 2 * (yz + xw)), .jw = vm.ps(0),
|
||||
.kx = vm.ps(s.z * 2 * (xz + yw)), .ky = vm.ps(s.z * 2 * (yz - xw)), .kz = vm.ps(s.z * (1 - 2 * (xx + yy))), .kw = vm.ps(0),
|
||||
.tx = vm.ps(t.x), .ty = vm.ps(t.y), .tz = vm.ps(t.z), .tw = vm.ps(1),
|
||||
// zig fmt: on
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user