From 5991bbfb1655df70712a39f00a9d384359b69ed4 Mon Sep 17 00:00:00 2001 From: sudokit Date: Fri, 18 Apr 2025 10:19:05 +0300 Subject: [PATCH] Added the ability to get the up, right and forward vectors from a given 4x4 matrix --- src/mat4.zig | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/mat4.zig b/src/mat4.zig index dad5ea4..c71b46e 100644 --- a/src/mat4.zig +++ b/src/mat4.zig @@ -132,6 +132,21 @@ pub fn Mat4x4(comptime T: type) type { return Vector3.new(self.data[3][0], self.data[3][1], self.data[3][2]); } + /// Get the up vector from a given 4x4 matrix + pub fn getUp(self: Self) Vector3 { + return Vector3.new(self.data[0][1], self.data[1][1], self.data[2][1]); + } + + /// Get the right vector from a given 4x4 matrix + pub fn getRight(self: Self) Vector3 { + return Vector3.new(self.data[0][0], self.data[1][0], self.data[2][0]); + } + + /// Get the right vector from a given 4x4 matrix + pub fn getForward(self: Self) Vector3 { + return Vector3.new(self.data[0][2], self.data[1][2], self.data[2][2]); + } + /// Construct a 4x4 matrix from given axis and angle (in degrees). pub fn fromRotation(angle_in_degrees: T, axis: Vector3) Self { var result = Self.identity();