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);
    }
Lecture 14   Slide 12   6.837 Fall '00