diff options
Diffstat (limited to 'src/geom.zig')
-rw-r--r-- | src/geom.zig | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/geom.zig b/src/geom.zig index d86c682..4bb92e1 100644 --- a/src/geom.zig +++ b/src/geom.zig @@ -1,6 +1,6 @@ // Geometry functions // Copyright (C) 2002 David Rosen -// Copyright (C) 2023 Nguyễn Gia Phong +// Copyright (C) 2023, 2025 Nguyễn Gia Phong // // This file is part of Black Shades. // @@ -81,9 +81,9 @@ pub fn rotate2d(i: *f32, j: *f32, a: f32) void { export fn rotate(v: XYZ, deg_x: f32, deg_y: f32, deg_z: f32) XYZ { var u = v; // TODO: optimize - rotate2d(&u.x, &u.y, degreesToRadians(f32, deg_z)); - rotate2d(&u.z, &u.x, degreesToRadians(f32, deg_y)); - rotate2d(&u.y, &u.z, degreesToRadians(f32, deg_x)); + rotate2d(&u.x, &u.y, degreesToRadians(deg_z)); + rotate2d(&u.z, &u.x, degreesToRadians(deg_y)); + rotate2d(&u.y, &u.z, degreesToRadians(deg_x)); return u; } @@ -106,7 +106,7 @@ pub export fn segCrossTrigon(start: XYZ, end: XYZ, const q: @Vector(3, f32) = @bitCast(end); const n: @Vector(3, f32) = @bitCast(normal.*); const denom = dot(q - p, n); - if (@fabs(denom) < floatEps(f32)) + if (@abs(denom) < floatEps(f32)) return false; // parallel segment and triangle const a: @Vector(3, f32) = @bitCast(p_a.*); @@ -116,7 +116,7 @@ pub export fn segCrossTrigon(start: XYZ, end: XYZ, return false; // intersection not within segment // Check if intersection is in the triangle - const n_abs = @fabs(n); + const n_abs = @abs(n); const n_max = @reduce(.Max, n_abs); const k: struct { usize, usize } = if (n_max == n_abs[0]) .{ 1, 2 } @@ -132,7 +132,7 @@ pub export fn segCrossTrigon(start: XYZ, end: XYZ, const v = @Vector(3, f32){ i[k[1]], b[k[1]], c[k[1]] } - splat(3, a[k[1]]); intersection.* = @bitCast(i); - if (@fabs(u[1]) < floatEps(f32)) { + if (@abs(u[1]) < floatEps(f32)) { const s = u[0] / u[2]; if (s >= 0 and s <= 1) { const t = (v[0] - s * v[2]) / v[1]; |