Compare commits
2 Commits
e019470687
...
6c9a786926
| Author | SHA1 | Date | |
|---|---|---|---|
| 6c9a786926 | |||
| a17a39a9a4 |
@@ -66,6 +66,10 @@ pub const Color = extern struct {
|
|||||||
pub inline fn asArray(self: Color) Array {
|
pub inline fn asArray(self: Color) Array {
|
||||||
return @bitCast(self);
|
return @bitCast(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn format(self: Color, w: *std.io.Writer) !void {
|
||||||
|
try w.print("#{X:0>2}{X:0>2}{X:0>2}{X:0>2}", .{ self.r, self.g, self.b, self.a });
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
test "l" {
|
test "l" {
|
||||||
|
|||||||
@@ -75,9 +75,9 @@ pub const Matrix4x4 = extern struct {
|
|||||||
|
|
||||||
return .{
|
return .{
|
||||||
// zig fmt: off
|
// zig fmt: off
|
||||||
.ix = 1 - 2 * (yy + zz), .iy = 2 * (xy - zw), .iz = 2 * (xz + yw), .iw = 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,
|
.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,
|
.kx = 2 * (xz + yw), .ky = 2 * (yz - xw), .kz = 1 - 2 * (xx + yy), .kw = 0,
|
||||||
.tx = 0, .ty = 0, .tz = 0, .tw = 1,
|
.tx = 0, .ty = 0, .tz = 0, .tw = 1,
|
||||||
// zig fmt: on
|
// zig fmt: on
|
||||||
};
|
};
|
||||||
@@ -121,9 +121,9 @@ pub const Matrix4x4 = extern struct {
|
|||||||
|
|
||||||
return .{
|
return .{
|
||||||
// zig fmt: off
|
// zig fmt: off
|
||||||
.ix = 1 - 2 * (yy + zz), .iy = 2 * (xy - zw), .iz = 2 * (xz + yw), .iw = 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,
|
.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,
|
.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,
|
.tx = t.x, .ty = t.y, .tz = t.z, .tw = 1,
|
||||||
// zig fmt: on
|
// zig fmt: on
|
||||||
};
|
};
|
||||||
@@ -153,9 +153,9 @@ pub const Matrix4x4 = extern struct {
|
|||||||
|
|
||||||
return .{
|
return .{
|
||||||
// zig fmt: off
|
// zig fmt: off
|
||||||
.ix = s.x * (1 - 2 * (yy + zz)), .iy = s.x * 2 * (xy - zw), .iz = s.x * 2 * (xz + yw), .iw = 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,
|
.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,
|
.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,
|
.tx = t.x, .ty = t.y, .tz = t.z, .tw = 1,
|
||||||
// zig fmt: on
|
// zig fmt: on
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -113,9 +113,9 @@ pub const Matrix4x4x8 = extern struct {
|
|||||||
|
|
||||||
return .{
|
return .{
|
||||||
// zig fmt: off
|
// 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),
|
.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),
|
.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),
|
.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),
|
.tx = vm.ps(0), .ty = vm.ps(0), .tz = vm.ps(0), .tw = vm.ps(1),
|
||||||
// zig fmt: on
|
// zig fmt: on
|
||||||
};
|
};
|
||||||
@@ -134,9 +134,9 @@ pub const Matrix4x4x8 = extern struct {
|
|||||||
|
|
||||||
return .{
|
return .{
|
||||||
// zig fmt: off
|
// 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),
|
.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),
|
.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),
|
.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),
|
.tx = vm.ps(0), .ty = vm.ps(0), .tz = vm.ps(0), .tw = vm.ps(1),
|
||||||
// zig fmt: on
|
// zig fmt: on
|
||||||
};
|
};
|
||||||
@@ -177,9 +177,9 @@ pub const Matrix4x4x8 = extern struct {
|
|||||||
|
|
||||||
return .{
|
return .{
|
||||||
// zig fmt: off
|
// 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),
|
.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),
|
.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),
|
.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),
|
.tx = t.x, .ty = t.y, .tz = t.z, .tw = vm.ps(1),
|
||||||
// zig fmt: on
|
// zig fmt: on
|
||||||
};
|
};
|
||||||
@@ -198,9 +198,9 @@ pub const Matrix4x4x8 = extern struct {
|
|||||||
|
|
||||||
return .{
|
return .{
|
||||||
// zig fmt: off
|
// 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),
|
.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),
|
.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),
|
.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),
|
.tx = vm.ps(t.x), .ty = vm.ps(t.y), .tz = vm.ps(t.z), .tw = vm.ps(1),
|
||||||
// zig fmt: on
|
// zig fmt: on
|
||||||
};
|
};
|
||||||
@@ -241,9 +241,9 @@ pub const Matrix4x4x8 = extern struct {
|
|||||||
|
|
||||||
return .{
|
return .{
|
||||||
// zig fmt: off
|
// 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),
|
.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),
|
.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),
|
.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),
|
.tx = t.x, .ty = t.y, .tz = t.z, .tw = vm.ps(1),
|
||||||
// zig fmt: on
|
// zig fmt: on
|
||||||
};
|
};
|
||||||
@@ -262,9 +262,9 @@ pub const Matrix4x4x8 = extern struct {
|
|||||||
|
|
||||||
return .{
|
return .{
|
||||||
// zig fmt: off
|
// 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),
|
.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),
|
.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),
|
.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),
|
.tx = vm.ps(t.x), .ty = vm.ps(t.y), .tz = vm.ps(t.z), .tw = vm.ps(1),
|
||||||
// zig fmt: on
|
// zig fmt: on
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -122,4 +122,8 @@ pub const Complex = extern struct {
|
|||||||
.im = @mulAdd(f32, t, b.im, @mulAdd(f32, -t, a.im, a.im)),
|
.im = @mulAdd(f32, t, b.im, @mulAdd(f32, -t, a.im, a.im)),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn format(self: Complex, w: *std.io.Writer) !void {
|
||||||
|
try w.print("Complex[{d:.3}, {d:.3}]", .{ self.re, self.im });
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -178,4 +178,8 @@ pub const Quaternion = extern struct {
|
|||||||
.w = @mulAdd(f32, t, b.w, @mulAdd(f32, -t, a.w, a.w)),
|
.w = @mulAdd(f32, t, b.w, @mulAdd(f32, -t, a.w, a.w)),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn format(self: Quaternion, w: *std.io.Writer) !void {
|
||||||
|
try w.print("Quaternion[{d:.3}, {d:.3}, {d:.3}, {d:.3}]", .{ self.x, self.y, self.z, self.w });
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -162,4 +162,8 @@ pub const Vector2 = extern struct {
|
|||||||
.y = vm.ps(self.x) * m.iy + vm.ps(self.y) * m.jy,
|
.y = vm.ps(self.x) * m.iy + vm.ps(self.y) * m.jy,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn format(self: Vector2, w: *std.io.Writer) !void {
|
||||||
|
try w.print("[{d}, {d}]", .{ self.x, self.y });
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -105,4 +105,11 @@ pub const Vector2Int = extern struct {
|
|||||||
pub inline fn cross(self: Vector2Int, other: Vector2Int) i32 {
|
pub inline fn cross(self: Vector2Int, other: Vector2Int) i32 {
|
||||||
return self.x * other.y - self.y * other.x;
|
return self.x * other.y - self.y * other.x;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn format(self: Vector2Int, w: *std.io.Writer) !void {
|
||||||
|
try w.print("[{X:0>8}, {X:0>8}]", .{
|
||||||
|
@as(u32, @bitCast(self.x)),
|
||||||
|
@as(u32, @bitCast(self.y)),
|
||||||
|
});
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -187,4 +187,8 @@ pub const Vector3 = extern struct {
|
|||||||
.z = vm.ps(self.x) * m.iz + vm.ps(self.y) * m.jz + vm.ps(self.z) * m.kz,
|
.z = vm.ps(self.x) * m.iz + vm.ps(self.y) * m.jz + vm.ps(self.z) * m.kz,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn format(self: Vector3, w: *std.io.Writer) !void {
|
||||||
|
try w.print("[{d}, {d}, {d}]", .{ self.x, self.y, self.z });
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -112,4 +112,12 @@ pub const Vector3Int = extern struct {
|
|||||||
.z = self.x * other.y - self.y * other.x,
|
.z = self.x * other.y - self.y * other.x,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn format(self: Vector3Int, w: *std.io.Writer) !void {
|
||||||
|
try w.print("[{X:0>8}, {X:0>8}, {X:0>8}]", .{
|
||||||
|
@as(u32, @bitCast(self.x)),
|
||||||
|
@as(u32, @bitCast(self.y)),
|
||||||
|
@as(u32, @bitCast(self.z)),
|
||||||
|
});
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -142,4 +142,8 @@ pub const Vector4 = extern struct {
|
|||||||
.w = vm.ps(self.x) * m.iw + vm.ps(self.y) * m.jw + vm.ps(self.z) * m.kw + vm.ps(self.w) * m.tw,
|
.w = vm.ps(self.x) * m.iw + vm.ps(self.y) * m.jw + vm.ps(self.z) * m.kw + vm.ps(self.w) * m.tw,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn format(self: Vector4, w: *std.io.Writer) !void {
|
||||||
|
try w.print("[{d}, {d}, {d}, {d}]", .{ self.x, self.y, self.z, self.w });
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -107,4 +107,13 @@ pub const Vector4Int = extern struct {
|
|||||||
pub inline fn dot(self: Vector4Int, other: Vector4Int) i32 {
|
pub inline fn dot(self: Vector4Int, other: Vector4Int) i32 {
|
||||||
return self.x * other.x + self.y * other.y + self.z * other.z + self.w * other.w;
|
return self.x * other.x + self.y * other.y + self.z * other.z + self.w * other.w;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn format(self: Vector4Int, w: *std.io.Writer) !void {
|
||||||
|
try w.print("[{X:0>8}, {X:0>8}, {X:0>8}, {X:0>8}]", .{
|
||||||
|
@as(u32, @bitCast(self.x)),
|
||||||
|
@as(u32, @bitCast(self.y)),
|
||||||
|
@as(u32, @bitCast(self.z)),
|
||||||
|
@as(u32, @bitCast(self.w)),
|
||||||
|
});
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user