2018-07-02 07:47:56 -05:00
|
|
|
#include "gtest/gtest.h"
|
|
|
|
|
|
|
|
#include "RiaPolyArcLineSampler.h"
|
|
|
|
#include <iostream>
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
2019-09-06 03:40:57 -05:00
|
|
|
TEST( RiaPolyArcLineSampler, Basic )
|
2018-07-02 07:47:56 -05:00
|
|
|
{
|
2018-11-16 01:43:19 -06:00
|
|
|
std::vector<cvf::Vec3d> points{{0, 0, 0}, {0, 0, -10}, {0, 10, -20}, {0, 20, -20}, {0, 30, -30}};
|
2018-07-02 07:47:56 -05:00
|
|
|
|
2019-09-06 03:40:57 -05:00
|
|
|
RiaPolyArcLineSampler sampler( {0, 0, -1}, points );
|
2018-11-16 01:43:19 -06:00
|
|
|
|
|
|
|
std::vector<cvf::Vec3d> sampledPoints;
|
|
|
|
std::vector<double> mds;
|
2018-07-02 07:47:56 -05:00
|
|
|
|
2019-09-06 03:40:57 -05:00
|
|
|
sampler.sampledPointsAndMDs( 2, true, &sampledPoints, &mds );
|
2018-11-16 01:43:19 -06:00
|
|
|
#if 0
|
2018-07-02 07:47:56 -05:00
|
|
|
for (size_t pIdx = 0; pIdx < sampledPoints.size(); ++pIdx)
|
|
|
|
{
|
|
|
|
std::cout << sampledPoints[pIdx].x() << " "
|
|
|
|
<< sampledPoints[pIdx].y() << " "
|
|
|
|
<< sampledPoints[pIdx].z() << " md: " << mds[pIdx] << std::endl;
|
2018-11-16 01:43:19 -06:00
|
|
|
}
|
|
|
|
#endif
|
2019-09-06 03:40:57 -05:00
|
|
|
EXPECT_EQ( 27, (int)sampledPoints.size() );
|
|
|
|
EXPECT_NEAR( 51.4159, mds.back(), 1e-4 );
|
2018-11-16 01:43:19 -06:00
|
|
|
|
2019-09-06 03:40:57 -05:00
|
|
|
EXPECT_NEAR( points[2].y(), sampledPoints[12].y(), 2 );
|
|
|
|
EXPECT_NEAR( points[2].z(), sampledPoints[12].z(), 2 );
|
2018-11-16 01:43:19 -06:00
|
|
|
|
2019-09-06 03:40:57 -05:00
|
|
|
EXPECT_NEAR( points[4].y(), sampledPoints[25].y(), 2 );
|
|
|
|
EXPECT_NEAR( points[4].z(), sampledPoints[25].z(), 2 );
|
2018-11-16 01:43:19 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
2019-09-06 03:40:57 -05:00
|
|
|
TEST( RiaPolyArcLineSampler, TestInvalidInput )
|
2018-11-16 01:43:19 -06:00
|
|
|
{
|
|
|
|
{
|
|
|
|
// Two identical points after each other
|
|
|
|
std::vector<cvf::Vec3d> points{{0, 0, -20}, {0, 0, -20}};
|
|
|
|
|
2019-09-06 03:40:57 -05:00
|
|
|
RiaPolyArcLineSampler sampler( {0, 0, -1}, points );
|
2018-11-16 01:43:19 -06:00
|
|
|
|
|
|
|
std::vector<cvf::Vec3d> sampledPoints;
|
|
|
|
std::vector<double> mds;
|
|
|
|
|
2019-09-06 03:40:57 -05:00
|
|
|
sampler.sampledPointsAndMDs( 2, true, &sampledPoints, &mds );
|
2018-11-16 01:43:19 -06:00
|
|
|
|
2019-09-06 03:40:57 -05:00
|
|
|
EXPECT_EQ( 0, (int)sampledPoints.size() );
|
2018-11-16 01:43:19 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
std::vector<cvf::Vec3d> points;
|
|
|
|
|
2019-09-06 03:40:57 -05:00
|
|
|
RiaPolyArcLineSampler sampler( {0, 0, -1}, points );
|
2018-11-16 01:43:19 -06:00
|
|
|
|
|
|
|
std::vector<cvf::Vec3d> sampledPoints;
|
|
|
|
std::vector<double> mds;
|
|
|
|
|
2019-09-06 03:40:57 -05:00
|
|
|
sampler.sampledPointsAndMDs( 2, true, &sampledPoints, &mds );
|
2018-11-16 01:43:19 -06:00
|
|
|
|
2019-09-06 03:40:57 -05:00
|
|
|
EXPECT_EQ( 0, (int)sampledPoints.size() );
|
2018-11-16 01:43:19 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
std::vector<cvf::Vec3d> points{{0, 0, 0}};
|
|
|
|
|
2019-09-06 03:40:57 -05:00
|
|
|
RiaPolyArcLineSampler sampler( {0, 0, -1}, points );
|
2018-11-16 01:43:19 -06:00
|
|
|
|
|
|
|
std::vector<cvf::Vec3d> sampledPoints;
|
|
|
|
std::vector<double> mds;
|
2018-07-02 07:47:56 -05:00
|
|
|
|
2019-09-06 03:40:57 -05:00
|
|
|
sampler.sampledPointsAndMDs( 2, true, &sampledPoints, &mds );
|
2018-07-02 07:47:56 -05:00
|
|
|
|
2019-09-06 03:40:57 -05:00
|
|
|
EXPECT_EQ( 0, (int)sampledPoints.size() );
|
2018-11-16 01:43:19 -06:00
|
|
|
}
|
2018-07-02 07:47:56 -05:00
|
|
|
}
|