Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/unittests/vectorunittest.cpp

    r27ac00 r1513a74  
    216216}
    217217
     218/** UnitTest for line intersections.
     219 */
     220void VectorTest::LineIntersectionTest()
     221{
     222  // plane at (0,0,0) normal to (1,0,0) cuts line from (0,0,0) to (2,1,0) at ???
     223  CPPUNIT_ASSERT_NO_THROW(fixture = Plane(unit, zero).GetIntersection(zero, two) );
     224  CPPUNIT_ASSERT_EQUAL( zero, fixture );
     225
     226  // plane at (2,1,0) normal to (0,1,0) cuts line from (1,0,0) to (0,1,1) at ???
     227  CPPUNIT_ASSERT_NO_THROW(fixture = Plane(otherunit, two).GetIntersection( unit, notunit) );
     228  CPPUNIT_ASSERT_EQUAL( Vector(0., 1., 1.), fixture );
     229
     230  // four vectors equal to zero
     231  CPPUNIT_ASSERT_THROW(fixture = GetIntersectionOfTwoLinesOnPlane(zero, zero, zero, zero), LinearDependenceException);
     232  //CPPUNIT_ASSERT_EQUAL( zero, fixture );
     233
     234  // four vectors equal to unit
     235  CPPUNIT_ASSERT_THROW(fixture = GetIntersectionOfTwoLinesOnPlane(unit, unit, unit, unit), LinearDependenceException);
     236  //CPPUNIT_ASSERT_EQUAL( zero, fixture );
     237
     238  // two equal lines
     239  CPPUNIT_ASSERT_NO_THROW(fixture = GetIntersectionOfTwoLinesOnPlane(unit, two, unit, two));
     240  CPPUNIT_ASSERT_EQUAL( unit, fixture );
     241
     242  // line from (1,0,0) to (2,1,0) cuts line from (1,0,0) to (0,1,0) at ???
     243  CPPUNIT_ASSERT_NO_THROW( fixture = GetIntersectionOfTwoLinesOnPlane(unit, two, unit, otherunit) );
     244  CPPUNIT_ASSERT_EQUAL( unit, fixture );
     245
     246  // line from (1,0,0) to (0,0,0) cuts line from (0,0,0) to (2,1,0) at ???
     247  CPPUNIT_ASSERT_NO_THROW( fixture = GetIntersectionOfTwoLinesOnPlane(unit, zero, zero, two) );
     248  CPPUNIT_ASSERT_EQUAL( zero, fixture );
     249
     250  // line from (1,0,0) to (2,1,0) cuts line from (0,0,0) to (0,1,0) at ???
     251  CPPUNIT_ASSERT_NO_THROW(fixture = GetIntersectionOfTwoLinesOnPlane(unit, two, zero, otherunit) );
     252  CPPUNIT_ASSERT_EQUAL( Vector(0., -1., 0.), fixture );
     253};
     254
     255/** UnitTest for vector rotations.
     256 */
     257void VectorTest::VectorRotationTest()
     258{
     259  fixture = Vector(-1.,0.,0.);
     260
     261  // zero vector does not change
     262  fixture = RotateVector(zero,unit, 1.);
     263  CPPUNIT_ASSERT_EQUAL( zero, fixture );
     264
     265  fixture = RotateVector(zero, two, 1.);
     266  CPPUNIT_ASSERT_EQUAL( zero,  fixture);
     267
     268  // vector on axis does not change
     269  fixture = RotateVector(unit,unit, 1.);
     270  CPPUNIT_ASSERT_EQUAL( unit, fixture );
     271
     272  // rotations
     273  fixture = RotateVector(otherunit, unit, M_PI);
     274  CPPUNIT_ASSERT_EQUAL( Vector(0.,-1.,0.), fixture );
     275
     276  fixture = RotateVector(otherunit, unit, 2. * M_PI);
     277  CPPUNIT_ASSERT_EQUAL( otherunit, fixture );
     278
     279  fixture = RotateVector(otherunit,unit, 0);
     280  CPPUNIT_ASSERT_EQUAL( otherunit, fixture );
     281
     282  fixture = RotateVector(Vector(0.,0.,1.), notunit, M_PI);
     283  CPPUNIT_ASSERT_EQUAL( otherunit, fixture );
     284}
    218285
    219286/**
Note: See TracChangeset for help on using the changeset viewer.