00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #include <gtest/gtest.h>
00031
00032 #include <swri_geometry_util/intersection.h>
00033
00034 TEST(IntersectionTests, Intersects)
00035 {
00036 cv::Vec2d c;
00037 ASSERT_TRUE(swri_geometry_util::LineIntersection(
00038 cv::Vec2d(0, 5),
00039 cv::Vec2d(10, 5),
00040 cv::Vec2d(5, 0),
00041 cv::Vec2d(5, 10),
00042 c));
00043
00044 EXPECT_FLOAT_EQ(5.0, c[0]);
00045 EXPECT_FLOAT_EQ(5.0, c[1]);
00046
00047 ASSERT_TRUE(swri_geometry_util::LineIntersection(
00048 cv::Vec2d(0, 6),
00049 cv::Vec2d(10, 6),
00050 cv::Vec2d(5, 0),
00051 cv::Vec2d(5, 10),
00052 c));
00053
00054 EXPECT_FLOAT_EQ(5.0, c[0]);
00055 EXPECT_FLOAT_EQ(6.0, c[1]);
00056
00057 ASSERT_TRUE(swri_geometry_util::LineIntersection(
00058 cv::Vec2d(10, 6),
00059 cv::Vec2d(0, 6),
00060 cv::Vec2d(5, 10),
00061 cv::Vec2d(5, 0),
00062 c));
00063
00064 EXPECT_FLOAT_EQ(5.0, c[0]);
00065 EXPECT_FLOAT_EQ(6.0, c[1]);
00066
00067 ASSERT_TRUE(swri_geometry_util::LineIntersection(
00068 cv::Vec2d(5, 10),
00069 cv::Vec2d(5, 0),
00070 cv::Vec2d(10, 6),
00071 cv::Vec2d(0, 6),
00072 c));
00073
00074 EXPECT_FLOAT_EQ(5.0, c[0]);
00075 EXPECT_FLOAT_EQ(6.0, c[1]);
00076
00077 ASSERT_TRUE(swri_geometry_util::LineIntersection(
00078 cv::Vec2d(10, 10),
00079 cv::Vec2d(0, 0),
00080 cv::Vec2d(0, 10),
00081 cv::Vec2d(10, 0),
00082 c));
00083
00084 EXPECT_FLOAT_EQ(5.0, c[0]);
00085 EXPECT_FLOAT_EQ(5.0, c[1]);
00086
00087 ASSERT_TRUE(swri_geometry_util::LineIntersection(
00088 cv::Vec2d(-10, -10),
00089 cv::Vec2d(0, 0),
00090 cv::Vec2d(0, -10),
00091 cv::Vec2d(-10, 0),
00092 c));
00093
00094 EXPECT_FLOAT_EQ(-5.0, c[0]);
00095 EXPECT_FLOAT_EQ(-5.0, c[1]);
00096 }
00097
00098 TEST(IntersectionTests, Parallel)
00099 {
00100 cv::Vec2d c;
00101 EXPECT_FALSE(swri_geometry_util::LineIntersection(
00102 cv::Vec2d(0, 0),
00103 cv::Vec2d(0, 0),
00104 cv::Vec2d(0, 0),
00105 cv::Vec2d(0, 0),
00106 c));
00107
00108 EXPECT_FALSE(swri_geometry_util::LineIntersection(
00109 cv::Vec2d(0, 0),
00110 cv::Vec2d(10, 0),
00111 cv::Vec2d(0, 0),
00112 cv::Vec2d(10, 0),
00113 c));
00114
00115 EXPECT_FALSE(swri_geometry_util::LineIntersection(
00116 cv::Vec2d(0, 0),
00117 cv::Vec2d(10, 0),
00118 cv::Vec2d(25, 0),
00119 cv::Vec2d(15, 0),
00120 c));
00121
00122 EXPECT_FALSE(swri_geometry_util::LineIntersection(
00123 cv::Vec2d(0, 0),
00124 cv::Vec2d(10, 0),
00125 cv::Vec2d(0, -1),
00126 cv::Vec2d(10, -1),
00127 c));
00128 }
00129
00130
00131 int main(int argc, char **argv)
00132 {
00133 testing::InitGoogleTest(&argc, argv);
00134
00135 return RUN_ALL_TESTS();
00136 }