Reorganize and fix

This commit is contained in:
2026-01-04 22:43:44 +01:00
parent 7e8103565d
commit e019470687
15 changed files with 270 additions and 256 deletions

View File

@@ -127,4 +127,39 @@ pub const Vector2 = extern struct {
.y = self.x * complex.im + self.y * complex.re,
};
}
pub inline fn rotate_x8(self: Vector2, complex: vm.Complex_x8) vm.Vector2x8 {
return .{
.x = vm.ps(self.x) * complex.re - vm.ps(self.y) * complex.im,
.y = vm.ps(self.x) * complex.im + vm.ps(self.y) * complex.re,
};
}
pub inline fn transformPoint(self: Vector2, m: vm.Matrix3x2) Vector2 {
return .{
.x = self.x * m.ix + self.y * m.jx + m.tx,
.y = self.x * m.iy + self.y * m.jy + m.ty,
};
}
pub inline fn transformPoint_x8(self: Vector2, m: vm.Matrix3x2x8) vm.Vector2x8 {
return .{
.x = vm.ps(self.x) * m.ix + vm.ps(self.y) * m.jx + m.tx,
.y = vm.ps(self.x) * m.iy + vm.ps(self.y) * m.jy + m.ty,
};
}
pub inline fn transformVector(self: Vector2, m: vm.Matrix3x2) Vector2 {
return .{
.x = self.x * m.ix + self.y * m.jx,
.y = self.x * m.iy + self.y * m.jy,
};
}
pub inline fn transformVector_x8(self: Vector2, m: vm.Matrix3x2x8) vm.Vector2x8 {
return .{
.x = vm.ps(self.x) * m.ix + vm.ps(self.y) * m.jx,
.y = vm.ps(self.x) * m.iy + vm.ps(self.y) * m.jy,
};
}
};

View File

@@ -199,4 +199,32 @@ pub const Vector2x8 = struct {
.y = self.x * vm.ps(complex.im) + self.y * vm.ps(complex.re),
};
}
pub inline fn transformPoint(self: Vector2x8, m: vm.Matrix3x2x8) Vector2x8 {
return .{
.x = self.x * m.ix + self.y * m.jx + m.tx,
.y = self.x * m.iy + self.y * m.jy + m.ty,
};
}
pub inline fn transformPointSingle(self: Vector2x8, m: vm.Matrix3x2) Vector2x8 {
return .{
.x = self.x * vm.ps(m.ix) + self.y * vm.ps(m.jx) + vm.ps(m.tx),
.y = self.x * vm.ps(m.iy) + self.y * vm.ps(m.jy) + vm.ps(m.ty),
};
}
pub inline fn transformVector(self: Vector2x8, m: vm.Matrix3x2x8) Vector2x8 {
return .{
.x = self.x * m.ix + self.y * m.jx,
.y = self.x * m.iy + self.y * m.jy,
};
}
pub inline fn transformVectorSingle(self: Vector2x8, m: vm.Matrix3x2) Vector2x8 {
return .{
.x = self.x * vm.ps(m.ix) + self.y * vm.ps(m.jx),
.y = self.x * vm.ps(m.iy) + self.y * vm.ps(m.jy),
};
}
};

View File

@@ -141,4 +141,50 @@ pub const Vector3 = extern struct {
),
);
}
pub inline fn rotate_x8(self: Vector3, quaternion: vm.Quaternion_x8) vm.Vector3x8 {
const w = quaternion.getScalar();
const xyz = quaternion.getVector();
const self_x8: vm.Vector3x8 = .splat(self);
return .add(
self_x8,
.cross(
.add(xyz, xyz),
.add(.cross(xyz, self_x8), self_x8.mulScalar(w)),
),
);
}
pub inline fn transformPoint(self: Vector3, m: vm.Matrix4x4) Vector3 {
return .{
.x = self.x * m.ix + self.y * m.jx + self.z * m.kx + m.tx,
.y = self.x * m.iy + self.y * m.jy + self.z * m.ky + m.ty,
.z = self.x * m.iz + self.y * m.jz + self.z * m.kz + m.tz,
};
}
pub inline fn transformPoint_x8(self: Vector3, m: vm.Matrix4x4x8) vm.Vector3x8 {
return .{
.x = vm.ps(self.x) * m.ix + vm.ps(self.y) * m.jx + vm.ps(self.z) * m.kx + m.tx,
.y = vm.ps(self.x) * m.iy + vm.ps(self.y) * m.jy + vm.ps(self.z) * m.ky + m.ty,
.z = vm.ps(self.x) * m.iz + vm.ps(self.y) * m.jz + vm.ps(self.z) * m.kz + m.tz,
};
}
pub inline fn transformVector(self: Vector3, m: vm.Matrix4x4) Vector3 {
return .{
.x = self.x * m.ix + self.y * m.jx + self.z * m.kx,
.y = self.x * m.iy + self.y * m.jy + self.z * m.ky,
.z = self.x * m.iz + self.y * m.jz + self.z * m.kz,
};
}
pub inline fn transformVector_x8(self: Vector3, m: vm.Matrix4x4x8) vm.Vector3x8 {
return .{
.x = vm.ps(self.x) * m.ix + vm.ps(self.y) * m.jx + vm.ps(self.z) * m.kx,
.y = vm.ps(self.x) * m.iy + vm.ps(self.y) * m.jy + vm.ps(self.z) * m.ky,
.z = vm.ps(self.x) * m.iz + vm.ps(self.y) * m.jz + vm.ps(self.z) * m.kz,
};
}
};

