void TestHalfspace2D(void) { #define DO_TEST(res) \ desc.Format("p = (%3.1f, %3.1f), n = (%3.1f, %3.1f), t = (%3.1f, %3.1f)", \ planePt.X(), planePt.Y(), \ normal.X(), normal.Y(), \ testPt.X(), testPt.Y()); \ AssertEqual(desc.PeekBuffer(), planePt.Halfspace(normal, testPt), vislib::math::res) using vislib::math::HalfSpace; vislib::StringA desc; Point2f planePt; Vector2f normal; Point2f testPt; planePt.Set(0.0f, 0.0f); normal.Set(1.0f, 0.0f); testPt.Set(0.0f, 0.0f); DO_TEST(HALFSPACE_IN_PLANE); testPt.SetY(1.0f); DO_TEST(HALFSPACE_IN_PLANE); testPt.SetY(-1.0f); DO_TEST(HALFSPACE_IN_PLANE); testPt.SetX(1.0f); DO_TEST(HALFSPACE_POSITIVE); testPt.SetX(-1.0f); DO_TEST(HALFSPACE_NEGATIVE); testPt.Set(0.5f, 0.5f); DO_TEST(HALFSPACE_POSITIVE); testPt.SetX(-1.0f); DO_TEST(HALFSPACE_NEGATIVE); normal.Set(0.0f, 1.0f); testPt.Set(0.0f, 0.0f); DO_TEST(HALFSPACE_IN_PLANE); testPt.SetX(1.0f); DO_TEST(HALFSPACE_IN_PLANE); testPt.SetX(-1.0f); DO_TEST(HALFSPACE_IN_PLANE); testPt.SetY(1.0f); DO_TEST(HALFSPACE_POSITIVE); testPt.SetY(-1.0f); DO_TEST(HALFSPACE_NEGATIVE); normal.Set(0.5f, 0.5f); testPt.Set(0.0f, 0.0f); DO_TEST(HALFSPACE_IN_PLANE); testPt.Set(0.5f, -0.5f); DO_TEST(HALFSPACE_IN_PLANE); testPt.Set(-0.5f, 0.5f); DO_TEST(HALFSPACE_IN_PLANE); testPt.Set(1.0f, 1.0f); DO_TEST(HALFSPACE_POSITIVE); testPt.Set(-1.0f, -1.0f); DO_TEST(HALFSPACE_NEGATIVE); testPt.Set(1.0f, 0.0f); DO_TEST(HALFSPACE_POSITIVE); testPt.Set(-1.0f, 0.0f); DO_TEST(HALFSPACE_NEGATIVE); planePt.Set(1.0f, 0.0f); normal.Set(1.0f, 0.0f); testPt.Set(0.0f, 0.0f); DO_TEST(HALFSPACE_NEGATIVE); testPt.SetY(1.0f); DO_TEST(HALFSPACE_NEGATIVE); testPt.SetY(-1.0f); DO_TEST(HALFSPACE_NEGATIVE); testPt.SetX(1.0f); DO_TEST(HALFSPACE_IN_PLANE); testPt.SetX(-1.0f); DO_TEST(HALFSPACE_NEGATIVE); testPt.SetX(2.0f); DO_TEST(HALFSPACE_POSITIVE); #undef DO_TEST }