aboutsummaryrefslogtreecommitdiff
path: root/core/math
diff options
context:
space:
mode:
authorMathias Mohn Mørch <mathias.mohn.moerch@proton.me>2025-10-30 20:35:35 +0100
committerMathias Mohn Mørch <mathias.mohn.moerch@proton.me>2025-10-30 20:35:35 +0100
commit9a321befd4fe8dbf6335b09c3277f4ae4d1d5ed3 (patch)
tree7fdca6d09587a8b3cbd501ea8c4ecfde08f267c3 /core/math
parent338733d9ef86d00215640b8cf749e426b9c27fb6 (diff)
Fixed issue where the linalg.quaternion_from_forward_and_up could return incorrect values in certain scenarioes
Diffstat (limited to 'core/math')
-rw-r--r--core/math/linalg/specific.odin6
1 files changed, 3 insertions, 3 deletions
diff --git a/core/math/linalg/specific.odin b/core/math/linalg/specific.odin
index 3c37d4d25..cfb1c2b0d 100644
--- a/core/math/linalg/specific.odin
+++ b/core/math/linalg/specific.odin
@@ -635,7 +635,7 @@ quaternion_from_forward_and_up_f16 :: proc "contextless" (forward, up: Vector3f1
case:
S := 2 * math.sqrt(1 + m[2, 2] - m[0, 0] - m[1, 1])
q.w = (m[0, 1] - m[1, 0]) / S
- q.x = (m[2, 0] - m[0, 2]) / S
+ q.x = (m[2, 0] + m[0, 2]) / S
q.y = (m[2, 1] + m[1, 2]) / S
q.z = 0.25 * S
}
@@ -679,7 +679,7 @@ quaternion_from_forward_and_up_f32 :: proc "contextless" (forward, up: Vector3f3
case:
S := 2 * math.sqrt(1 + m[2, 2] - m[0, 0] - m[1, 1])
q.w = (m[0, 1] - m[1, 0]) / S
- q.x = (m[2, 0] - m[0, 2]) / S
+ q.x = (m[2, 0] + m[0, 2]) / S
q.y = (m[2, 1] + m[1, 2]) / S
q.z = 0.25 * S
}
@@ -723,7 +723,7 @@ quaternion_from_forward_and_up_f64 :: proc "contextless" (forward, up: Vector3f6
case:
S := 2 * math.sqrt(1 + m[2, 2] - m[0, 0] - m[1, 1])
q.w = (m[0, 1] - m[1, 0]) / S
- q.x = (m[2, 0] - m[0, 2]) / S
+ q.x = (m[2, 0] + m[0, 2]) / S
q.y = (m[2, 1] + m[1, 2]) / S
q.z = 0.25 * S
}