40 #ifndef __gluarcsorter_c_
41 #define __gluarcsorter_c_
43 #include "glimports.h"
45 #include "arcsorter.h"
46 #include "subdivider.h"
53 ArcSorter::qscmp(
char *,
char * )
55 _glu_dprintf(
"ArcSorter::qscmp: pure virtual called\n" );
60 ArcSorter::qsort(
Arc **a,
int n )
62 Sorter::qsort( (
void *) a, n );
66 ArcSorter::qsexc(
char *i,
char *j )
76 ArcSorter::qstexc(
char *i,
char *j,
char *k )
93 ArcSdirSorter::qscmp(
char *i,
char *j )
98 int v1 = (jarc1->getitail() ? 0 : (jarc1->pwlArc->npts - 1));
99 int v2 = (jarc2->getitail() ? 0 : (jarc2->pwlArc->npts - 1));
101 REAL diff = jarc1->pwlArc->pts[v1].param[1] -
102 jarc2->pwlArc->pts[v2].param[1];
110 if( jarc2->tail()[0] < jarc1->tail()[0] ) {
111 return subdivider.ccwTurn_sl( jarc2, jarc1 ) ? 1 : -1;
113 return subdivider.ccwTurn_sr( jarc2, jarc1 ) ? -1 : 1;
116 if( jarc2->head()[0] < jarc1->head()[0] ) {
117 return subdivider.ccwTurn_sl( jarc1, jarc2 ) ? -1 : 1;
119 return subdivider.ccwTurn_sr( jarc1, jarc2 ) ? 1 : -1;
138 ArcTdirSorter::qscmp(
char *i,
char *j )
143 int v1 = (jarc1->getitail() ? 0 : (jarc1->pwlArc->npts - 1));
144 int v2 = (jarc2->getitail() ? 0 : (jarc2->pwlArc->npts - 1));
146 REAL diff = jarc1->pwlArc->pts[v1].param[0] -
147 jarc2->pwlArc->pts[v2].param[0];
155 if (jarc2->tail()[1] < jarc1->tail()[1]) {
156 return subdivider.ccwTurn_tl( jarc2, jarc1 ) ? 1 : -1;
158 return subdivider.ccwTurn_tr( jarc2, jarc1 ) ? -1 : 1;
161 if( jarc2->head()[1] < jarc1->head()[1] ) {
162 return subdivider.ccwTurn_tl( jarc1, jarc2 ) ? -1 : 1;
164 return subdivider.ccwTurn_tr( jarc1, jarc2 ) ? 1 : -1;