|
|
|
@ -1,7 +1,6 @@ |
|
|
|
|
#pragma once |
|
|
|
|
|
|
|
|
|
#include "Eigen/Dense" |
|
|
|
|
#include <string> |
|
|
|
|
|
|
|
|
|
inline Vector3d ToEigen(const FVector V){ |
|
|
|
|
return Vector3d(V.X, V.Y, V.Z); |
|
|
|
@ -11,27 +10,27 @@ inline Quaterniond ToEigen(const FQuat Q){ |
|
|
|
|
return Quaterniond(Q.W, Q.X, Q.Y, Q.Z); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
inline FVector FromEigen(const Vector3d V){ |
|
|
|
|
inline FVector FromEigen(const Vector3d& V){ |
|
|
|
|
return FVector(V.x(), V.y(), V.z()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
inline FQuat FromEigen(const Quaterniond Q){ |
|
|
|
|
inline FQuat FromEigen(const Quaterniond& Q){ |
|
|
|
|
return FQuat(Q.x(), Q.y(), Q.z(), Q.w()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
inline Quaterniond operator* (Quaterniond Q, double D){ |
|
|
|
|
inline Quaterniond operator* (const Quaterniond& Q, const double D){ |
|
|
|
|
return Quaterniond(Q.w() * D, Q.x() * D, Q.y() * D, Q.z() * D); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
inline Quaterniond operator+ (const Quaterniond Q1, const Quaterniond Q2){ |
|
|
|
|
inline Quaterniond operator+ (const Quaterniond& Q1, const Quaterniond& Q2){ |
|
|
|
|
return Quaterniond(Q1.w() + Q2.w(), Q1.x() + Q2.x(), Q1.y() + Q2.y(), Q1.z() + Q2.z()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
inline Quaterniond operator- (const Quaterniond Q1, const Quaterniond Q2){ |
|
|
|
|
inline Quaterniond operator- (const Quaterniond& Q1, const Quaterniond& Q2){ |
|
|
|
|
return Quaterniond(Q1.w() - Q2.w(), Q1.x() - Q2.x(), Q1.y() - Q2.y(), Q1.z() - Q2.z()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
inline void Log(MatrixXd M){ |
|
|
|
|
inline void Log(const MatrixXd& M){ |
|
|
|
|
assert(M.rows() == 3); |
|
|
|
|
if (M.cols() == 3){ |
|
|
|
|
UE_LOG(LogTemp, Log, TEXT("%f %f %f"), M(0, 0), M(0, 1), M(0, 2)); |
|
|
|
|