Trying to improve collisions and failing
This commit is contained in:
38
src/math.zig
38
src/math.zig
@@ -1,10 +1,14 @@
|
||||
const std = @import("std");
|
||||
|
||||
pub const Iterator2 = @import("math/Iterator2.zig").Iterator2;
|
||||
pub const Iterator3 = @import("math/Iterator3.zig").Iterator3;
|
||||
pub const Matrix4x4 = @import("math/Matrix4x4.zig").Matrix4x4;
|
||||
pub const Quaternion = @import("math/Quaternion.zig").Quaternion;
|
||||
pub const Vector2 = @import("math/Vector2.zig").Vector2;
|
||||
pub const Vector2Int = @import("math/Vector2Int.zig").Vector2Int;
|
||||
pub const Vector2x8 = @import("math/Vector2x8.zig").Vector2x8;
|
||||
pub const Vector3 = @import("math/Vector3.zig").Vector3;
|
||||
pub const Vector3Int = @import("math/Vector3Int.zig").Vector3Int;
|
||||
pub const Vector4 = @import("math/Vector4.zig").Vector4;
|
||||
|
||||
pub const f32x8 = @Vector(8, f32);
|
||||
@@ -35,3 +39,37 @@ pub inline fn lerp(a: f32, b: f32, t: f32) f32 {
|
||||
|
||||
pub const noise2 = @import("math/noise.zig").noise2;
|
||||
pub const noise2x8 = @import("math/noise.zig").noise2x8;
|
||||
|
||||
pub inline fn asFloatFrac(frac: i32) f32 {
|
||||
const numerator: f64 = @floatFromInt(frac);
|
||||
const denominator: f64 = std.math.maxInt(i32);
|
||||
return @floatCast(numerator / denominator);
|
||||
}
|
||||
|
||||
pub inline fn asIntFrac(frac: f32) i32 {
|
||||
const fraction: f64 = @floatCast(frac);
|
||||
const scale: f64 = std.math.maxInt(i32);
|
||||
return @intFromFloat(@round(fraction * scale));
|
||||
}
|
||||
|
||||
pub inline fn mulIntFloat(int: i32, float: f32) i32 {
|
||||
const int_float: f64 = @floatFromInt(int);
|
||||
const float_wide: f64 = @floatCast(float);
|
||||
return @intFromFloat(@round(int_float * float_wide));
|
||||
}
|
||||
|
||||
pub inline fn mulFrac(a: i32, b: i32) i32 {
|
||||
const denominator: i64 = std.math.maxInt(i32);
|
||||
const rounding_bias: i64 = denominator >> 1;
|
||||
const a_wide: i64 = a;
|
||||
const b_wide: i64 = b;
|
||||
return @intCast(@divFloor(a_wide * b_wide + rounding_bias, denominator));
|
||||
}
|
||||
|
||||
pub inline fn mulFracFrac(a: i32, b: i32) i32 {
|
||||
const denominator: i64 = std.math.maxInt(i32) * std.math.maxInt(i32);
|
||||
const rounding_bias: i64 = denominator >> 1;
|
||||
const a_wide: i64 = a;
|
||||
const b_wide: i64 = b;
|
||||
return .{ .vector = @intCast(@divFloor(a_wide * b_wide + rounding_bias, denominator)) };
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user