diff --git a/src/spider/runtime/math/Quat_Multiply.cpp b/src/spider/runtime/math/Quat_Multiply.cpp new file mode 100644 index 0000000..f41651c --- /dev/null +++ b/src/spider/runtime/math/Quat_Multiply.cpp @@ -0,0 +1,31 @@ +#include + +template +struct Quaternion { + T w, x, y, z; +}; + +template +Quaternion quat_multiply(Quaternion A, Quaternion B) { + return { + B.w * A.w - B.x * A.x - B.y * A.y - B.z * A.z, + B.w * A.x + B.x * A.w - B.y * A.z + B.z * A.y, + B.w * A.y + B.x * A.z + B.y * A.w - B.z * A.x, + B.w * A.z - B.x * A.y + B.y * A.x + B.z * A.w + }; +} + +int main() { + Quaternion q1 = {1.0f, 0.0f, 0.0f, 0.0f}; + Quaternion q2 = {0.5f, 0.5f, 0.5f, 0.5f}; + + Quaternion result = quat_multiply(q1, q2); // Returns the result! + + std::cout << "Result: (" + << result.w << ", " + << result.x << ", " + << result.y << ", " + << result.z << ")" << std::endl; + + return 0; +} \ No newline at end of file