Added Basis::get_quat() and set_quat().
This commit is contained in:
parent
18d3ba0c50
commit
8861cc40fa
2 changed files with 11 additions and 17 deletions
|
@ -538,7 +538,7 @@ Basis::operator String() const {
|
|||
return mtx;
|
||||
}
|
||||
|
||||
Basis::operator Quat() const {
|
||||
Quat Basis::get_quat() const {
|
||||
//commenting this check because precision issues cause it to fail when it shouldn't
|
||||
//#ifdef MATH_CHECKS
|
||||
//ERR_FAIL_COND_V(is_rotation() == false, Quat());
|
||||
|
@ -710,12 +710,7 @@ void Basis::get_axis_angle(Vector3 &r_axis, real_t &r_angle) const {
|
|||
r_angle = angle;
|
||||
}
|
||||
|
||||
Basis::Basis(const Vector3 &p_euler) {
|
||||
|
||||
set_euler(p_euler);
|
||||
}
|
||||
|
||||
Basis::Basis(const Quat &p_quat) {
|
||||
void Basis::set_quat(const Quat &p_quat) {
|
||||
|
||||
real_t d = p_quat.length_squared();
|
||||
real_t s = 2.0 / d;
|
||||
|
@ -750,7 +745,3 @@ void Basis::set_axis_angle(const Vector3 &p_axis, real_t p_phi) {
|
|||
elements[2][1] = p_axis.y * p_axis.z * (1.0 - cosine) + p_axis.x * sine;
|
||||
elements[2][2] = axis_sq.z + cosine * (1.0 - axis_sq.z);
|
||||
}
|
||||
|
||||
Basis::Basis(const Vector3 &p_axis, real_t p_phi) {
|
||||
set_axis_angle(p_axis, p_phi);
|
||||
}
|
||||
|
|
|
@ -88,8 +88,11 @@ public:
|
|||
Vector3 get_euler_yxz() const;
|
||||
void set_euler_yxz(const Vector3 &p_euler);
|
||||
|
||||
Vector3 get_euler() const { return get_euler_yxz(); };
|
||||
void set_euler(const Vector3 &p_euler) { set_euler_yxz(p_euler); };
|
||||
Quat get_quat() const;
|
||||
void set_quat(const Quat &p_quat);
|
||||
|
||||
Vector3 get_euler() const { return get_euler_yxz(); }
|
||||
void set_euler(const Vector3 &p_euler) { set_euler_yxz(p_euler); }
|
||||
|
||||
void get_axis_angle(Vector3 &r_axis, real_t &r_angle) const;
|
||||
void set_axis_angle(const Vector3 &p_axis, real_t p_phi);
|
||||
|
@ -205,11 +208,11 @@ public:
|
|||
bool is_symmetric() const;
|
||||
Basis diagonalize();
|
||||
|
||||
operator Quat() const;
|
||||
operator Quat() const { return get_quat(); }
|
||||
|
||||
Basis(const Quat &p_quat); // euler
|
||||
Basis(const Vector3 &p_euler); // euler
|
||||
Basis(const Vector3 &p_axis, real_t p_phi);
|
||||
Basis(const Quat &p_quat) { set_quat(p_quat); };
|
||||
Basis(const Vector3 &p_euler) { set_euler(p_euler); }
|
||||
Basis(const Vector3 &p_axis, real_t p_phi) { set_axis_angle(p_axis, p_phi); }
|
||||
|
||||
_FORCE_INLINE_ Basis(const Vector3 &row0, const Vector3 &row1, const Vector3 &row2) {
|
||||
elements[0] = row0;
|
||||
|
|
Loading…
Reference in a new issue