Merge pull request #264 from aqnuep/random_fixes

Fix bug in Basis [] operator and add missing Transform-Vector3 * operator
pull/269/head
Bastiaan Olij 2019-04-14 21:25:14 +10:00 committed by GitHub
commit 834d88a0cd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 12 additions and 5 deletions

View File

@ -307,7 +307,7 @@ public:
Basis(); Basis();
const Vector3 &operator[](int axis) const { const Vector3 operator[](int axis) const {
return get_axis(axis); return get_axis(axis);
} }

View File

@ -58,6 +58,13 @@ public:
void operator*=(const Transform &p_transform); void operator*=(const Transform &p_transform);
Transform operator*(const Transform &p_transform) const; Transform operator*(const Transform &p_transform) const;
inline Vector3 operator*(const Vector3 &p_vector) const {
return Vector3(
basis.elements[0].dot(p_vector) + origin.x,
basis.elements[1].dot(p_vector) + origin.y,
basis.elements[2].dot(p_vector) + origin.z);
}
Transform interpolate_with(const Transform &p_transform, real_t p_c) const; Transform interpolate_with(const Transform &p_transform, real_t p_c) const;
Transform inverse_xform(const Transform &t) const; Transform inverse_xform(const Transform &t) const;

View File

@ -35,9 +35,9 @@ void Transform::set(real_t xx, real_t xy, real_t xz, real_t yx, real_t yy, real_
Vector3 Transform::xform(const Vector3 &p_vector) const { Vector3 Transform::xform(const Vector3 &p_vector) const {
return Vector3( return Vector3(
basis[0].dot(p_vector) + origin.x, basis.elements[0].dot(p_vector) + origin.x,
basis[1].dot(p_vector) + origin.y, basis.elements[1].dot(p_vector) + origin.y,
basis[2].dot(p_vector) + origin.z); basis.elements[2].dot(p_vector) + origin.z);
} }
Vector3 Transform::xform_inv(const Vector3 &p_vector) const { Vector3 Transform::xform_inv(const Vector3 &p_vector) const {
@ -241,7 +241,7 @@ void Transform::translate(real_t p_tx, real_t p_ty, real_t p_tz) {
void Transform::translate(const Vector3 &p_translation) { void Transform::translate(const Vector3 &p_translation) {
for (int i = 0; i < 3; i++) { for (int i = 0; i < 3; i++) {
origin[i] += basis[i].dot(p_translation); origin[i] += basis.elements[i].dot(p_translation);
} }
} }