тогОпх х = р1 .х,у = р1 .у, \ = 0;\ <= ах;!++, х += эх) {

|7 ( УМю [х] == ЫСП/АШЕ ) // УМю, УМах пот \п\\еб {

ритр1хе1 ( х, у, ирСо!ог ); УМт [х] = УМах [х] = у;

}

е1Бе

\1 ( у < УМт [х] )

{

ритрнхе! ( х, у, ирСоЬг); УМт [х] = у;

}

е1Бе

7 ( у > УМах [х]) {

рихр1хе1 ( х, у, оо\/упСо1ог); УМах [х] = у;

}

Я ( б > 0 ) {

б += 62; у += ву;

}

е^е б +=а1;

}
}

е1эе

{

б = -ау; !п! а1 = ах « 1; Ы 62 = ( бх - бу ) « 1; Ы гп1 = УМт [р1.х]; 1п1 гл2 = УМах [р1.х];

^г (1п1 х = р1 .х, у = р1 .у, \ = 0; \ <= бу; \++, у += ву ) {

К ( УМт [х] == ЫО_Л/АШЕ ) // УМт, УМах пот Шеб {

ри!р[хе1 ( х, у, ирСо1ог ); УМт [х] = УМах [х] = у;

10. Удаление невидимых линий и поверхносте

}
else
if ( y < ml )
{
putpixel ( x, y, upColor); if ( y < YMin [x]) YMin [x] = y;
}
else if ( y > m2 )
{
putpixel ( x, y, downColor); if ( y > YMax [x]) YMax [x] = y;
}
if ( d > 0 ) {
d += d2; x += sx; ml = YMin [x]; m2 = YMax [xj;
}
else
d +=d1;
}
}
void plotSurface (float x1, float y1, float x2, float y2,
float (*f)( float, float), float fMin, float fMax, int n1, int n2 )
{
Point* curLine = new Point [n1];
float phi =30*M_PI/180;
float psi = 10*M_PI/180;
float sphi = sin ( phi);
float cphi = cos ( phi);
float spsi = sin ( psi);
float cpsi = cos ( psi);
float e1 0 = { cphi, sphi, 0 };
float e2 Q = {spsi*sphi, -spsi*cphi, cpsi};
float x, y;
float hx =(x2-x1 )/n1; float hy = ( y2 - y1 ) / n2;
float xMin = ( e1 [0] >= 0 ? x1 : x2 ) * e1 [0] + ( e1 [1] >= 0 ? y1 : y2 ) * e1 [1]; float xMax = ( e1 [0] >= 0 ? x2 : x1 ) * e1 [0] + ( e1 [1] >= 0 ? y2 : y1 ) * e1 [1]; float yMin = ( e2 [0] >= 0 ? x1 : x2 ) * e2 [0] + ( e2 [1] >= 0 ? y1 : y2 ) * e2 [1]; float yMax = ( e2 [0] >= 0 ? x2 : x1 ) * e2 [0] + ( e2 [1] >= 0 ? y2 :-y1 ) * e2 [1]; int i, j, k;
if ( e2 [2] >= 0 ) {
yMin += fMin * e2 [2]; yMax += fMax * e2 [2];
}

Компьютерная графика. Полигональные модели

else {

yMin += fMax * е2 [2]; уМах += fMin * е2 [2];

}

float ах = 10 - 600 * xMin / ( хМах - xMin ); float bx = 600 / ( хМах - xMin ); float ay = 10 - 300 * yMin / ( yMax - yMin ); float by = -300 / ( yMax - yMin );


⇐ Предыдущая| |Следующая ⇒