77{
80 GLdouble maxVal[3], minVal[3], d1[3], d2[3], tNorm[3];
83 int i;
84
87
88 for( v = vHead->
next; v != vHead; v = v->
next ) {
89 for( i = 0; i < 3; ++i ) {
91 if( c < minVal[i] ) { minVal[i] =
c; minVert[i] = v; }
92 if( c > maxVal[i] ) { maxVal[i] =
c; maxVert[i] = v; }
93 }
94 }
95
96
97
98
99 i = 0;
100 if( maxVal[1] - minVal[1] > maxVal[0] - minVal[0] ) { i = 1; }
101 if( maxVal[2] - minVal[2] > maxVal[i] - minVal[i] ) { i = 2; }
102 if( minVal[i] >= maxVal[i] ) {
103
104 norm[0] = 0; norm[1] = 0; norm[2] = 1;
105 return;
106 }
107
108
109
110
111 maxLen2 = 0;
112 v1 = minVert[i];
113 v2 = maxVert[i];
117 for( v = vHead->
next; v != vHead; v = v->
next ) {
121 tNorm[0] = d1[1]*d2[2] - d1[2]*d2[1];
122 tNorm[1] = d1[2]*d2[0] - d1[0]*d2[2];
123 tNorm[2] = d1[0]*d2[1] - d1[1]*d2[0];
124 tLen2 = tNorm[0]*tNorm[0] + tNorm[1]*tNorm[1] + tNorm[2]*tNorm[2];
125 if( tLen2 > maxLen2 ) {
126 maxLen2 = tLen2;
127 norm[0] = tNorm[0];
128 norm[1] = tNorm[1];
129 norm[2] = tNorm[2];
130 }
131 }
132
133 if( maxLen2 <= 0 ) {
134
135 norm[0] = norm[1] = norm[2] = 0;
137 }
138}
#define GLU_TESS_MAX_COORD
Definition glu-libtess.h:173