|
@@ -3,7 +3,7 @@ package linalg
|
|
import "core:math"
|
|
import "core:math"
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-euler_angles_from_matrix3_f16 :: proc(m: Matrix3f16, order: Euler_Angle_Order) -> (t1, t2, t3: f16) {
|
|
|
|
|
|
+euler_angles_from_matrix3_f16 :: proc "contextless" (m: Matrix3f16, order: Euler_Angle_Order) -> (t1, t2, t3: f16) {
|
|
switch order {
|
|
switch order {
|
|
case .XYZ: t1, t2, t3 = euler_angles_xyz_from_matrix3(m)
|
|
case .XYZ: t1, t2, t3 = euler_angles_xyz_from_matrix3(m)
|
|
case .XZY: t1, t2, t3 = euler_angles_xzy_from_matrix3(m)
|
|
case .XZY: t1, t2, t3 = euler_angles_xzy_from_matrix3(m)
|
|
@@ -21,7 +21,7 @@ euler_angles_from_matrix3_f16 :: proc(m: Matrix3f16, order: Euler_Angle_Order) -
|
|
return
|
|
return
|
|
}
|
|
}
|
|
@(require_results)
|
|
@(require_results)
|
|
-euler_angles_from_matrix4_f16 :: proc(m: Matrix4f16, order: Euler_Angle_Order) -> (t1, t2, t3: f16) {
|
|
|
|
|
|
+euler_angles_from_matrix4_f16 :: proc "contextless" (m: Matrix4f16, order: Euler_Angle_Order) -> (t1, t2, t3: f16) {
|
|
switch order {
|
|
switch order {
|
|
case .XYZ: t1, t2, t3 = euler_angles_xyz_from_matrix4(m)
|
|
case .XYZ: t1, t2, t3 = euler_angles_xyz_from_matrix4(m)
|
|
case .XZY: t1, t2, t3 = euler_angles_xzy_from_matrix4(m)
|
|
case .XZY: t1, t2, t3 = euler_angles_xzy_from_matrix4(m)
|
|
@@ -39,7 +39,7 @@ euler_angles_from_matrix4_f16 :: proc(m: Matrix4f16, order: Euler_Angle_Order) -
|
|
return
|
|
return
|
|
}
|
|
}
|
|
@(require_results)
|
|
@(require_results)
|
|
-euler_angles_from_quaternion_f16 :: proc(m: Quaternionf16, order: Euler_Angle_Order) -> (t1, t2, t3: f16) {
|
|
|
|
|
|
+euler_angles_from_quaternion_f16 :: proc "contextless" (m: Quaternionf16, order: Euler_Angle_Order) -> (t1, t2, t3: f16) {
|
|
switch order {
|
|
switch order {
|
|
case .XYZ: t1, t2, t3 = euler_angles_xyz_from_quaternion(m)
|
|
case .XYZ: t1, t2, t3 = euler_angles_xyz_from_quaternion(m)
|
|
case .XZY: t1, t2, t3 = euler_angles_xzy_from_quaternion(m)
|
|
case .XZY: t1, t2, t3 = euler_angles_xzy_from_quaternion(m)
|
|
@@ -58,7 +58,7 @@ euler_angles_from_quaternion_f16 :: proc(m: Quaternionf16, order: Euler_Angle_Or
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix3_from_euler_angles_f16 :: proc(t1, t2, t3: f16, order: Euler_Angle_Order) -> (m: Matrix3f16) {
|
|
|
|
|
|
+matrix3_from_euler_angles_f16 :: proc "contextless" (t1, t2, t3: f16, order: Euler_Angle_Order) -> (m: Matrix3f16) {
|
|
switch order {
|
|
switch order {
|
|
case .XYZ: return matrix3_from_euler_angles_xyz(t1, t2, t3) // m1, m2, m3 = X(t1), Y(t2), Z(t3);
|
|
case .XYZ: return matrix3_from_euler_angles_xyz(t1, t2, t3) // m1, m2, m3 = X(t1), Y(t2), Z(t3);
|
|
case .XZY: return matrix3_from_euler_angles_xzy(t1, t2, t3) // m1, m2, m3 = X(t1), Z(t2), Y(t3);
|
|
case .XZY: return matrix3_from_euler_angles_xzy(t1, t2, t3) // m1, m2, m3 = X(t1), Z(t2), Y(t3);
|
|
@@ -76,7 +76,7 @@ matrix3_from_euler_angles_f16 :: proc(t1, t2, t3: f16, order: Euler_Angle_Order)
|
|
return
|
|
return
|
|
}
|
|
}
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix4_from_euler_angles_f16 :: proc(t1, t2, t3: f16, order: Euler_Angle_Order) -> (m: Matrix4f16) {
|
|
|
|
|
|
+matrix4_from_euler_angles_f16 :: proc "contextless" (t1, t2, t3: f16, order: Euler_Angle_Order) -> (m: Matrix4f16) {
|
|
switch order {
|
|
switch order {
|
|
case .XYZ: return matrix4_from_euler_angles_xyz(t1, t2, t3) // m1, m2, m3 = X(t1), Y(t2), Z(t3);
|
|
case .XYZ: return matrix4_from_euler_angles_xyz(t1, t2, t3) // m1, m2, m3 = X(t1), Y(t2), Z(t3);
|
|
case .XZY: return matrix4_from_euler_angles_xzy(t1, t2, t3) // m1, m2, m3 = X(t1), Z(t2), Y(t3);
|
|
case .XZY: return matrix4_from_euler_angles_xzy(t1, t2, t3) // m1, m2, m3 = X(t1), Z(t2), Y(t3);
|
|
@@ -95,7 +95,7 @@ matrix4_from_euler_angles_f16 :: proc(t1, t2, t3: f16, order: Euler_Angle_Order)
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-quaternion_from_euler_angles_f16 :: proc(t1, t2, t3: f16, order: Euler_Angle_Order) -> Quaternionf16 {
|
|
|
|
|
|
+quaternion_from_euler_angles_f16 :: proc "contextless" (t1, t2, t3: f16, order: Euler_Angle_Order) -> Quaternionf16 {
|
|
X :: quaternion_from_euler_angle_x
|
|
X :: quaternion_from_euler_angle_x
|
|
Y :: quaternion_from_euler_angle_y
|
|
Y :: quaternion_from_euler_angle_y
|
|
Z :: quaternion_from_euler_angle_z
|
|
Z :: quaternion_from_euler_angle_z
|
|
@@ -124,20 +124,20 @@ quaternion_from_euler_angles_f16 :: proc(t1, t2, t3: f16, order: Euler_Angle_Ord
|
|
// Quaternionf16s
|
|
// Quaternionf16s
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-quaternion_from_euler_angle_x_f16 :: proc(angle_x: f16) -> (q: Quaternionf16) {
|
|
|
|
|
|
+quaternion_from_euler_angle_x_f16 :: proc "contextless" (angle_x: f16) -> (q: Quaternionf16) {
|
|
return quaternion_angle_axis_f16(angle_x, {1, 0, 0})
|
|
return quaternion_angle_axis_f16(angle_x, {1, 0, 0})
|
|
}
|
|
}
|
|
@(require_results)
|
|
@(require_results)
|
|
-quaternion_from_euler_angle_y_f16 :: proc(angle_y: f16) -> (q: Quaternionf16) {
|
|
|
|
|
|
+quaternion_from_euler_angle_y_f16 :: proc "contextless" (angle_y: f16) -> (q: Quaternionf16) {
|
|
return quaternion_angle_axis_f16(angle_y, {0, 1, 0})
|
|
return quaternion_angle_axis_f16(angle_y, {0, 1, 0})
|
|
}
|
|
}
|
|
@(require_results)
|
|
@(require_results)
|
|
-quaternion_from_euler_angle_z_f16 :: proc(angle_z: f16) -> (q: Quaternionf16) {
|
|
|
|
|
|
+quaternion_from_euler_angle_z_f16 :: proc "contextless" (angle_z: f16) -> (q: Quaternionf16) {
|
|
return quaternion_angle_axis_f16(angle_z, {0, 0, 1})
|
|
return quaternion_angle_axis_f16(angle_z, {0, 0, 1})
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-quaternion_from_pitch_yaw_roll_f16 :: proc(pitch, yaw, roll: f16) -> Quaternionf16 {
|
|
|
|
|
|
+quaternion_from_pitch_yaw_roll_f16 :: proc "contextless" (pitch, yaw, roll: f16) -> Quaternionf16 {
|
|
a, b, c := pitch, yaw, roll
|
|
a, b, c := pitch, yaw, roll
|
|
|
|
|
|
ca, sa := math.cos(a*0.5), math.sin(a*0.5)
|
|
ca, sa := math.cos(a*0.5), math.sin(a*0.5)
|
|
@@ -153,12 +153,12 @@ quaternion_from_pitch_yaw_roll_f16 :: proc(pitch, yaw, roll: f16) -> Quaternionf
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-roll_from_quaternion_f16 :: proc(q: Quaternionf16) -> f16 {
|
|
|
|
|
|
+roll_from_quaternion_f16 :: proc "contextless" (q: Quaternionf16) -> f16 {
|
|
return math.atan2(2 * q.x*q.y + q.w*q.z, q.w*q.w + q.x*q.x - q.y*q.y - q.z*q.z)
|
|
return math.atan2(2 * q.x*q.y + q.w*q.z, q.w*q.w + q.x*q.x - q.y*q.y - q.z*q.z)
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-pitch_from_quaternion_f16 :: proc(q: Quaternionf16) -> f16 {
|
|
|
|
|
|
+pitch_from_quaternion_f16 :: proc "contextless" (q: Quaternionf16) -> f16 {
|
|
y := 2 * (q.y*q.z + q.w*q.w)
|
|
y := 2 * (q.y*q.z + q.w*q.w)
|
|
x := q.w*q.w - q.x*q.x - q.y*q.y + q.z*q.z
|
|
x := q.w*q.w - q.x*q.x - q.y*q.y + q.z*q.z
|
|
|
|
|
|
@@ -170,13 +170,13 @@ pitch_from_quaternion_f16 :: proc(q: Quaternionf16) -> f16 {
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-yaw_from_quaternion_f16 :: proc(q: Quaternionf16) -> f16 {
|
|
|
|
|
|
+yaw_from_quaternion_f16 :: proc "contextless" (q: Quaternionf16) -> f16 {
|
|
return math.asin(clamp(-2 * (q.x*q.z - q.w*q.y), -1, 1))
|
|
return math.asin(clamp(-2 * (q.x*q.z - q.w*q.y), -1, 1))
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-pitch_yaw_roll_from_quaternion_f16 :: proc(q: Quaternionf16) -> (pitch, yaw, roll: f16) {
|
|
|
|
|
|
+pitch_yaw_roll_from_quaternion_f16 :: proc "contextless" (q: Quaternionf16) -> (pitch, yaw, roll: f16) {
|
|
pitch = pitch_from_quaternion(q)
|
|
pitch = pitch_from_quaternion(q)
|
|
yaw = yaw_from_quaternion(q)
|
|
yaw = yaw_from_quaternion(q)
|
|
roll = roll_from_quaternion(q)
|
|
roll = roll_from_quaternion(q)
|
|
@@ -184,51 +184,51 @@ pitch_yaw_roll_from_quaternion_f16 :: proc(q: Quaternionf16) -> (pitch, yaw, rol
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-euler_angles_xyz_from_quaternion_f16 :: proc(q: Quaternionf16) -> (t1, t2, t3: f16) {
|
|
|
|
|
|
+euler_angles_xyz_from_quaternion_f16 :: proc "contextless" (q: Quaternionf16) -> (t1, t2, t3: f16) {
|
|
return euler_angles_xyz_from_matrix4(matrix4_from_quaternion(q))
|
|
return euler_angles_xyz_from_matrix4(matrix4_from_quaternion(q))
|
|
}
|
|
}
|
|
@(require_results)
|
|
@(require_results)
|
|
-euler_angles_yxz_from_quaternion_f16 :: proc(q: Quaternionf16) -> (t1, t2, t3: f16) {
|
|
|
|
|
|
+euler_angles_yxz_from_quaternion_f16 :: proc "contextless" (q: Quaternionf16) -> (t1, t2, t3: f16) {
|
|
return euler_angles_yxz_from_matrix4(matrix4_from_quaternion(q))
|
|
return euler_angles_yxz_from_matrix4(matrix4_from_quaternion(q))
|
|
}
|
|
}
|
|
@(require_results)
|
|
@(require_results)
|
|
-euler_angles_xzx_from_quaternion_f16 :: proc(q: Quaternionf16) -> (t1, t2, t3: f16) {
|
|
|
|
|
|
+euler_angles_xzx_from_quaternion_f16 :: proc "contextless" (q: Quaternionf16) -> (t1, t2, t3: f16) {
|
|
return euler_angles_xzx_from_matrix4(matrix4_from_quaternion(q))
|
|
return euler_angles_xzx_from_matrix4(matrix4_from_quaternion(q))
|
|
}
|
|
}
|
|
@(require_results)
|
|
@(require_results)
|
|
-euler_angles_xyx_from_quaternion_f16 :: proc(q: Quaternionf16) -> (t1, t2, t3: f16) {
|
|
|
|
|
|
+euler_angles_xyx_from_quaternion_f16 :: proc "contextless" (q: Quaternionf16) -> (t1, t2, t3: f16) {
|
|
return euler_angles_xyx_from_matrix4(matrix4_from_quaternion(q))
|
|
return euler_angles_xyx_from_matrix4(matrix4_from_quaternion(q))
|
|
}
|
|
}
|
|
@(require_results)
|
|
@(require_results)
|
|
-euler_angles_yxy_from_quaternion_f16 :: proc(q: Quaternionf16) -> (t1, t2, t3: f16) {
|
|
|
|
|
|
+euler_angles_yxy_from_quaternion_f16 :: proc "contextless" (q: Quaternionf16) -> (t1, t2, t3: f16) {
|
|
return euler_angles_yxy_from_matrix4(matrix4_from_quaternion(q))
|
|
return euler_angles_yxy_from_matrix4(matrix4_from_quaternion(q))
|
|
}
|
|
}
|
|
@(require_results)
|
|
@(require_results)
|
|
-euler_angles_yzy_from_quaternion_f16 :: proc(q: Quaternionf16) -> (t1, t2, t3: f16) {
|
|
|
|
|
|
+euler_angles_yzy_from_quaternion_f16 :: proc "contextless" (q: Quaternionf16) -> (t1, t2, t3: f16) {
|
|
return euler_angles_yzy_from_matrix4(matrix4_from_quaternion(q))
|
|
return euler_angles_yzy_from_matrix4(matrix4_from_quaternion(q))
|
|
}
|
|
}
|
|
@(require_results)
|
|
@(require_results)
|
|
-euler_angles_zyz_from_quaternion_f16 :: proc(q: Quaternionf16) -> (t1, t2, t3: f16) {
|
|
|
|
|
|
+euler_angles_zyz_from_quaternion_f16 :: proc "contextless" (q: Quaternionf16) -> (t1, t2, t3: f16) {
|
|
return euler_angles_zyz_from_matrix4(matrix4_from_quaternion(q))
|
|
return euler_angles_zyz_from_matrix4(matrix4_from_quaternion(q))
|
|
}
|
|
}
|
|
@(require_results)
|
|
@(require_results)
|
|
-euler_angles_zxz_from_quaternion_f16 :: proc(q: Quaternionf16) -> (t1, t2, t3: f16) {
|
|
|
|
|
|
+euler_angles_zxz_from_quaternion_f16 :: proc "contextless" (q: Quaternionf16) -> (t1, t2, t3: f16) {
|
|
return euler_angles_zxz_from_matrix4(matrix4_from_quaternion(q))
|
|
return euler_angles_zxz_from_matrix4(matrix4_from_quaternion(q))
|
|
}
|
|
}
|
|
@(require_results)
|
|
@(require_results)
|
|
-euler_angles_xzy_from_quaternion_f16 :: proc(q: Quaternionf16) -> (t1, t2, t3: f16) {
|
|
|
|
|
|
+euler_angles_xzy_from_quaternion_f16 :: proc "contextless" (q: Quaternionf16) -> (t1, t2, t3: f16) {
|
|
return euler_angles_xzy_from_matrix4(matrix4_from_quaternion(q))
|
|
return euler_angles_xzy_from_matrix4(matrix4_from_quaternion(q))
|
|
}
|
|
}
|
|
@(require_results)
|
|
@(require_results)
|
|
-euler_angles_yzx_from_quaternion_f16 :: proc(q: Quaternionf16) -> (t1, t2, t3: f16) {
|
|
|
|
|
|
+euler_angles_yzx_from_quaternion_f16 :: proc "contextless" (q: Quaternionf16) -> (t1, t2, t3: f16) {
|
|
return euler_angles_yzx_from_matrix4(matrix4_from_quaternion(q))
|
|
return euler_angles_yzx_from_matrix4(matrix4_from_quaternion(q))
|
|
}
|
|
}
|
|
@(require_results)
|
|
@(require_results)
|
|
-euler_angles_zyx_from_quaternion_f16 :: proc(q: Quaternionf16) -> (t1, t2, t3: f16) {
|
|
|
|
|
|
+euler_angles_zyx_from_quaternion_f16 :: proc "contextless" (q: Quaternionf16) -> (t1, t2, t3: f16) {
|
|
return euler_angles_zyx_from_matrix4(matrix4_from_quaternion(q))
|
|
return euler_angles_zyx_from_matrix4(matrix4_from_quaternion(q))
|
|
}
|
|
}
|
|
@(require_results)
|
|
@(require_results)
|
|
-euler_angles_zxy_from_quaternion_f16 :: proc(q: Quaternionf16) -> (t1, t2, t3: f16) {
|
|
|
|
|
|
+euler_angles_zxy_from_quaternion_f16 :: proc "contextless" (q: Quaternionf16) -> (t1, t2, t3: f16) {
|
|
return euler_angles_zxy_from_matrix4(matrix4_from_quaternion(q))
|
|
return euler_angles_zxy_from_matrix4(matrix4_from_quaternion(q))
|
|
}
|
|
}
|
|
|
|
|
|
@@ -237,7 +237,7 @@ euler_angles_zxy_from_quaternion_f16 :: proc(q: Quaternionf16) -> (t1, t2, t3: f
|
|
|
|
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix3_from_euler_angle_x_f16 :: proc(angle_x: f16) -> (m: Matrix3f16) {
|
|
|
|
|
|
+matrix3_from_euler_angle_x_f16 :: proc "contextless" (angle_x: f16) -> (m: Matrix3f16) {
|
|
cos_x, sin_x := math.cos(angle_x), math.sin(angle_x)
|
|
cos_x, sin_x := math.cos(angle_x), math.sin(angle_x)
|
|
m[0, 0] = 1
|
|
m[0, 0] = 1
|
|
m[1, 1] = +cos_x
|
|
m[1, 1] = +cos_x
|
|
@@ -247,7 +247,7 @@ matrix3_from_euler_angle_x_f16 :: proc(angle_x: f16) -> (m: Matrix3f16) {
|
|
return
|
|
return
|
|
}
|
|
}
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix3_from_euler_angle_y_f16 :: proc(angle_y: f16) -> (m: Matrix3f16) {
|
|
|
|
|
|
+matrix3_from_euler_angle_y_f16 :: proc "contextless" (angle_y: f16) -> (m: Matrix3f16) {
|
|
cos_y, sin_y := math.cos(angle_y), math.sin(angle_y)
|
|
cos_y, sin_y := math.cos(angle_y), math.sin(angle_y)
|
|
m[0, 0] = +cos_y
|
|
m[0, 0] = +cos_y
|
|
m[0, 2] = -sin_y
|
|
m[0, 2] = -sin_y
|
|
@@ -257,7 +257,7 @@ matrix3_from_euler_angle_y_f16 :: proc(angle_y: f16) -> (m: Matrix3f16) {
|
|
return
|
|
return
|
|
}
|
|
}
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix3_from_euler_angle_z_f16 :: proc(angle_z: f16) -> (m: Matrix3f16) {
|
|
|
|
|
|
+matrix3_from_euler_angle_z_f16 :: proc "contextless" (angle_z: f16) -> (m: Matrix3f16) {
|
|
cos_z, sin_z := math.cos(angle_z), math.sin(angle_z)
|
|
cos_z, sin_z := math.cos(angle_z), math.sin(angle_z)
|
|
m[0, 0] = +cos_z
|
|
m[0, 0] = +cos_z
|
|
m[0, 1] = +sin_z
|
|
m[0, 1] = +sin_z
|
|
@@ -269,7 +269,7 @@ matrix3_from_euler_angle_z_f16 :: proc(angle_z: f16) -> (m: Matrix3f16) {
|
|
|
|
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix3_from_derived_euler_angle_x_f16 :: proc(angle_x: f16, angular_velocity_x: f16) -> (m: Matrix3f16) {
|
|
|
|
|
|
+matrix3_from_derived_euler_angle_x_f16 :: proc "contextless" (angle_x: f16, angular_velocity_x: f16) -> (m: Matrix3f16) {
|
|
cos_x := math.cos(angle_x) * angular_velocity_x
|
|
cos_x := math.cos(angle_x) * angular_velocity_x
|
|
sin_x := math.sin(angle_x) * angular_velocity_x
|
|
sin_x := math.sin(angle_x) * angular_velocity_x
|
|
m[0, 0] = 1
|
|
m[0, 0] = 1
|
|
@@ -280,7 +280,7 @@ matrix3_from_derived_euler_angle_x_f16 :: proc(angle_x: f16, angular_velocity_x:
|
|
return
|
|
return
|
|
}
|
|
}
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix3_from_derived_euler_angle_y_f16 :: proc(angle_y: f16, angular_velocity_y: f16) -> (m: Matrix3f16) {
|
|
|
|
|
|
+matrix3_from_derived_euler_angle_y_f16 :: proc "contextless" (angle_y: f16, angular_velocity_y: f16) -> (m: Matrix3f16) {
|
|
cos_y := math.cos(angle_y) * angular_velocity_y
|
|
cos_y := math.cos(angle_y) * angular_velocity_y
|
|
sin_y := math.sin(angle_y) * angular_velocity_y
|
|
sin_y := math.sin(angle_y) * angular_velocity_y
|
|
m[0, 0] = +cos_y
|
|
m[0, 0] = +cos_y
|
|
@@ -291,7 +291,7 @@ matrix3_from_derived_euler_angle_y_f16 :: proc(angle_y: f16, angular_velocity_y:
|
|
return
|
|
return
|
|
}
|
|
}
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix3_from_derived_euler_angle_z_f16 :: proc(angle_z: f16, angular_velocity_z: f16) -> (m: Matrix3f16) {
|
|
|
|
|
|
+matrix3_from_derived_euler_angle_z_f16 :: proc "contextless" (angle_z: f16, angular_velocity_z: f16) -> (m: Matrix3f16) {
|
|
cos_z := math.cos(angle_z) * angular_velocity_z
|
|
cos_z := math.cos(angle_z) * angular_velocity_z
|
|
sin_z := math.sin(angle_z) * angular_velocity_z
|
|
sin_z := math.sin(angle_z) * angular_velocity_z
|
|
m[0, 0] = +cos_z
|
|
m[0, 0] = +cos_z
|
|
@@ -304,7 +304,7 @@ matrix3_from_derived_euler_angle_z_f16 :: proc(angle_z: f16, angular_velocity_z:
|
|
|
|
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix3_from_euler_angles_xy_f16 :: proc(angle_x, angle_y: f16) -> (m: Matrix3f16) {
|
|
|
|
|
|
+matrix3_from_euler_angles_xy_f16 :: proc "contextless" (angle_x, angle_y: f16) -> (m: Matrix3f16) {
|
|
cos_x, sin_x := math.cos(angle_x), math.sin(angle_x)
|
|
cos_x, sin_x := math.cos(angle_x), math.sin(angle_x)
|
|
cos_y, sin_y := math.cos(angle_y), math.sin(angle_y)
|
|
cos_y, sin_y := math.cos(angle_y), math.sin(angle_y)
|
|
m[0, 0] = cos_y
|
|
m[0, 0] = cos_y
|
|
@@ -320,7 +320,7 @@ matrix3_from_euler_angles_xy_f16 :: proc(angle_x, angle_y: f16) -> (m: Matrix3f1
|
|
|
|
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix3_from_euler_angles_yx_f16 :: proc(angle_y, angle_x: f16) -> (m: Matrix3f16) {
|
|
|
|
|
|
+matrix3_from_euler_angles_yx_f16 :: proc "contextless" (angle_y, angle_x: f16) -> (m: Matrix3f16) {
|
|
cos_x, sin_x := math.cos(angle_x), math.sin(angle_x)
|
|
cos_x, sin_x := math.cos(angle_x), math.sin(angle_x)
|
|
cos_y, sin_y := math.cos(angle_y), math.sin(angle_y)
|
|
cos_y, sin_y := math.cos(angle_y), math.sin(angle_y)
|
|
m[0, 0] = cos_y
|
|
m[0, 0] = cos_y
|
|
@@ -335,25 +335,25 @@ matrix3_from_euler_angles_yx_f16 :: proc(angle_y, angle_x: f16) -> (m: Matrix3f1
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix3_from_euler_angles_xz_f16 :: proc(angle_x, angle_z: f16) -> (m: Matrix3f16) {
|
|
|
|
|
|
+matrix3_from_euler_angles_xz_f16 :: proc "contextless" (angle_x, angle_z: f16) -> (m: Matrix3f16) {
|
|
return mul(matrix3_from_euler_angle_x(angle_x), matrix3_from_euler_angle_z(angle_z))
|
|
return mul(matrix3_from_euler_angle_x(angle_x), matrix3_from_euler_angle_z(angle_z))
|
|
}
|
|
}
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix3_from_euler_angles_zx_f16 :: proc(angle_z, angle_x: f16) -> (m: Matrix3f16) {
|
|
|
|
|
|
+matrix3_from_euler_angles_zx_f16 :: proc "contextless" (angle_z, angle_x: f16) -> (m: Matrix3f16) {
|
|
return mul(matrix3_from_euler_angle_z(angle_z), matrix3_from_euler_angle_x(angle_x))
|
|
return mul(matrix3_from_euler_angle_z(angle_z), matrix3_from_euler_angle_x(angle_x))
|
|
}
|
|
}
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix3_from_euler_angles_yz_f16 :: proc(angle_y, angle_z: f16) -> (m: Matrix3f16) {
|
|
|
|
|
|
+matrix3_from_euler_angles_yz_f16 :: proc "contextless" (angle_y, angle_z: f16) -> (m: Matrix3f16) {
|
|
return mul(matrix3_from_euler_angle_y(angle_y), matrix3_from_euler_angle_z(angle_z))
|
|
return mul(matrix3_from_euler_angle_y(angle_y), matrix3_from_euler_angle_z(angle_z))
|
|
}
|
|
}
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix3_from_euler_angles_zy_f16 :: proc(angle_z, angle_y: f16) -> (m: Matrix3f16) {
|
|
|
|
|
|
+matrix3_from_euler_angles_zy_f16 :: proc "contextless" (angle_z, angle_y: f16) -> (m: Matrix3f16) {
|
|
return mul(matrix3_from_euler_angle_z(angle_z), matrix3_from_euler_angle_y(angle_y))
|
|
return mul(matrix3_from_euler_angle_z(angle_z), matrix3_from_euler_angle_y(angle_y))
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix3_from_euler_angles_xyz_f16 :: proc(t1, t2, t3: f16) -> (m: Matrix3f16) {
|
|
|
|
|
|
+matrix3_from_euler_angles_xyz_f16 :: proc "contextless" (t1, t2, t3: f16) -> (m: Matrix3f16) {
|
|
c1 := math.cos(-t1)
|
|
c1 := math.cos(-t1)
|
|
c2 := math.cos(-t2)
|
|
c2 := math.cos(-t2)
|
|
c3 := math.cos(-t3)
|
|
c3 := math.cos(-t3)
|
|
@@ -374,7 +374,7 @@ matrix3_from_euler_angles_xyz_f16 :: proc(t1, t2, t3: f16) -> (m: Matrix3f16) {
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix3_from_euler_angles_yxz_f16 :: proc(yaw, pitch, roll: f16) -> (m: Matrix3f16) {
|
|
|
|
|
|
+matrix3_from_euler_angles_yxz_f16 :: proc "contextless" (yaw, pitch, roll: f16) -> (m: Matrix3f16) {
|
|
ch := math.cos(yaw)
|
|
ch := math.cos(yaw)
|
|
sh := math.sin(yaw)
|
|
sh := math.sin(yaw)
|
|
cp := math.cos(pitch)
|
|
cp := math.cos(pitch)
|
|
@@ -395,7 +395,7 @@ matrix3_from_euler_angles_yxz_f16 :: proc(yaw, pitch, roll: f16) -> (m: Matrix3f
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix3_from_euler_angles_xzx_f16 :: proc(t1, t2, t3: f16) -> (m: Matrix3f16) {
|
|
|
|
|
|
+matrix3_from_euler_angles_xzx_f16 :: proc "contextless" (t1, t2, t3: f16) -> (m: Matrix3f16) {
|
|
c1 := math.cos(t1)
|
|
c1 := math.cos(t1)
|
|
s1 := math.sin(t1)
|
|
s1 := math.sin(t1)
|
|
c2 := math.cos(t2)
|
|
c2 := math.cos(t2)
|
|
@@ -416,7 +416,7 @@ matrix3_from_euler_angles_xzx_f16 :: proc(t1, t2, t3: f16) -> (m: Matrix3f16) {
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix3_from_euler_angles_xyx_f16 :: proc(t1, t2, t3: f16) -> (m: Matrix3f16) {
|
|
|
|
|
|
+matrix3_from_euler_angles_xyx_f16 :: proc "contextless" (t1, t2, t3: f16) -> (m: Matrix3f16) {
|
|
c1 := math.cos(t1)
|
|
c1 := math.cos(t1)
|
|
s1 := math.sin(t1)
|
|
s1 := math.sin(t1)
|
|
c2 := math.cos(t2)
|
|
c2 := math.cos(t2)
|
|
@@ -437,7 +437,7 @@ matrix3_from_euler_angles_xyx_f16 :: proc(t1, t2, t3: f16) -> (m: Matrix3f16) {
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix3_from_euler_angles_yxy_f16 :: proc(t1, t2, t3: f16) -> (m: Matrix3f16) {
|
|
|
|
|
|
+matrix3_from_euler_angles_yxy_f16 :: proc "contextless" (t1, t2, t3: f16) -> (m: Matrix3f16) {
|
|
c1 := math.cos(t1)
|
|
c1 := math.cos(t1)
|
|
s1 := math.sin(t1)
|
|
s1 := math.sin(t1)
|
|
c2 := math.cos(t2)
|
|
c2 := math.cos(t2)
|
|
@@ -458,7 +458,7 @@ matrix3_from_euler_angles_yxy_f16 :: proc(t1, t2, t3: f16) -> (m: Matrix3f16) {
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix3_from_euler_angles_yzy_f16 :: proc(t1, t2, t3: f16) -> (m: Matrix3f16) {
|
|
|
|
|
|
+matrix3_from_euler_angles_yzy_f16 :: proc "contextless" (t1, t2, t3: f16) -> (m: Matrix3f16) {
|
|
c1 := math.cos(t1)
|
|
c1 := math.cos(t1)
|
|
s1 := math.sin(t1)
|
|
s1 := math.sin(t1)
|
|
c2 := math.cos(t2)
|
|
c2 := math.cos(t2)
|
|
@@ -479,7 +479,7 @@ matrix3_from_euler_angles_yzy_f16 :: proc(t1, t2, t3: f16) -> (m: Matrix3f16) {
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix3_from_euler_angles_zyz_f16 :: proc(t1, t2, t3: f16) -> (m: Matrix3f16) {
|
|
|
|
|
|
+matrix3_from_euler_angles_zyz_f16 :: proc "contextless" (t1, t2, t3: f16) -> (m: Matrix3f16) {
|
|
c1 := math.cos(t1)
|
|
c1 := math.cos(t1)
|
|
s1 := math.sin(t1)
|
|
s1 := math.sin(t1)
|
|
c2 := math.cos(t2)
|
|
c2 := math.cos(t2)
|
|
@@ -500,7 +500,7 @@ matrix3_from_euler_angles_zyz_f16 :: proc(t1, t2, t3: f16) -> (m: Matrix3f16) {
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix3_from_euler_angles_zxz_f16 :: proc(t1, t2, t3: f16) -> (m: Matrix3f16) {
|
|
|
|
|
|
+matrix3_from_euler_angles_zxz_f16 :: proc "contextless" (t1, t2, t3: f16) -> (m: Matrix3f16) {
|
|
c1 := math.cos(t1)
|
|
c1 := math.cos(t1)
|
|
s1 := math.sin(t1)
|
|
s1 := math.sin(t1)
|
|
c2 := math.cos(t2)
|
|
c2 := math.cos(t2)
|
|
@@ -522,7 +522,7 @@ matrix3_from_euler_angles_zxz_f16 :: proc(t1, t2, t3: f16) -> (m: Matrix3f16) {
|
|
|
|
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix3_from_euler_angles_xzy_f16 :: proc(t1, t2, t3: f16) -> (m: Matrix3f16) {
|
|
|
|
|
|
+matrix3_from_euler_angles_xzy_f16 :: proc "contextless" (t1, t2, t3: f16) -> (m: Matrix3f16) {
|
|
c1 := math.cos(t1)
|
|
c1 := math.cos(t1)
|
|
s1 := math.sin(t1)
|
|
s1 := math.sin(t1)
|
|
c2 := math.cos(t2)
|
|
c2 := math.cos(t2)
|
|
@@ -543,7 +543,7 @@ matrix3_from_euler_angles_xzy_f16 :: proc(t1, t2, t3: f16) -> (m: Matrix3f16) {
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix3_from_euler_angles_yzx_f16 :: proc(t1, t2, t3: f16) -> (m: Matrix3f16) {
|
|
|
|
|
|
+matrix3_from_euler_angles_yzx_f16 :: proc "contextless" (t1, t2, t3: f16) -> (m: Matrix3f16) {
|
|
c1 := math.cos(t1)
|
|
c1 := math.cos(t1)
|
|
s1 := math.sin(t1)
|
|
s1 := math.sin(t1)
|
|
c2 := math.cos(t2)
|
|
c2 := math.cos(t2)
|
|
@@ -564,7 +564,7 @@ matrix3_from_euler_angles_yzx_f16 :: proc(t1, t2, t3: f16) -> (m: Matrix3f16) {
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix3_from_euler_angles_zyx_f16 :: proc(t1, t2, t3: f16) -> (m: Matrix3f16) {
|
|
|
|
|
|
+matrix3_from_euler_angles_zyx_f16 :: proc "contextless" (t1, t2, t3: f16) -> (m: Matrix3f16) {
|
|
c1 := math.cos(t1)
|
|
c1 := math.cos(t1)
|
|
s1 := math.sin(t1)
|
|
s1 := math.sin(t1)
|
|
c2 := math.cos(t2)
|
|
c2 := math.cos(t2)
|
|
@@ -585,7 +585,7 @@ matrix3_from_euler_angles_zyx_f16 :: proc(t1, t2, t3: f16) -> (m: Matrix3f16) {
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix3_from_euler_angles_zxy_f16 :: proc(t1, t2, t3: f16) -> (m: Matrix3f16) {
|
|
|
|
|
|
+matrix3_from_euler_angles_zxy_f16 :: proc "contextless" (t1, t2, t3: f16) -> (m: Matrix3f16) {
|
|
c1 := math.cos(t1)
|
|
c1 := math.cos(t1)
|
|
s1 := math.sin(t1)
|
|
s1 := math.sin(t1)
|
|
c2 := math.cos(t2)
|
|
c2 := math.cos(t2)
|
|
@@ -607,7 +607,7 @@ matrix3_from_euler_angles_zxy_f16 :: proc(t1, t2, t3: f16) -> (m: Matrix3f16) {
|
|
|
|
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix3_from_yaw_pitch_roll_f16 :: proc(yaw, pitch, roll: f16) -> (m: Matrix3f16) {
|
|
|
|
|
|
+matrix3_from_yaw_pitch_roll_f16 :: proc "contextless" (yaw, pitch, roll: f16) -> (m: Matrix3f16) {
|
|
ch := math.cos(yaw)
|
|
ch := math.cos(yaw)
|
|
sh := math.sin(yaw)
|
|
sh := math.sin(yaw)
|
|
cp := math.cos(pitch)
|
|
cp := math.cos(pitch)
|
|
@@ -628,7 +628,7 @@ matrix3_from_yaw_pitch_roll_f16 :: proc(yaw, pitch, roll: f16) -> (m: Matrix3f16
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-euler_angles_xyz_from_matrix3_f16 :: proc(m: Matrix3f16) -> (t1, t2, t3: f16) {
|
|
|
|
|
|
+euler_angles_xyz_from_matrix3_f16 :: proc "contextless" (m: Matrix3f16) -> (t1, t2, t3: f16) {
|
|
T1 := math.atan2(m[1, 2], m[2, 2])
|
|
T1 := math.atan2(m[1, 2], m[2, 2])
|
|
C2 := math.sqrt(m[0, 0]*m[0, 0] + m[0, 1]*m[0, 1])
|
|
C2 := math.sqrt(m[0, 0]*m[0, 0] + m[0, 1]*m[0, 1])
|
|
T2 := math.atan2(-m[0, 2], C2)
|
|
T2 := math.atan2(-m[0, 2], C2)
|
|
@@ -642,7 +642,7 @@ euler_angles_xyz_from_matrix3_f16 :: proc(m: Matrix3f16) -> (t1, t2, t3: f16) {
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-euler_angles_yxz_from_matrix3_f16 :: proc(m: Matrix3f16) -> (t1, t2, t3: f16) {
|
|
|
|
|
|
+euler_angles_yxz_from_matrix3_f16 :: proc "contextless" (m: Matrix3f16) -> (t1, t2, t3: f16) {
|
|
T1 := math.atan2(m[0, 2], m[2, 2])
|
|
T1 := math.atan2(m[0, 2], m[2, 2])
|
|
C2 := math.sqrt(m[1, 0]*m[1, 0] + m[1, 1]*m[1, 1])
|
|
C2 := math.sqrt(m[1, 0]*m[1, 0] + m[1, 1]*m[1, 1])
|
|
T2 := math.atan2(-m[1, 2], C2)
|
|
T2 := math.atan2(-m[1, 2], C2)
|
|
@@ -656,7 +656,7 @@ euler_angles_yxz_from_matrix3_f16 :: proc(m: Matrix3f16) -> (t1, t2, t3: f16) {
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-euler_angles_xzx_from_matrix3_f16 :: proc(m: Matrix3f16) -> (t1, t2, t3: f16) {
|
|
|
|
|
|
+euler_angles_xzx_from_matrix3_f16 :: proc "contextless" (m: Matrix3f16) -> (t1, t2, t3: f16) {
|
|
T1 := math.atan2(m[2, 0], m[1, 0])
|
|
T1 := math.atan2(m[2, 0], m[1, 0])
|
|
S2 := math.sqrt(m[0, 1]*m[0, 1] + m[0, 2]*m[0, 2])
|
|
S2 := math.sqrt(m[0, 1]*m[0, 1] + m[0, 2]*m[0, 2])
|
|
T2 := math.atan2(S2, m[0, 0])
|
|
T2 := math.atan2(S2, m[0, 0])
|
|
@@ -670,7 +670,7 @@ euler_angles_xzx_from_matrix3_f16 :: proc(m: Matrix3f16) -> (t1, t2, t3: f16) {
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-euler_angles_xyx_from_matrix3_f16 :: proc(m: Matrix3f16) -> (t1, t2, t3: f16) {
|
|
|
|
|
|
+euler_angles_xyx_from_matrix3_f16 :: proc "contextless" (m: Matrix3f16) -> (t1, t2, t3: f16) {
|
|
T1 := math.atan2(m[1, 0], -m[2, 0])
|
|
T1 := math.atan2(m[1, 0], -m[2, 0])
|
|
S2 := math.sqrt(m[0, 1]*m[0, 1] + m[0, 2]*m[0, 2])
|
|
S2 := math.sqrt(m[0, 1]*m[0, 1] + m[0, 2]*m[0, 2])
|
|
T2 := math.atan2(S2, m[0, 0])
|
|
T2 := math.atan2(S2, m[0, 0])
|
|
@@ -684,7 +684,7 @@ euler_angles_xyx_from_matrix3_f16 :: proc(m: Matrix3f16) -> (t1, t2, t3: f16) {
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-euler_angles_yxy_from_matrix3_f16 :: proc(m: Matrix3f16) -> (t1, t2, t3: f16) {
|
|
|
|
|
|
+euler_angles_yxy_from_matrix3_f16 :: proc "contextless" (m: Matrix3f16) -> (t1, t2, t3: f16) {
|
|
T1 := math.atan2(m[0, 1], m[2, 1])
|
|
T1 := math.atan2(m[0, 1], m[2, 1])
|
|
S2 := math.sqrt(m[1, 0]*m[1, 0] + m[1, 2]*m[1, 2])
|
|
S2 := math.sqrt(m[1, 0]*m[1, 0] + m[1, 2]*m[1, 2])
|
|
T2 := math.atan2(S2, m[1, 1])
|
|
T2 := math.atan2(S2, m[1, 1])
|
|
@@ -698,7 +698,7 @@ euler_angles_yxy_from_matrix3_f16 :: proc(m: Matrix3f16) -> (t1, t2, t3: f16) {
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-euler_angles_yzy_from_matrix3_f16 :: proc(m: Matrix3f16) -> (t1, t2, t3: f16) {
|
|
|
|
|
|
+euler_angles_yzy_from_matrix3_f16 :: proc "contextless" (m: Matrix3f16) -> (t1, t2, t3: f16) {
|
|
T1 := math.atan2(m[2, 1], -m[0, 1])
|
|
T1 := math.atan2(m[2, 1], -m[0, 1])
|
|
S2 := math.sqrt(m[1, 0]*m[1, 0] + m[1, 2]*m[1, 2])
|
|
S2 := math.sqrt(m[1, 0]*m[1, 0] + m[1, 2]*m[1, 2])
|
|
T2 := math.atan2(S2, m[1, 1])
|
|
T2 := math.atan2(S2, m[1, 1])
|
|
@@ -711,7 +711,7 @@ euler_angles_yzy_from_matrix3_f16 :: proc(m: Matrix3f16) -> (t1, t2, t3: f16) {
|
|
return
|
|
return
|
|
}
|
|
}
|
|
@(require_results)
|
|
@(require_results)
|
|
-euler_angles_zyz_from_matrix3_f16 :: proc(m: Matrix3f16) -> (t1, t2, t3: f16) {
|
|
|
|
|
|
+euler_angles_zyz_from_matrix3_f16 :: proc "contextless" (m: Matrix3f16) -> (t1, t2, t3: f16) {
|
|
T1 := math.atan2(m[1, 2], m[0, 2])
|
|
T1 := math.atan2(m[1, 2], m[0, 2])
|
|
S2 := math.sqrt(m[2, 0]*m[2, 0] + m[2, 1]*m[2, 1])
|
|
S2 := math.sqrt(m[2, 0]*m[2, 0] + m[2, 1]*m[2, 1])
|
|
T2 := math.atan2(S2, m[2, 2])
|
|
T2 := math.atan2(S2, m[2, 2])
|
|
@@ -725,7 +725,7 @@ euler_angles_zyz_from_matrix3_f16 :: proc(m: Matrix3f16) -> (t1, t2, t3: f16) {
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-euler_angles_zxz_from_matrix3_f16 :: proc(m: Matrix3f16) -> (t1, t2, t3: f16) {
|
|
|
|
|
|
+euler_angles_zxz_from_matrix3_f16 :: proc "contextless" (m: Matrix3f16) -> (t1, t2, t3: f16) {
|
|
T1 := math.atan2(m[0, 2], -m[1, 2])
|
|
T1 := math.atan2(m[0, 2], -m[1, 2])
|
|
S2 := math.sqrt(m[2, 0]*m[2, 0] + m[2, 1]*m[2, 1])
|
|
S2 := math.sqrt(m[2, 0]*m[2, 0] + m[2, 1]*m[2, 1])
|
|
T2 := math.atan2(S2, m[2, 2])
|
|
T2 := math.atan2(S2, m[2, 2])
|
|
@@ -739,7 +739,7 @@ euler_angles_zxz_from_matrix3_f16 :: proc(m: Matrix3f16) -> (t1, t2, t3: f16) {
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-euler_angles_xzy_from_matrix3_f16 :: proc(m: Matrix3f16) -> (t1, t2, t3: f16) {
|
|
|
|
|
|
+euler_angles_xzy_from_matrix3_f16 :: proc "contextless" (m: Matrix3f16) -> (t1, t2, t3: f16) {
|
|
T1 := math.atan2(m[2, 1], m[1, 1])
|
|
T1 := math.atan2(m[2, 1], m[1, 1])
|
|
C2 := math.sqrt(m[0, 0]*m[0, 0] + m[0, 2]*m[0, 2])
|
|
C2 := math.sqrt(m[0, 0]*m[0, 0] + m[0, 2]*m[0, 2])
|
|
T2 := math.atan2(-m[0, 1], C2)
|
|
T2 := math.atan2(-m[0, 1], C2)
|
|
@@ -753,7 +753,7 @@ euler_angles_xzy_from_matrix3_f16 :: proc(m: Matrix3f16) -> (t1, t2, t3: f16) {
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-euler_angles_yzx_from_matrix3_f16 :: proc(m: Matrix3f16) -> (t1, t2, t3: f16) {
|
|
|
|
|
|
+euler_angles_yzx_from_matrix3_f16 :: proc "contextless" (m: Matrix3f16) -> (t1, t2, t3: f16) {
|
|
T1 := math.atan2(-m[2, 0], m[0, 0])
|
|
T1 := math.atan2(-m[2, 0], m[0, 0])
|
|
C2 := math.sqrt(m[1, 1]*m[1, 1] + m[1, 2]*m[1, 2])
|
|
C2 := math.sqrt(m[1, 1]*m[1, 1] + m[1, 2]*m[1, 2])
|
|
T2 := math.atan2(m[1, 0], C2)
|
|
T2 := math.atan2(m[1, 0], C2)
|
|
@@ -767,7 +767,7 @@ euler_angles_yzx_from_matrix3_f16 :: proc(m: Matrix3f16) -> (t1, t2, t3: f16) {
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-euler_angles_zyx_from_matrix3_f16 :: proc(m: Matrix3f16) -> (t1, t2, t3: f16) {
|
|
|
|
|
|
+euler_angles_zyx_from_matrix3_f16 :: proc "contextless" (m: Matrix3f16) -> (t1, t2, t3: f16) {
|
|
T1 := math.atan2(m[1, 0], m[0, 0])
|
|
T1 := math.atan2(m[1, 0], m[0, 0])
|
|
C2 := math.sqrt(m[2, 1]*m[2, 1] + m[2, 2]*m[2, 2])
|
|
C2 := math.sqrt(m[2, 1]*m[2, 1] + m[2, 2]*m[2, 2])
|
|
T2 := math.atan2(-m[2, 0], C2)
|
|
T2 := math.atan2(-m[2, 0], C2)
|
|
@@ -781,7 +781,7 @@ euler_angles_zyx_from_matrix3_f16 :: proc(m: Matrix3f16) -> (t1, t2, t3: f16) {
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-euler_angles_zxy_from_matrix3_f16 :: proc(m: Matrix3f16) -> (t1, t2, t3: f16) {
|
|
|
|
|
|
+euler_angles_zxy_from_matrix3_f16 :: proc "contextless" (m: Matrix3f16) -> (t1, t2, t3: f16) {
|
|
T1 := math.atan2(-m[0, 1], m[1, 1])
|
|
T1 := math.atan2(-m[0, 1], m[1, 1])
|
|
C2 := math.sqrt(m[2, 0]*m[2, 0] + m[2, 2]*m[2, 2])
|
|
C2 := math.sqrt(m[2, 0]*m[2, 0] + m[2, 2]*m[2, 2])
|
|
T2 := math.atan2(m[2, 1], C2)
|
|
T2 := math.atan2(m[2, 1], C2)
|
|
@@ -799,7 +799,7 @@ euler_angles_zxy_from_matrix3_f16 :: proc(m: Matrix3f16) -> (t1, t2, t3: f16) {
|
|
|
|
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix4_from_euler_angle_x_f16 :: proc(angle_x: f16) -> (m: Matrix4f16) {
|
|
|
|
|
|
+matrix4_from_euler_angle_x_f16 :: proc "contextless" (angle_x: f16) -> (m: Matrix4f16) {
|
|
cos_x, sin_x := math.cos(angle_x), math.sin(angle_x)
|
|
cos_x, sin_x := math.cos(angle_x), math.sin(angle_x)
|
|
m[0, 0] = 1
|
|
m[0, 0] = 1
|
|
m[1, 1] = +cos_x
|
|
m[1, 1] = +cos_x
|
|
@@ -810,7 +810,7 @@ matrix4_from_euler_angle_x_f16 :: proc(angle_x: f16) -> (m: Matrix4f16) {
|
|
return
|
|
return
|
|
}
|
|
}
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix4_from_euler_angle_y_f16 :: proc(angle_y: f16) -> (m: Matrix4f16) {
|
|
|
|
|
|
+matrix4_from_euler_angle_y_f16 :: proc "contextless" (angle_y: f16) -> (m: Matrix4f16) {
|
|
cos_y, sin_y := math.cos(angle_y), math.sin(angle_y)
|
|
cos_y, sin_y := math.cos(angle_y), math.sin(angle_y)
|
|
m[0, 0] = +cos_y
|
|
m[0, 0] = +cos_y
|
|
m[0, 2] = -sin_y
|
|
m[0, 2] = -sin_y
|
|
@@ -821,7 +821,7 @@ matrix4_from_euler_angle_y_f16 :: proc(angle_y: f16) -> (m: Matrix4f16) {
|
|
return
|
|
return
|
|
}
|
|
}
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix4_from_euler_angle_z_f16 :: proc(angle_z: f16) -> (m: Matrix4f16) {
|
|
|
|
|
|
+matrix4_from_euler_angle_z_f16 :: proc "contextless" (angle_z: f16) -> (m: Matrix4f16) {
|
|
cos_z, sin_z := math.cos(angle_z), math.sin(angle_z)
|
|
cos_z, sin_z := math.cos(angle_z), math.sin(angle_z)
|
|
m[0, 0] = +cos_z
|
|
m[0, 0] = +cos_z
|
|
m[0, 1] = +sin_z
|
|
m[0, 1] = +sin_z
|
|
@@ -834,7 +834,7 @@ matrix4_from_euler_angle_z_f16 :: proc(angle_z: f16) -> (m: Matrix4f16) {
|
|
|
|
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix4_from_derived_euler_angle_x_f16 :: proc(angle_x: f16, angular_velocity_x: f16) -> (m: Matrix4f16) {
|
|
|
|
|
|
+matrix4_from_derived_euler_angle_x_f16 :: proc "contextless" (angle_x: f16, angular_velocity_x: f16) -> (m: Matrix4f16) {
|
|
cos_x := math.cos(angle_x) * angular_velocity_x
|
|
cos_x := math.cos(angle_x) * angular_velocity_x
|
|
sin_x := math.sin(angle_x) * angular_velocity_x
|
|
sin_x := math.sin(angle_x) * angular_velocity_x
|
|
m[0, 0] = 1
|
|
m[0, 0] = 1
|
|
@@ -846,7 +846,7 @@ matrix4_from_derived_euler_angle_x_f16 :: proc(angle_x: f16, angular_velocity_x:
|
|
return
|
|
return
|
|
}
|
|
}
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix4_from_derived_euler_angle_y_f16 :: proc(angle_y: f16, angular_velocity_y: f16) -> (m: Matrix4f16) {
|
|
|
|
|
|
+matrix4_from_derived_euler_angle_y_f16 :: proc "contextless" (angle_y: f16, angular_velocity_y: f16) -> (m: Matrix4f16) {
|
|
cos_y := math.cos(angle_y) * angular_velocity_y
|
|
cos_y := math.cos(angle_y) * angular_velocity_y
|
|
sin_y := math.sin(angle_y) * angular_velocity_y
|
|
sin_y := math.sin(angle_y) * angular_velocity_y
|
|
m[0, 0] = +cos_y
|
|
m[0, 0] = +cos_y
|
|
@@ -858,7 +858,7 @@ matrix4_from_derived_euler_angle_y_f16 :: proc(angle_y: f16, angular_velocity_y:
|
|
return
|
|
return
|
|
}
|
|
}
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix4_from_derived_euler_angle_z_f16 :: proc(angle_z: f16, angular_velocity_z: f16) -> (m: Matrix4f16) {
|
|
|
|
|
|
+matrix4_from_derived_euler_angle_z_f16 :: proc "contextless" (angle_z: f16, angular_velocity_z: f16) -> (m: Matrix4f16) {
|
|
cos_z := math.cos(angle_z) * angular_velocity_z
|
|
cos_z := math.cos(angle_z) * angular_velocity_z
|
|
sin_z := math.sin(angle_z) * angular_velocity_z
|
|
sin_z := math.sin(angle_z) * angular_velocity_z
|
|
m[0, 0] = +cos_z
|
|
m[0, 0] = +cos_z
|
|
@@ -872,7 +872,7 @@ matrix4_from_derived_euler_angle_z_f16 :: proc(angle_z: f16, angular_velocity_z:
|
|
|
|
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix4_from_euler_angles_xy_f16 :: proc(angle_x, angle_y: f16) -> (m: Matrix4f16) {
|
|
|
|
|
|
+matrix4_from_euler_angles_xy_f16 :: proc "contextless" (angle_x, angle_y: f16) -> (m: Matrix4f16) {
|
|
cos_x, sin_x := math.cos(angle_x), math.sin(angle_x)
|
|
cos_x, sin_x := math.cos(angle_x), math.sin(angle_x)
|
|
cos_y, sin_y := math.cos(angle_y), math.sin(angle_y)
|
|
cos_y, sin_y := math.cos(angle_y), math.sin(angle_y)
|
|
m[0, 0] = cos_y
|
|
m[0, 0] = cos_y
|
|
@@ -889,7 +889,7 @@ matrix4_from_euler_angles_xy_f16 :: proc(angle_x, angle_y: f16) -> (m: Matrix4f1
|
|
|
|
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix4_from_euler_angles_yx_f16 :: proc(angle_y, angle_x: f16) -> (m: Matrix4f16) {
|
|
|
|
|
|
+matrix4_from_euler_angles_yx_f16 :: proc "contextless" (angle_y, angle_x: f16) -> (m: Matrix4f16) {
|
|
cos_x, sin_x := math.cos(angle_x), math.sin(angle_x)
|
|
cos_x, sin_x := math.cos(angle_x), math.sin(angle_x)
|
|
cos_y, sin_y := math.cos(angle_y), math.sin(angle_y)
|
|
cos_y, sin_y := math.cos(angle_y), math.sin(angle_y)
|
|
m[0, 0] = cos_y
|
|
m[0, 0] = cos_y
|
|
@@ -905,25 +905,25 @@ matrix4_from_euler_angles_yx_f16 :: proc(angle_y, angle_x: f16) -> (m: Matrix4f1
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix4_from_euler_angles_xz_f16 :: proc(angle_x, angle_z: f16) -> (m: Matrix4f16) {
|
|
|
|
|
|
+matrix4_from_euler_angles_xz_f16 :: proc "contextless" (angle_x, angle_z: f16) -> (m: Matrix4f16) {
|
|
return mul(matrix4_from_euler_angle_x(angle_x), matrix4_from_euler_angle_z(angle_z))
|
|
return mul(matrix4_from_euler_angle_x(angle_x), matrix4_from_euler_angle_z(angle_z))
|
|
}
|
|
}
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix4_from_euler_angles_zx_f16 :: proc(angle_z, angle_x: f16) -> (m: Matrix4f16) {
|
|
|
|
|
|
+matrix4_from_euler_angles_zx_f16 :: proc "contextless" (angle_z, angle_x: f16) -> (m: Matrix4f16) {
|
|
return mul(matrix4_from_euler_angle_z(angle_z), matrix4_from_euler_angle_x(angle_x))
|
|
return mul(matrix4_from_euler_angle_z(angle_z), matrix4_from_euler_angle_x(angle_x))
|
|
}
|
|
}
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix4_from_euler_angles_yz_f16 :: proc(angle_y, angle_z: f16) -> (m: Matrix4f16) {
|
|
|
|
|
|
+matrix4_from_euler_angles_yz_f16 :: proc "contextless" (angle_y, angle_z: f16) -> (m: Matrix4f16) {
|
|
return mul(matrix4_from_euler_angle_y(angle_y), matrix4_from_euler_angle_z(angle_z))
|
|
return mul(matrix4_from_euler_angle_y(angle_y), matrix4_from_euler_angle_z(angle_z))
|
|
}
|
|
}
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix4_from_euler_angles_zy_f16 :: proc(angle_z, angle_y: f16) -> (m: Matrix4f16) {
|
|
|
|
|
|
+matrix4_from_euler_angles_zy_f16 :: proc "contextless" (angle_z, angle_y: f16) -> (m: Matrix4f16) {
|
|
return mul(matrix4_from_euler_angle_z(angle_z), matrix4_from_euler_angle_y(angle_y))
|
|
return mul(matrix4_from_euler_angle_z(angle_z), matrix4_from_euler_angle_y(angle_y))
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix4_from_euler_angles_xyz_f16 :: proc(t1, t2, t3: f16) -> (m: Matrix4f16) {
|
|
|
|
|
|
+matrix4_from_euler_angles_xyz_f16 :: proc "contextless" (t1, t2, t3: f16) -> (m: Matrix4f16) {
|
|
c1 := math.cos(-t1)
|
|
c1 := math.cos(-t1)
|
|
c2 := math.cos(-t2)
|
|
c2 := math.cos(-t2)
|
|
c3 := math.cos(-t3)
|
|
c3 := math.cos(-t3)
|
|
@@ -951,7 +951,7 @@ matrix4_from_euler_angles_xyz_f16 :: proc(t1, t2, t3: f16) -> (m: Matrix4f16) {
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix4_from_euler_angles_yxz_f16 :: proc(yaw, pitch, roll: f16) -> (m: Matrix4f16) {
|
|
|
|
|
|
+matrix4_from_euler_angles_yxz_f16 :: proc "contextless" (yaw, pitch, roll: f16) -> (m: Matrix4f16) {
|
|
ch := math.cos(yaw)
|
|
ch := math.cos(yaw)
|
|
sh := math.sin(yaw)
|
|
sh := math.sin(yaw)
|
|
cp := math.cos(pitch)
|
|
cp := math.cos(pitch)
|
|
@@ -979,7 +979,7 @@ matrix4_from_euler_angles_yxz_f16 :: proc(yaw, pitch, roll: f16) -> (m: Matrix4f
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix4_from_euler_angles_xzx_f16 :: proc(t1, t2, t3: f16) -> (m: Matrix4f16) {
|
|
|
|
|
|
+matrix4_from_euler_angles_xzx_f16 :: proc "contextless" (t1, t2, t3: f16) -> (m: Matrix4f16) {
|
|
c1 := math.cos(t1)
|
|
c1 := math.cos(t1)
|
|
s1 := math.sin(t1)
|
|
s1 := math.sin(t1)
|
|
c2 := math.cos(t2)
|
|
c2 := math.cos(t2)
|
|
@@ -1007,7 +1007,7 @@ matrix4_from_euler_angles_xzx_f16 :: proc(t1, t2, t3: f16) -> (m: Matrix4f16) {
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix4_from_euler_angles_xyx_f16 :: proc(t1, t2, t3: f16) -> (m: Matrix4f16) {
|
|
|
|
|
|
+matrix4_from_euler_angles_xyx_f16 :: proc "contextless" (t1, t2, t3: f16) -> (m: Matrix4f16) {
|
|
c1 := math.cos(t1)
|
|
c1 := math.cos(t1)
|
|
s1 := math.sin(t1)
|
|
s1 := math.sin(t1)
|
|
c2 := math.cos(t2)
|
|
c2 := math.cos(t2)
|
|
@@ -1035,7 +1035,7 @@ matrix4_from_euler_angles_xyx_f16 :: proc(t1, t2, t3: f16) -> (m: Matrix4f16) {
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix4_from_euler_angles_yxy_f16 :: proc(t1, t2, t3: f16) -> (m: Matrix4f16) {
|
|
|
|
|
|
+matrix4_from_euler_angles_yxy_f16 :: proc "contextless" (t1, t2, t3: f16) -> (m: Matrix4f16) {
|
|
c1 := math.cos(t1)
|
|
c1 := math.cos(t1)
|
|
s1 := math.sin(t1)
|
|
s1 := math.sin(t1)
|
|
c2 := math.cos(t2)
|
|
c2 := math.cos(t2)
|
|
@@ -1063,7 +1063,7 @@ matrix4_from_euler_angles_yxy_f16 :: proc(t1, t2, t3: f16) -> (m: Matrix4f16) {
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix4_from_euler_angles_yzy_f16 :: proc(t1, t2, t3: f16) -> (m: Matrix4f16) {
|
|
|
|
|
|
+matrix4_from_euler_angles_yzy_f16 :: proc "contextless" (t1, t2, t3: f16) -> (m: Matrix4f16) {
|
|
c1 := math.cos(t1)
|
|
c1 := math.cos(t1)
|
|
s1 := math.sin(t1)
|
|
s1 := math.sin(t1)
|
|
c2 := math.cos(t2)
|
|
c2 := math.cos(t2)
|
|
@@ -1091,7 +1091,7 @@ matrix4_from_euler_angles_yzy_f16 :: proc(t1, t2, t3: f16) -> (m: Matrix4f16) {
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix4_from_euler_angles_zyz_f16 :: proc(t1, t2, t3: f16) -> (m: Matrix4f16) {
|
|
|
|
|
|
+matrix4_from_euler_angles_zyz_f16 :: proc "contextless" (t1, t2, t3: f16) -> (m: Matrix4f16) {
|
|
c1 := math.cos(t1)
|
|
c1 := math.cos(t1)
|
|
s1 := math.sin(t1)
|
|
s1 := math.sin(t1)
|
|
c2 := math.cos(t2)
|
|
c2 := math.cos(t2)
|
|
@@ -1119,7 +1119,7 @@ matrix4_from_euler_angles_zyz_f16 :: proc(t1, t2, t3: f16) -> (m: Matrix4f16) {
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix4_from_euler_angles_zxz_f16 :: proc(t1, t2, t3: f16) -> (m: Matrix4f16) {
|
|
|
|
|
|
+matrix4_from_euler_angles_zxz_f16 :: proc "contextless" (t1, t2, t3: f16) -> (m: Matrix4f16) {
|
|
c1 := math.cos(t1)
|
|
c1 := math.cos(t1)
|
|
s1 := math.sin(t1)
|
|
s1 := math.sin(t1)
|
|
c2 := math.cos(t2)
|
|
c2 := math.cos(t2)
|
|
@@ -1148,7 +1148,7 @@ matrix4_from_euler_angles_zxz_f16 :: proc(t1, t2, t3: f16) -> (m: Matrix4f16) {
|
|
|
|
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix4_from_euler_angles_xzy_f16 :: proc(t1, t2, t3: f16) -> (m: Matrix4f16) {
|
|
|
|
|
|
+matrix4_from_euler_angles_xzy_f16 :: proc "contextless" (t1, t2, t3: f16) -> (m: Matrix4f16) {
|
|
c1 := math.cos(t1)
|
|
c1 := math.cos(t1)
|
|
s1 := math.sin(t1)
|
|
s1 := math.sin(t1)
|
|
c2 := math.cos(t2)
|
|
c2 := math.cos(t2)
|
|
@@ -1176,7 +1176,7 @@ matrix4_from_euler_angles_xzy_f16 :: proc(t1, t2, t3: f16) -> (m: Matrix4f16) {
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix4_from_euler_angles_yzx_f16 :: proc(t1, t2, t3: f16) -> (m: Matrix4f16) {
|
|
|
|
|
|
+matrix4_from_euler_angles_yzx_f16 :: proc "contextless" (t1, t2, t3: f16) -> (m: Matrix4f16) {
|
|
c1 := math.cos(t1)
|
|
c1 := math.cos(t1)
|
|
s1 := math.sin(t1)
|
|
s1 := math.sin(t1)
|
|
c2 := math.cos(t2)
|
|
c2 := math.cos(t2)
|
|
@@ -1204,7 +1204,7 @@ matrix4_from_euler_angles_yzx_f16 :: proc(t1, t2, t3: f16) -> (m: Matrix4f16) {
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix4_from_euler_angles_zyx_f16 :: proc(t1, t2, t3: f16) -> (m: Matrix4f16) {
|
|
|
|
|
|
+matrix4_from_euler_angles_zyx_f16 :: proc "contextless" (t1, t2, t3: f16) -> (m: Matrix4f16) {
|
|
c1 := math.cos(t1)
|
|
c1 := math.cos(t1)
|
|
s1 := math.sin(t1)
|
|
s1 := math.sin(t1)
|
|
c2 := math.cos(t2)
|
|
c2 := math.cos(t2)
|
|
@@ -1232,7 +1232,7 @@ matrix4_from_euler_angles_zyx_f16 :: proc(t1, t2, t3: f16) -> (m: Matrix4f16) {
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix4_from_euler_angles_zxy_f16 :: proc(t1, t2, t3: f16) -> (m: Matrix4f16) {
|
|
|
|
|
|
+matrix4_from_euler_angles_zxy_f16 :: proc "contextless" (t1, t2, t3: f16) -> (m: Matrix4f16) {
|
|
c1 := math.cos(t1)
|
|
c1 := math.cos(t1)
|
|
s1 := math.sin(t1)
|
|
s1 := math.sin(t1)
|
|
c2 := math.cos(t2)
|
|
c2 := math.cos(t2)
|
|
@@ -1261,7 +1261,7 @@ matrix4_from_euler_angles_zxy_f16 :: proc(t1, t2, t3: f16) -> (m: Matrix4f16) {
|
|
|
|
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-matrix4_from_yaw_pitch_roll_f16 :: proc(yaw, pitch, roll: f16) -> (m: Matrix4f16) {
|
|
|
|
|
|
+matrix4_from_yaw_pitch_roll_f16 :: proc "contextless" (yaw, pitch, roll: f16) -> (m: Matrix4f16) {
|
|
ch := math.cos(yaw)
|
|
ch := math.cos(yaw)
|
|
sh := math.sin(yaw)
|
|
sh := math.sin(yaw)
|
|
cp := math.cos(pitch)
|
|
cp := math.cos(pitch)
|
|
@@ -1289,7 +1289,7 @@ matrix4_from_yaw_pitch_roll_f16 :: proc(yaw, pitch, roll: f16) -> (m: Matrix4f16
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-euler_angles_xyz_from_matrix4_f16 :: proc(m: Matrix4f16) -> (t1, t2, t3: f16) {
|
|
|
|
|
|
+euler_angles_xyz_from_matrix4_f16 :: proc "contextless" (m: Matrix4f16) -> (t1, t2, t3: f16) {
|
|
T1 := math.atan2(m[1, 2], m[2, 2])
|
|
T1 := math.atan2(m[1, 2], m[2, 2])
|
|
C2 := math.sqrt(m[0, 0]*m[0, 0] + m[0, 1]*m[0, 1])
|
|
C2 := math.sqrt(m[0, 0]*m[0, 0] + m[0, 1]*m[0, 1])
|
|
T2 := math.atan2(-m[0, 2], C2)
|
|
T2 := math.atan2(-m[0, 2], C2)
|
|
@@ -1303,7 +1303,7 @@ euler_angles_xyz_from_matrix4_f16 :: proc(m: Matrix4f16) -> (t1, t2, t3: f16) {
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-euler_angles_yxz_from_matrix4_f16 :: proc(m: Matrix4f16) -> (t1, t2, t3: f16) {
|
|
|
|
|
|
+euler_angles_yxz_from_matrix4_f16 :: proc "contextless" (m: Matrix4f16) -> (t1, t2, t3: f16) {
|
|
T1 := math.atan2(m[0, 2], m[2, 2])
|
|
T1 := math.atan2(m[0, 2], m[2, 2])
|
|
C2 := math.sqrt(m[1, 0]*m[1, 0] + m[1, 1]*m[1, 1])
|
|
C2 := math.sqrt(m[1, 0]*m[1, 0] + m[1, 1]*m[1, 1])
|
|
T2 := math.atan2(-m[1, 2], C2)
|
|
T2 := math.atan2(-m[1, 2], C2)
|
|
@@ -1317,7 +1317,7 @@ euler_angles_yxz_from_matrix4_f16 :: proc(m: Matrix4f16) -> (t1, t2, t3: f16) {
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-euler_angles_xzx_from_matrix4_f16 :: proc(m: Matrix4f16) -> (t1, t2, t3: f16) {
|
|
|
|
|
|
+euler_angles_xzx_from_matrix4_f16 :: proc "contextless" (m: Matrix4f16) -> (t1, t2, t3: f16) {
|
|
T1 := math.atan2(m[2, 0], m[1, 0])
|
|
T1 := math.atan2(m[2, 0], m[1, 0])
|
|
S2 := math.sqrt(m[0, 1]*m[0, 1] + m[0, 2]*m[0, 2])
|
|
S2 := math.sqrt(m[0, 1]*m[0, 1] + m[0, 2]*m[0, 2])
|
|
T2 := math.atan2(S2, m[0, 0])
|
|
T2 := math.atan2(S2, m[0, 0])
|
|
@@ -1331,7 +1331,7 @@ euler_angles_xzx_from_matrix4_f16 :: proc(m: Matrix4f16) -> (t1, t2, t3: f16) {
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-euler_angles_xyx_from_matrix4_f16 :: proc(m: Matrix4f16) -> (t1, t2, t3: f16) {
|
|
|
|
|
|
+euler_angles_xyx_from_matrix4_f16 :: proc "contextless" (m: Matrix4f16) -> (t1, t2, t3: f16) {
|
|
T1 := math.atan2(m[1, 0], -m[2, 0])
|
|
T1 := math.atan2(m[1, 0], -m[2, 0])
|
|
S2 := math.sqrt(m[0, 1]*m[0, 1] + m[0, 2]*m[0, 2])
|
|
S2 := math.sqrt(m[0, 1]*m[0, 1] + m[0, 2]*m[0, 2])
|
|
T2 := math.atan2(S2, m[0, 0])
|
|
T2 := math.atan2(S2, m[0, 0])
|
|
@@ -1345,7 +1345,7 @@ euler_angles_xyx_from_matrix4_f16 :: proc(m: Matrix4f16) -> (t1, t2, t3: f16) {
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-euler_angles_yxy_from_matrix4_f16 :: proc(m: Matrix4f16) -> (t1, t2, t3: f16) {
|
|
|
|
|
|
+euler_angles_yxy_from_matrix4_f16 :: proc "contextless" (m: Matrix4f16) -> (t1, t2, t3: f16) {
|
|
T1 := math.atan2(m[0, 1], m[2, 1])
|
|
T1 := math.atan2(m[0, 1], m[2, 1])
|
|
S2 := math.sqrt(m[1, 0]*m[1, 0] + m[1, 2]*m[1, 2])
|
|
S2 := math.sqrt(m[1, 0]*m[1, 0] + m[1, 2]*m[1, 2])
|
|
T2 := math.atan2(S2, m[1, 1])
|
|
T2 := math.atan2(S2, m[1, 1])
|
|
@@ -1359,7 +1359,7 @@ euler_angles_yxy_from_matrix4_f16 :: proc(m: Matrix4f16) -> (t1, t2, t3: f16) {
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-euler_angles_yzy_from_matrix4_f16 :: proc(m: Matrix4f16) -> (t1, t2, t3: f16) {
|
|
|
|
|
|
+euler_angles_yzy_from_matrix4_f16 :: proc "contextless" (m: Matrix4f16) -> (t1, t2, t3: f16) {
|
|
T1 := math.atan2(m[2, 1], -m[0, 1])
|
|
T1 := math.atan2(m[2, 1], -m[0, 1])
|
|
S2 := math.sqrt(m[1, 0]*m[1, 0] + m[1, 2]*m[1, 2])
|
|
S2 := math.sqrt(m[1, 0]*m[1, 0] + m[1, 2]*m[1, 2])
|
|
T2 := math.atan2(S2, m[1, 1])
|
|
T2 := math.atan2(S2, m[1, 1])
|
|
@@ -1372,7 +1372,7 @@ euler_angles_yzy_from_matrix4_f16 :: proc(m: Matrix4f16) -> (t1, t2, t3: f16) {
|
|
return
|
|
return
|
|
}
|
|
}
|
|
@(require_results)
|
|
@(require_results)
|
|
-euler_angles_zyz_from_matrix4_f16 :: proc(m: Matrix4f16) -> (t1, t2, t3: f16) {
|
|
|
|
|
|
+euler_angles_zyz_from_matrix4_f16 :: proc "contextless" (m: Matrix4f16) -> (t1, t2, t3: f16) {
|
|
T1 := math.atan2(m[1, 2], m[0, 2])
|
|
T1 := math.atan2(m[1, 2], m[0, 2])
|
|
S2 := math.sqrt(m[2, 0]*m[2, 0] + m[2, 1]*m[2, 1])
|
|
S2 := math.sqrt(m[2, 0]*m[2, 0] + m[2, 1]*m[2, 1])
|
|
T2 := math.atan2(S2, m[2, 2])
|
|
T2 := math.atan2(S2, m[2, 2])
|
|
@@ -1386,7 +1386,7 @@ euler_angles_zyz_from_matrix4_f16 :: proc(m: Matrix4f16) -> (t1, t2, t3: f16) {
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-euler_angles_zxz_from_matrix4_f16 :: proc(m: Matrix4f16) -> (t1, t2, t3: f16) {
|
|
|
|
|
|
+euler_angles_zxz_from_matrix4_f16 :: proc "contextless" (m: Matrix4f16) -> (t1, t2, t3: f16) {
|
|
T1 := math.atan2(m[0, 2], -m[1, 2])
|
|
T1 := math.atan2(m[0, 2], -m[1, 2])
|
|
S2 := math.sqrt(m[2, 0]*m[2, 0] + m[2, 1]*m[2, 1])
|
|
S2 := math.sqrt(m[2, 0]*m[2, 0] + m[2, 1]*m[2, 1])
|
|
T2 := math.atan2(S2, m[2, 2])
|
|
T2 := math.atan2(S2, m[2, 2])
|
|
@@ -1400,7 +1400,7 @@ euler_angles_zxz_from_matrix4_f16 :: proc(m: Matrix4f16) -> (t1, t2, t3: f16) {
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-euler_angles_xzy_from_matrix4_f16 :: proc(m: Matrix4f16) -> (t1, t2, t3: f16) {
|
|
|
|
|
|
+euler_angles_xzy_from_matrix4_f16 :: proc "contextless" (m: Matrix4f16) -> (t1, t2, t3: f16) {
|
|
T1 := math.atan2(m[2, 1], m[1, 1])
|
|
T1 := math.atan2(m[2, 1], m[1, 1])
|
|
C2 := math.sqrt(m[0, 0]*m[0, 0] + m[0, 2]*m[0, 2])
|
|
C2 := math.sqrt(m[0, 0]*m[0, 0] + m[0, 2]*m[0, 2])
|
|
T2 := math.atan2(-m[0, 1], C2)
|
|
T2 := math.atan2(-m[0, 1], C2)
|
|
@@ -1414,7 +1414,7 @@ euler_angles_xzy_from_matrix4_f16 :: proc(m: Matrix4f16) -> (t1, t2, t3: f16) {
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-euler_angles_yzx_from_matrix4_f16 :: proc(m: Matrix4f16) -> (t1, t2, t3: f16) {
|
|
|
|
|
|
+euler_angles_yzx_from_matrix4_f16 :: proc "contextless" (m: Matrix4f16) -> (t1, t2, t3: f16) {
|
|
T1 := math.atan2(-m[2, 0], m[0, 0])
|
|
T1 := math.atan2(-m[2, 0], m[0, 0])
|
|
C2 := math.sqrt(m[1, 1]*m[1, 1] + m[1, 2]*m[1, 2])
|
|
C2 := math.sqrt(m[1, 1]*m[1, 1] + m[1, 2]*m[1, 2])
|
|
T2 := math.atan2(m[1, 0], C2)
|
|
T2 := math.atan2(m[1, 0], C2)
|
|
@@ -1428,7 +1428,7 @@ euler_angles_yzx_from_matrix4_f16 :: proc(m: Matrix4f16) -> (t1, t2, t3: f16) {
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-euler_angles_zyx_from_matrix4_f16 :: proc(m: Matrix4f16) -> (t1, t2, t3: f16) {
|
|
|
|
|
|
+euler_angles_zyx_from_matrix4_f16 :: proc "contextless" (m: Matrix4f16) -> (t1, t2, t3: f16) {
|
|
T1 := math.atan2(m[1, 0], m[0, 0])
|
|
T1 := math.atan2(m[1, 0], m[0, 0])
|
|
C2 := math.sqrt(m[2, 1]*m[2, 1] + m[2, 2]*m[2, 2])
|
|
C2 := math.sqrt(m[2, 1]*m[2, 1] + m[2, 2]*m[2, 2])
|
|
T2 := math.atan2(-m[2, 0], C2)
|
|
T2 := math.atan2(-m[2, 0], C2)
|
|
@@ -1442,7 +1442,7 @@ euler_angles_zyx_from_matrix4_f16 :: proc(m: Matrix4f16) -> (t1, t2, t3: f16) {
|
|
}
|
|
}
|
|
|
|
|
|
@(require_results)
|
|
@(require_results)
|
|
-euler_angles_zxy_from_matrix4_f16 :: proc(m: Matrix4f16) -> (t1, t2, t3: f16) {
|
|
|
|
|
|
+euler_angles_zxy_from_matrix4_f16 :: proc "contextless" (m: Matrix4f16) -> (t1, t2, t3: f16) {
|
|
T1 := math.atan2(-m[0, 1], m[1, 1])
|
|
T1 := math.atan2(-m[0, 1], m[1, 1])
|
|
C2 := math.sqrt(m[2, 0]*m[2, 0] + m[2, 2]*m[2, 2])
|
|
C2 := math.sqrt(m[2, 0]*m[2, 0] + m[2, 2]*m[2, 2])
|
|
T2 := math.atan2(m[2, 1], C2)
|
|
T2 := math.atan2(m[2, 1], C2)
|