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;
|
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
|
//commenting this check because precision issues cause it to fail when it shouldn't
|
||||||
//#ifdef MATH_CHECKS
|
//#ifdef MATH_CHECKS
|
||||||
//ERR_FAIL_COND_V(is_rotation() == false, Quat());
|
//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;
|
r_angle = angle;
|
||||||
}
|
}
|
||||||
|
|
||||||
Basis::Basis(const Vector3 &p_euler) {
|
void Basis::set_quat(const Quat &p_quat) {
|
||||||
|
|
||||||
set_euler(p_euler);
|
|
||||||
}
|
|
||||||
|
|
||||||
Basis::Basis(const Quat &p_quat) {
|
|
||||||
|
|
||||||
real_t d = p_quat.length_squared();
|
real_t d = p_quat.length_squared();
|
||||||
real_t s = 2.0 / d;
|
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][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);
|
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;
|
Vector3 get_euler_yxz() const;
|
||||||
void set_euler_yxz(const Vector3 &p_euler);
|
void set_euler_yxz(const Vector3 &p_euler);
|
||||||
|
|
||||||
Vector3 get_euler() const { return get_euler_yxz(); };
|
Quat get_quat() const;
|
||||||
void set_euler(const Vector3 &p_euler) { set_euler_yxz(p_euler); };
|
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 get_axis_angle(Vector3 &r_axis, real_t &r_angle) const;
|
||||||
void set_axis_angle(const Vector3 &p_axis, real_t p_phi);
|
void set_axis_angle(const Vector3 &p_axis, real_t p_phi);
|
||||||
|
@ -205,11 +208,11 @@ public:
|
||||||
bool is_symmetric() const;
|
bool is_symmetric() const;
|
||||||
Basis diagonalize();
|
Basis diagonalize();
|
||||||
|
|
||||||
operator Quat() const;
|
operator Quat() const { return get_quat(); }
|
||||||
|
|
||||||
Basis(const Quat &p_quat); // euler
|
Basis(const Quat &p_quat) { set_quat(p_quat); };
|
||||||
Basis(const Vector3 &p_euler); // euler
|
Basis(const Vector3 &p_euler) { set_euler(p_euler); }
|
||||||
Basis(const Vector3 &p_axis, real_t p_phi);
|
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) {
|
_FORCE_INLINE_ Basis(const Vector3 &row0, const Vector3 &row1, const Vector3 &row2) {
|
||||||
elements[0] = row0;
|
elements[0] = row0;
|
||||||
|
|
Loading…
Reference in a new issue