Sorting Code
//
// Use QuickSort to order the vertices from near to far
//
private void sort(int lo0, int hi0) {
int lo = lo0;
int hi = hi0;
if (lo >= hi)
return;
float mid = triList[(lo + hi) / 2].zCentroid();
while (lo < hi) {
while ((lo < hi) && (triList[lo].zCentroid() < mid)) {
lo++;
}
while ((lo < hi) && (triList[hi].zCentroid() >= mid)) {
hi--;
}
if (lo < hi) {
FlatTri T = (FlatTri) triList[lo];
triList[lo] = triList[hi];
triList[hi] = T;
}
}
if (hi < lo) {
int T = hi;
hi = lo;
lo = T;
}
sort(lo0, lo);
sort((lo == lo0) ? lo + 1 : lo, hi0);
}
|