View File

@@ -222,4 +222,36 @@ pub const Vector3x8 = struct {
),
);
}
pub inline fn transformPoint(self: vm.Matrix4x4x8, p: Vector3x8) Vector3x8 {
return .{
.x = p.x * self.ix + p.y * self.jx + p.z * self.kx + self.tx,
.y = p.x * self.iy + p.y * self.jy + p.z * self.ky + self.ty,
.z = p.x * self.iz + p.y * self.jz + p.z * self.kz + self.tz,
};
}
pub inline fn transformPointSingle(self: vm.Matrix4x4, p: Vector3x8) Vector3x8 {
return .{
.x = p.x * vm.ps(self.ix) + p.y * vm.ps(self.jx) + p.z * vm.ps(self.kx) + vm.ps(self.tx),
.y = p.x * vm.ps(self.iy) + p.y * vm.ps(self.jy) + p.z * vm.ps(self.ky) + vm.ps(self.ty),
.z = p.x * vm.ps(self.iz) + p.y * vm.ps(self.jz) + p.z * vm.ps(self.kz) + vm.ps(self.tz),
};
}
pub inline fn transformVector(self: vm.Matrix4x4x8, p: Vector3x8) Vector3x8 {
return .{
.x = p.x * self.ix + p.y * self.jx + p.z * self.kx,
.y = p.x * self.iy + p.y * self.jy + p.z * self.ky,
.z = p.x * self.iz + p.y * self.jz + p.z * self.kz,
};
}
pub inline fn transformVectorSingle(self: vm.Matrix4x4, v: Vector3x8) Vector3x8 {
return .{
.x = v.x * vm.ps(self.ix) + v.y * vm.ps(self.jx) + v.z * vm.ps(self.kx),
.y = v.x * vm.ps(self.iy) + v.y * vm.ps(self.jy) + v.z * vm.ps(self.ky),
.z = v.x * vm.ps(self.iz) + v.y * vm.ps(self.jz) + v.z * vm.ps(self.kz),
};
}
};

View File

@@ -124,4 +124,22 @@ pub const Vector4 = extern struct {
.w = @mulAdd(f32, t, b.w, @mulAdd(f32, -t, a.w, a.w)),
};
}
pub inline fn transform(self: Vector4, m: vm.Matrix4x4) Vector4 {
return .{
.x = self.x * m.ix + self.y * m.jx + self.z * m.kx + self.w * m.tx,
.y = self.x * m.iy + self.y * m.jy + self.z * m.ky + self.w * m.ty,
.z = self.x * m.iz + self.y * m.jz + self.z * m.kz + self.w * m.tz,
.w = self.x * m.iw + self.y * m.jw + self.z * m.kw + self.w * m.tw,
};
}
pub inline fn transform_x8(self: Vector4, m: vm.Matrix4x4x8) vm.Vector4x8 {
return .{
.x = vm.ps(self.x) * m.ix + vm.ps(self.y) * m.jx + vm.ps(self.z) * m.kx + vm.ps(self.w) * m.tx,
.y = vm.ps(self.x) * m.iy + vm.ps(self.y) * m.jy + vm.ps(self.z) * m.ky + vm.ps(self.w) * m.ty,
.z = vm.ps(self.x) * m.iz + vm.ps(self.y) * m.jz + vm.ps(self.z) * m.kz + vm.ps(self.w) * m.tz,
.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,
};
}
};

View File

@@ -195,4 +195,22 @@ pub const Vector4x8 = struct {
.w = @mulAdd(vm.f32x8, vm.ps(t), b.w, @mulAdd(vm.f32x8, -vm.ps(t), a.w, a.w)),
};
}
pub inline fn transform(self: Vector4x8, m: vm.Matrix4x4x8) Vector4x8 {
return .{
.x = self.x * m.ix + self.y * m.jx + self.z * m.kx + self.w * m.tx,
.y = self.x * m.iy + self.y * m.jy + self.z * m.ky + self.w * m.ty,
.z = self.x * m.iz + self.y * m.jz + self.z * m.kz + self.w * m.tz,
.w = self.x * m.iw + self.y * m.jw + self.z * m.kw + self.w * m.tw,
};
}
pub inline fn transformSingle(self: Vector4x8, m: vm.Matrix4x4) Vector4x8 {
return .{
.x = self.x * vm.ps(m.ix) + self.y * vm.ps(m.jx) + self.z * vm.ps(m.kx) + self.w * vm.ps(m.tx),
.y = self.x * vm.ps(m.iy) + self.y * vm.ps(m.jy) + self.z * vm.ps(m.ky) + self.w * vm.ps(m.ty),
.z = self.x * vm.ps(m.iz) + self.y * vm.ps(m.jz) + self.z * vm.ps(m.kz) + self.w * vm.ps(m.tz),
.w = self.x * vm.ps(m.iw) + self.y * vm.ps(m.jw) + self.z * vm.ps(m.kw) + self.w * vm.ps(m.tw),
};
}
};