31   : aMin(0.), aMax(0.), bMin(0.), bMax(0.),
 
   46                                      const double z[], 
int n)
 
   47   : aMin(0.), aMax(0.), bMin(0.), bMax(0.),
 
   53   double* 
a = 
new double[n * 2];
 
   54   double* b = 
new double[n * 2];
 
   62   for (i = 0; i < 
n; i++, rOut++, zOut++, rIn--, zIn--)
 
   83                                const double b[], 
int n)
 
   89   const double* anext = 
a, *bnext = b;
 
   95     newVertex->
a = *anext;
 
   96     newVertex->
b = *bnext;
 
  104       prev->
next = newVertex;
 
  109   while (++anext, ++bnext < b + n);
 
  142   double* anext = 
a, *bnext = b;
 
  194             *prev = 0, *next = 0;
 
  200     if (std::fabs(curr->
a - next->a) < tolerance &&
 
  201         std::fabs(curr->
b - next->b) < tolerance)
 
  221       if (prev) prev->next = curr;
 
  253   double tolerance2 = tolerance * tolerance;
 
  264     double da = next->
a - curr->
a,
 
  265            db = next->b - curr->
b;
 
  281       if (test == curr) 
break;
 
  286       double dat = test->
a - curr->
a,
 
  287              dbt = test->
b - curr->
b;
 
  289       if (std::fabs(dat * db - dbt * da) > tolerance2) 
break;
 
  314       if ((curr != next) && (next != test)) 
delete next;
 
  349   if (prev == 0) 
return;  
 
  352   if (curr == 0) 
return;  
 
  375     if (save == 0) 
break;
 
  398   double bcurr = curr->
b;
 
  408         if (curr1->
next == 0)
 
  434   double tolerance2 = tolerance * tolerance;
 
  435   double one  = 1.0 - tolerance,
 
  445     double da1 = next1->
a - curr1->
a,
 
  446            db1 = next1->b - curr1->
b;
 
  456       double da2 = next2->
a - curr2->
a,
 
  457              db2 = next2->
b - curr2->
b;
 
  458       double a12 = curr2->
a - curr1->
a,
 
  459              b12 = curr2->
b - curr1->
b;
 
  464       double deter = da1 * db2 - db1 * da2;
 
  465       if (std::fabs(deter) > tolerance2)
 
  468         s1 = (a12 * db2 - b12 * da2) / deter;
 
  470         if (s1 >= zero && s1 < one)
 
  472           s2 = -(da1 * b12 - db1 * a12) / deter;
 
  473           if (s2 >= zero && s2 < one) 
return true;
 
  491                                    double a2, 
double b2,
 
  494   int nNeg = 0, nPos = 0;
 
  496   double a12 = a2 - 
a1, b12 = b2 - 
b1;
 
  497   double len12 = std::sqrt(a12 * a12 + b12 * b12);
 
  504     double av = curr->
a - 
a1,
 
  507     double Cross = av * b12 - bv * a12;
 
  509     if (Cross < -tolerance)
 
  511       if (nPos) 
return true;
 
  514     else if (Cross > tolerance)
 
  516       if (nNeg) 
return true;
 
  547     answer += curr->
a * next->b - curr->
b * next->a;
 
  564     std::cerr << curr->
a << 
" " << curr->
b << std::endl;
 
  587     else if (curr->
a > 
aMax)
 
  592     else if (curr->
b > 
bMax)
 
UReduciblePolygon(const double a[], const double b[], int n)
 
virtual ~UReduciblePolygon()
 
bool RemoveRedundantVertices(double tolerance)
 
void ScaleB(double scale)
 
void Create(const double a[], const double b[], int n)
 
void CopyVertices(double a[], double b[]) const 
 
bool RemoveDuplicateVertices(double tolerance)
 
bool BisectedBy(double a1, double b1, double a2, double b2, double tolerance)
 
void ScaleA(double scale)
 
bool CrossesItself(double tolerance)
 
void Exception(const char *originOfException, const char *exceptionCode, ExceptionSeverity severity, int level, const char *description)