matrix: fix look_at multiply ordering
This commit is contained in:
parent
2c6011394f
commit
1af6ed4ca8
@ -301,7 +301,7 @@ matrix<S,T>::look_at (util::point<3,T> eye,
|
|||||||
{ 0, 0, 0, 1 }
|
{ 0, 0, 0, 1 }
|
||||||
}};
|
}};
|
||||||
|
|
||||||
return util::matrix4<T>::translation (-eye.template as<vector> ()) * rot;
|
return rot * util::matrix4<T>::translation (-eye.template as<vector> ());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -5,6 +5,40 @@
|
|||||||
#include "quaternion.hpp"
|
#include "quaternion.hpp"
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
void
|
||||||
|
test_matrix_identities (util::TAP::logger &tap)
|
||||||
|
{
|
||||||
|
static constexpr util::vector3f UP {0,1,0};
|
||||||
|
|
||||||
|
{
|
||||||
|
util::point3f p { 1, 2, 3 };
|
||||||
|
|
||||||
|
auto m = util::matrix4f::translation (0-p);
|
||||||
|
auto x = m * p.homog<4> ();
|
||||||
|
tap.expect_eq (x, util::point4f {0,0,0,1}, "trivial translation");
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
util::point3f eye { 1, 2, 3 };
|
||||||
|
util::point3f tgt { 0, 0, 0 };
|
||||||
|
|
||||||
|
auto m = util::matrix4f::look_at (eye, tgt, UP);
|
||||||
|
auto x = m * eye.homog<4> ();
|
||||||
|
tap.expect_eq (x, util::point4f {0,0,0,1}, "look_at eye translation");
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
util::point3f eye { 1, 2, 3 };
|
||||||
|
util::point3f tgt { 4, 5, 6 };
|
||||||
|
|
||||||
|
auto m = util::matrix4f::look_at (eye, tgt, UP);
|
||||||
|
auto x = m * eye.homog<4> ();
|
||||||
|
tap.expect_eq (x, util::point4f {0,0,0,1}, "look_at eye translation with target");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
void
|
void
|
||||||
test_mq_axis (util::TAP::logger &tap)
|
test_mq_axis (util::TAP::logger &tap)
|
||||||
@ -66,6 +100,7 @@ main (int, char**)
|
|||||||
{
|
{
|
||||||
util::TAP::logger tap;
|
util::TAP::logger tap;
|
||||||
|
|
||||||
|
test_matrix_identities (tap);
|
||||||
test_mq_axis (tap);
|
test_mq_axis (tap);
|
||||||
test_mq_euler (tap);
|
test_mq_euler (tap);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user