fix issues

This commit is contained in:
2026-08-31 03:58:48 -05:00
parent 0e3112f61e
commit d604eea08e

View File

@@ -8,9 +8,9 @@ pub fn Matrix(rows: comptime_int, cols: comptime_int, T: type) type {
const Self = @This();
const zero: Self = .splat(0);
pub const zero: Self = .splat(0);
const ident: Self = blk: {
pub const ident: Self = blk: {
var m: [rows][cols]T = undefined;
for (0..rows) |i| {
for (0..cols) |j| {
@@ -35,11 +35,16 @@ pub fn Matrix(rows: comptime_int, cols: comptime_int, T: type) type {
fn dot(self: Self, other: Self) T {
return self.t().mul(other).get(.x);
}
fn array(self: Self) [self.rows]T {
return @bitCast(self.mat);
}
};
pub const get = if (cols == 1) vector.get else @compileError("Not a vector");
pub const swizzle = if (cols == 1) vector.swizzle else @compileError("Not a vector");
pub const dot = if (cols == 1) vector.dot else @compileError("Not a vector");
pub const array = if (cols == 1) vector.array else @compileError("Not a vector");
pub fn splat(s: T) Self {
var result: Self = .{ .mat = undefined };
@@ -58,9 +63,9 @@ pub fn Matrix(rows: comptime_int, cols: comptime_int, T: type) type {
}
pub fn scale(self: Self, scalar: T) Self {
const result: Self = .{ .mat = undefined };
inline for (&result.mat, self.mat) |r_row, s_row| {
inline for (r_row, s_row) |r, s| {
var result: Self = .{ .mat = undefined };
inline for (&result.mat, self.mat) |*r_row, s_row| {
inline for (r_row, s_row) |*r, s| {
r.* = s * scalar;
}
}
@@ -68,9 +73,9 @@ pub fn Matrix(rows: comptime_int, cols: comptime_int, T: type) type {
}
pub fn scaleInv(self: Self, scalar: T) Self {
const result: Self = .{ .mat = undefined };
inline for (&result.mat, self.mat) |r_row, s_row| {
inline for (r_row, s_row) |r, s| {
var result: Self = .{ .mat = undefined };
inline for (&result.mat, self.mat) |*r_row, s_row| {
inline for (r_row, s_row) |*r, s| {
r.* = s / scalar;
}
}
@@ -78,9 +83,9 @@ pub fn Matrix(rows: comptime_int, cols: comptime_int, T: type) type {
}
pub fn neg(self: Self) Self {
const result: Self = .{ .mat = undefined };
inline for (&result.mat, self.mat) |r_row, s_row| {
inline for (r_row, s_row) |r, s| {
var result: Self = .{ .mat = undefined };
inline for (&result.mat, self.mat) |*r_row, s_row| {
inline for (r_row, s_row) |*r, s| {
r.* = -s;
}
}