Tesseract 3.02

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- Class List
- Class Hierarchy
- Class Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions
QLSQ Class Reference

`#include <quadlsq.h>`

List of all members.

## Public Member Functions

| QLSQ ()
void | clear ()
void | add (double x, double y)
void | remove (double x, double y)
inT32 | count ()
void | fit (int degree)
double | get_a ()
double | get_b ()
double | get_c ()

## Detailed Description

Definition at line 25 of file quadlsq.h.

## Constructor & Destructor Documentation

QLSQ::QLSQ | ( |  | ) |

inline

Definition at line 28 of file quadlsq.h.

{ //constructor
clear(); //set to zeros
}

## Member Function Documentation

void QLSQ::add | ( | double | x,
|  | double | y
| ) |  |

Definition at line 58 of file quadlsq.cpp.

{
n++; //count elements
sigx += x; //update accumulators
sigy += y;
sigxx += x * x;
sigxy += x * y;
sigyy += y * y;
sigxxx += (long double) x *x * x;
sigxxy += (long double) x *x * y;
sigxxxx += (long double) x *x * x * x;
}

void QLSQ::clear | ( |  | ) |

Definition at line 36 of file quadlsq.cpp.

{ //initialize
a = 0;
b = 0;
c = 0;
n = 0; //no elements
sigx = 0; //update accumulators
sigy = 0;
sigxx = 0;
sigxy = 0;
sigyy = 0;
sigxxx = 0;
sigxxy = 0;
sigxxxx = 0;
}

inT32 QLSQ::count | ( |  | ) |

inline

Definition at line 39 of file quadlsq.h.

{ //no of elements
return n;
}

void QLSQ::fit | ( | int | degree | ) |

Definition at line 105 of file quadlsq.cpp.

{
long double cubetemp; //intermediates
long double squaretemp;
long double top96, bottom96; /*accurate top & bottom */
if (n >= 4 && degree >= 2) {
cubetemp = sigxxx * n - (long double) sigxx *sigx;
top96 =
cubetemp * ((long double) sigxy * n - (long double) sigx * sigy);
squaretemp = (long double) sigxx *n - (long double) sigx *sigx;
top96 += squaretemp * ((long double) sigxx * sigy - sigxxy * n);
bottom96 = cubetemp * cubetemp;
bottom96 -= squaretemp * (sigxxxx * n - (long double) sigxx * sigxx);
a = top96 / bottom96;
top96 = ((long double) sigxx * sigx - sigxxx * n) * a
+ (long double) sigxy *n - (long double) sigx *sigy;
bottom96 = (long double) sigxx *n - (long double) sigx *sigx;
b = top96 / bottom96;
c = (sigy - a * sigxx - b * sigx) / n;
}
else if (n == 0 || degree < 0) {
a = b = c = 0;
}
else {
a = 0;
if (n > 1 && degree > 0) {
b = (sigxy * n - sigx * sigy) / (sigxx * n - sigx * sigx);
}
else
b = 0;
c = (sigy - b * sigx) / n;
}
}

double QLSQ::get_a | ( |  | ) |

inline

Definition at line 45 of file quadlsq.h.

{ //get x squard
return a;
}

double QLSQ::get_b | ( |  | ) |

inline

Definition at line 48 of file quadlsq.h.

{ //get x squard
return b;
}

double QLSQ::get_c | ( |  | ) |

inline

Definition at line 51 of file quadlsq.h.

{ //get x squard
return c;
}

void QLSQ::remove | ( | double | x,
|  | double | y
| ) |  |

Definition at line 80 of file quadlsq.cpp.

{
if (n <= 0)
//illegal
EMPTY_QLSQ.error ("QLSQ::remove", ABORT, NULL);
n--; //count elements
sigx -= x; //update accumulators
sigy -= y;
sigxx -= x * x;
sigxy -= x * y;
sigyy -= y * y;
sigxxx -= (long double) x *x * x;
sigxxy -= (long double) x *x * y;
sigxxxx -= (long double) x *x * x * x;
}

The documentation for this class was generated from the following files:

- /mnt/data/src/tesseract-ocr/ccstruct/quadlsq.h
- /mnt/data/src/tesseract-ocr/ccstruct/quadlsq.cpp