21 std::locale::global(std::locale(
""));
36 for (
const auto &
p : pts) {
39 return (pts.size() > 0) ? total / pts.size() : total;
46 double expected_answer = 0;
47 for (
const auto &
p : pts) {
48 llsq.
add(
p.x(),
p.y());
49 double dot = nvec % (
p - xavg);
50 expected_answer += dot * dot;
52 expected_answer /= pts.size();
53 expected_answer = sqrt(expected_answer);
72 ExpectCorrectLine(llsq, 1.0, 0.0, 0.0, 1.0, 1e-6);
73 float half_root_2 = sqrt(2.0) / 2.0f;
74 ExpectCorrectVector(llsq,
FCOORD(1.5f, 1.5f),
FCOORD(half_root_2, half_root_2), 1e-6);
81 ExpectCorrectLine(llsq, 0.0, 1.25, 0.433, 0.0, 1e-2);
82 ExpectCorrectVector(llsq,
FCOORD(1.0f, 1.25f),
FCOORD(1.0f, 0.0f), 1e-3);
83 llsq.
add(1.0, 2.0, 10.0);
85 ExpectCorrectLine(llsq, 0.0, 1.786, 0.41, 0.0, 1e-2);
86 ExpectCorrectVector(llsq,
FCOORD(1.0f, 1.786f),
FCOORD(1.0f, 0.0f), 1e-3);
94 ExpectCorrectVector(llsq,
FCOORD(1.0f, 0.0f),
FCOORD(0.0f, 1.0f), 1e-6);
98 llsq.
add(1.10001, 3.0);
99 ExpectCorrectVector(llsq,
FCOORD(1.0f, 0.0f),
FCOORD(0.0f, 1.0f), 1e-3);
105 std::vector<FCOORD> pts;
106 pts.emplace_back(0.56, 0.95);
107 pts.emplace_back(0.09, 0.09);
108 pts.emplace_back(0.13, 0.77);
109 pts.emplace_back(0.16, 0.83);
110 pts.emplace_back(0.45, 0.79);
111 VerifyRmsOrth(pts,
FCOORD(1, 0));
112 VerifyRmsOrth(pts,
FCOORD(1, 1));
113 VerifyRmsOrth(pts,
FCOORD(1, 2));
114 VerifyRmsOrth(pts,
FCOORD(2, 1));
#define EXPECT_NEAR(val1, val2, abs_error)
TEST_F(EuroText, FastLatinOCR)
void add(double x, double y)
void remove(double x, double y)
double rms_orth(const FCOORD &dir) const
FCOORD mean_point() const
double rms(double m, double c) const
FCOORD vector_fit() const
bool normalise()
Convert to unit vec.
void ExpectCorrectLine(const LLSQ &llsq, double m, double c, double rms, double pearson, double tolerance)
void VerifyRmsOrth(const std::vector< FCOORD > &pts, const FCOORD &orth)
void ExpectCorrectVector(const LLSQ &llsq, FCOORD correct_mean_pt, FCOORD correct_vector, float tolerance)
FCOORD PtsMean(const std::vector< FCOORD > &pts)