|
|
|
|
@ -22,6 +22,7 @@
|
|
|
|
|
DEALINGS IN THE SOFTWARE. |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
#include "Math/Matrix3.h" |
|
|
|
|
#include "Math/Matrix4.h" |
|
|
|
|
#include "Magnum.h" |
|
|
|
|
#include "Shapes/LineSegment.h" |
|
|
|
|
@ -36,7 +37,8 @@ class SphereTest: public TestSuite::Tester {
|
|
|
|
|
public: |
|
|
|
|
SphereTest(); |
|
|
|
|
|
|
|
|
|
void transformed(); |
|
|
|
|
void transformed2D(); |
|
|
|
|
void transformed3D(); |
|
|
|
|
void collisionPoint(); |
|
|
|
|
void collisionLine(); |
|
|
|
|
void collisionLineSegment(); |
|
|
|
|
@ -44,14 +46,32 @@ class SphereTest: public TestSuite::Tester {
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
SphereTest::SphereTest() { |
|
|
|
|
addTests({&SphereTest::transformed, |
|
|
|
|
addTests({&SphereTest::transformed2D, |
|
|
|
|
&SphereTest::transformed3D, |
|
|
|
|
&SphereTest::collisionPoint, |
|
|
|
|
&SphereTest::collisionLine, |
|
|
|
|
&SphereTest::collisionLineSegment, |
|
|
|
|
&SphereTest::collisionSphere}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void SphereTest::transformed() { |
|
|
|
|
void SphereTest::transformed2D() { |
|
|
|
|
const Shapes::Sphere2D sphere({1.0f, 2.0f}, 7.0f); |
|
|
|
|
|
|
|
|
|
const auto transformed = sphere.transformed(Matrix3::rotation(Deg(90.0f))); |
|
|
|
|
CORRADE_COMPARE(transformed.position(), Vector2(-2.0f, 1.0f)); |
|
|
|
|
CORRADE_COMPARE(transformed.radius(), 7.0f); |
|
|
|
|
|
|
|
|
|
/* Symmetric scaling */ |
|
|
|
|
const auto scaled = sphere.transformed(Matrix3::scaling(Vector2(2.0f))); |
|
|
|
|
CORRADE_COMPARE(scaled.position(), Vector2(2.0f, 4.0f)); |
|
|
|
|
CORRADE_COMPARE(scaled.radius(), 14.0f); |
|
|
|
|
|
|
|
|
|
/* Apply average scaling to radius */ |
|
|
|
|
const auto nonEven = sphere.transformed(Matrix3::scaling({-Constants::sqrt2(), 2.0f})); |
|
|
|
|
CORRADE_COMPARE(nonEven.radius(), Constants::sqrt3()*7.0f); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void SphereTest::transformed3D() { |
|
|
|
|
const Shapes::Sphere3D sphere({1.0f, 2.0f, 3.0f}, 7.0f); |
|
|
|
|
|
|
|
|
|
const auto transformed = sphere.transformed(Matrix4::rotation(Deg(90.0f), Vector3::yAxis())); |
|
|
|
|
|