Merge pull request #11151 from jordan-woyak/quat-fix

Fix some bad quaternion math.
This commit is contained in:
Mai 2022-10-12 17:35:50 +00:00 committed by GitHub
commit a5fa95adfd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 4 additions and 2 deletions

View File

@ -78,7 +78,7 @@ Quaternion::Quaternion(float w, float x, float y, float z) : data(x, y, z, w)
float Quaternion::Norm() const
{
return data.Dot(data);
return std::sqrt(data.Dot(data));
}
Quaternion Quaternion::Normalized() const

View File

@ -398,7 +398,9 @@ Common::Quaternion GetRotationFromAcceleration(const Common::Vec3& accel)
Common::Quaternion GetRotationFromGyroscope(const Common::Vec3& gyro)
{
return Common::Quaternion{1, gyro.x / 2, gyro.y / 2, gyro.z / 2};
const auto length = gyro.Length();
return (length != 0) ? Common::Quaternion::Rotate(length, gyro / length) :
Common::Quaternion::Identity();
}
Common::Matrix33 GetRotationalMatrix(const Common::Vec3& angle)