diff options
| author | Juan Linietsky | 2018-01-02 15:02:19 -0300 |
|---|---|---|
| committer | GitHub | 2018-01-02 15:02:19 -0300 |
| commit | 14772d22136ac87e2bbf2b94639f79242330ae0a (patch) | |
| tree | 0b71fdeec9f78ed7b2526f53a3f5385105fa243c /core/math/matrix3.cpp | |
| parent | 9821562b300ecc2401ec1e42600a92053897e51f (diff) | |
| parent | e9896b17a9804ba6392dab0bd6c484f4d2e294c1 (diff) | |
| download | godot-14772d22136ac87e2bbf2b94639f79242330ae0a.tar.gz godot-14772d22136ac87e2bbf2b94639f79242330ae0a.tar.zst godot-14772d22136ac87e2bbf2b94639f79242330ae0a.zip | |
Diffstat (limited to 'core/math/matrix3.cpp')
| -rw-r--r-- | core/math/matrix3.cpp | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/core/math/matrix3.cpp b/core/math/matrix3.cpp index e1708a44b..ceaff04ae 100644 --- a/core/math/matrix3.cpp +++ b/core/math/matrix3.cpp @@ -228,12 +228,24 @@ void Basis::scale(const Vector3 &p_scale) { } Basis Basis::scaled(const Vector3 &p_scale) const { - Basis m = *this; m.scale(p_scale); return m; } +void Basis::scale_local(const Vector3 &p_scale) { + // performs a scaling in object-local coordinate system: + // M -> (M.S.Minv).M = M.S. + *this = scaled_local(p_scale); +} + +Basis Basis::scaled_local(const Vector3 &p_scale) const { + Basis b; + b.set_scale(p_scale); + + return (*this) * b; +} + void Basis::set_scale(const Vector3 &p_scale) { set_axis(0, get_axis(0).normalized() * p_scale.x); @@ -312,7 +324,8 @@ void Basis::rotate(const Vector3 &p_axis, real_t p_phi) { } void Basis::rotate_local(const Vector3 &p_axis, real_t p_phi) { - + // performs a rotation in object-local coordinate system: + // M -> (M.R.Minv).M = M.R. *this = rotated_local(p_axis, p_phi); } Basis Basis::rotated_local(const Vector3 &p_axis, real_t p_phi) const { |
