{
.Fixed vx = cosine ( angle )* 1000; Fixed vy = sine ( angle ) * 1000;
switch ( bioskey ( 0 )) {
case LEFT:
angle += ANGLE_90 / 20; break;
case RIGHT:
angle -= ANGLE_90 / 20; break;
case UP:
locX += vx; locY += vy; break;
case DOWN: locX -= vx; locY -= vy; break;
case ESC: done = 1; break;
}
}
}
float totalTime = ( clock () - start) / CLKJCK; setVideoMode (0x03 );
printf ("\n Frames rendered : %7ld", total Frames );
printf ("\nTotal time ( sec ): %7.2f\ totalTime );
printf ("\nFPS : %7.2f\ totalFrames / totalTime );
13.7. Освещение Одним из часто встречающихся элементов является затенение с увеличением рас-тояния - чем дальше находится точка, тем ближе ее цвет к некоторому заданному. Один из наиболее простых вариантов описывается формулой сИ=с0(1-ф))+СооА:(4
де кусі)- <сі - ; с0- цвет объекта, - цвет на бесконечности.
Для всех объектов, расположенных ближе чем сіо, затенения не происходит.
Компьютерная графика. Полигональные модели Поскольку на практике в качестве цвета всегда используется индекс в палитре, то непосредственно данная формула неприменима и обычно поступают следующим образом: весь диапазон расстояний разбивается на несколько интервалов (может оказаться, что удобнее разбивать не диапазон расстояний, а диапазон обратных величин), внутри каждого из которых затенение считается постоянным. Затем для каждого из этих интервалов вводится своя таблица перекодировки цветов палитры, которая и используется при выводе пикселов:
char * table = distTable [ dist / DIST_STEP ];
putPixel ( x, y, table [color] );
Одним из недостатков подобного подхода является появление четкой границы раздела, когда одна половина грани находится в одном интервале, а другая - в другом. При этом обе половины заметно отличаются друг от друга.
Чтобы этого не возникало, можно к расстоянию добавлять небольшую случайную величину. Если это делать для каждого выводимого пиксела, то граница раздела интервалов как бы размывается и становится гораздо менее заметной. Сами случайные значения во. избежание длительных расчетов можно брать из готовой таблицы.