Merge branch 'main' of https://git.sintekanalytics.com/SpiderLang/spider-runtime
This commit is contained in:
31
src/spider/runtime/math/Quat_Multiply.cpp
Normal file
31
src/spider/runtime/math/Quat_Multiply.cpp
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
struct Quaternion {
|
||||||
|
T w, x, y, z;
|
||||||
|
};
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
Quaternion<T> quat_multiply(Quaternion<T> A, Quaternion<T> 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<double> q1 = {1.0f, 0.0f, 0.0f, 0.0f};
|
||||||
|
Quaternion<double> q2 = {0.5f, 0.5f, 0.5f, 0.5f};
|
||||||
|
|
||||||
|
Quaternion<double> result = quat_multiply(q1, q2); // Returns the result!
|
||||||
|
|
||||||
|
std::cout << "Result: ("
|
||||||
|
<< result.w << ", "
|
||||||
|
<< result.x << ", "
|
||||||
|
<< result.y << ", "
|
||||||
|
<< result.z << ")" << std::endl;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user