diff options
| author | nsfisis <nsfisis@gmail.com> | 2022-11-27 11:07:26 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2022-11-27 11:07:26 +0900 |
| commit | 2deccc0a9ba63d19a32b636b3b81eb9be5ef019c (patch) | |
| tree | dec86331310cea6c6637b9cfbed6cb7dbe377c76 /src/main.zig | |
| parent | dd6f4590d7d8ff8d2074ee60b3bd51739633628e (diff) | |
| download | RayTracingInOneWeekend.zig-2deccc0a9ba63d19a32b636b3b81eb9be5ef019c.tar.gz RayTracingInOneWeekend.zig-2deccc0a9ba63d19a32b636b3b81eb9be5ef019c.tar.zst RayTracingInOneWeekend.zig-2deccc0a9ba63d19a32b636b3b81eb9be5ef019c.zip | |
3.2
Diffstat (limited to 'src/main.zig')
| -rw-r--r-- | src/main.zig | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/main.zig b/src/main.zig index 6b67d23..7373cb6 100644 --- a/src/main.zig +++ b/src/main.zig @@ -1,5 +1,33 @@ const std = @import("std"); +const Vec3f = @Vector(3, f64); +const Point3 = Vec3f; +const Color = Vec3f; + +fn vecNorm(v: Vec3f) f64 { + return @sqrt(vecNormSquared(v)); +} + +fn vecNormSquared(v: Vec3f) f64 { + return v[0] * v[0] + v[1] * v[1] + v[2] * v[2]; +} + +fn vecDot(u: Vec3f, v: Vec3f) f64 { + return u[0] * v[0] + u[1] * v[1] + u[2] * v[2]; +} + +fn vecCross(u: Vec3f, v: Vec3f) Vec3f { + return Vec3f( + u[1] * v[2] - u[2] * v[1], + u[2] * v[0] - u[0] * v[2], + u[0] * v[1] - u[1] * v[0], + ); +} + +fn vecNormalized(v: Vec3f) Vec3f { + return v / vecNorm(v); +} + pub fn main() !void { // Image |
