File size: 642 Bytes
7b853a5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/*
 * SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
 * SPDX-License-Identifier: Apache-2.0
 */

#include "Quaternion.h"
#include "Matrix.h"

namespace Math
{
    Quaternion const Quaternion::Identity(0, 0, 0, 1);

    // Rotation order is XYZ
    EulerAngles Quaternion::ToEulerAngles() const
    {
        return Matrix(*this).ToEulerAngles();
    }

    Quaternion Quaternion::LookRotation(const Vector& forward, const Vector& up)
    {
        const Vector t = Vector::Cross3(up, forward).Normalize3();
        return Matrix(t, Vector::Cross3(forward, t), forward).GetRotation();
    }
}