ВУЗ:
Составители:
Рубрика:
изображается цветом фона, отчего он становится невидимым, далее рисунок
выводится в исходном цвете, но с некоторым перемещением и т.д.
Оба способа имеют одинаковый недостаток —
движение изображения является прерывистым и вызывает мелькание экрана.
В этой программе для организации более плавного движения изображения по экрану
используется возможность формировать изображение на разных страницах
видеопамяти (обычно их две или четыре, в зависимости от типа графического адаптера).
Изображение сначала создается на странице с нулевым номером, видимой по умолчанию,
а на невидимой странице с номером 1 формируется изображение с небольшим
перемещением. Затем страница с номером 1 делается видимой, а новое изображение
формируется на ставшей невидимой странице с нулевым номером и т.д.
Внимание: будет работать только если Turbo Pascal установлен в каталог
C:\TP и каталог C:\TP\BGI содержит необходимый файл egavga.bgi.
Program Space; {составил студент Тетуев Р., мат.фак. КБГУ}
Uses Graph, Crt;
Const
RadOrb = 250 {радиус орбиты Земли}; RadSun = 70 {радиус Солнца};
RadGal = 100 {радиус галактики }; RadZem = 18 {радиус Земли };
Naklon = 0.2 {коэффициент наклона плоскости орбиты Земли};
PressZem = 0.65 {коэффициент сплющенности полюсов Земли};
Compress = 0.8 {коэффициент сжатия при переходе из };
{расширения режима VGA в режим CGA }
Var
ZemX, ZemY, UgMer, PixelY, DUgZem , UpDown,
XRad, Grad, UgZem, PixelX, StAngle, Ua, Ub,
ParallelY , Color, ZemPix, EndAngle,
VisualPage, GrMode, GrError, GrDriver, i : Integer;
Ugol, CompressZem, Expansion,
DUgol, Projection, PolUgol : Real;
BEGIN
{установка графического режима и проверка возможных ошибок}
GrDriver := EGA; GrMode := EGAHi;
InitGraph(GrDriver, GrMode, 'C:\TP\BGI');
GrError := GraphResult; If GrError<>GrOk then Halt;
SetBkColor(Black);
SetFillStyle(1, Yellow); {установка стиля заполнения
и цвета Cолнцa}
Ugol := 0; DUgol := 2*Pi/180; {орбитальное угловое смещение Земли}
UgZem := 0; DUgZem := 14; {осевое угловое смещение Земли}
{------------------------------------------------------------------}
VisualPage := 1;
Repeat {цикл прерывается нажатием любой клавиши}
SetVisualPage(1- (VisualPage mod 2));
{установка номера видимой видеостраницы}
VisualPage := VisualPage+1; {листание видеостраниц}
SetActivePage(1 - (VisualPage mod 2));
{установка номера невидимой (активной) видеостраницы,}
{используемой для построения смещенного изображения }
ClearDevice; {очистка графического экрана}
{--------------------------------------------------------------}
{Рисование "расходящейся" галактики}
RandSeed:=1; {исходное значение датчика случайных чисел}
Expansion:=VisualPage/100; {cкорость расширения
галактики}
For i:= 1 to VisualPage do
begin XRad := Trunc(Expansion*RadGal*Random);
изображается цветом фона, отчего он становится невидимым, далее рисунок
выводится в исходном цвете, но с некоторым перемещением и т.д.
Оба способа имеют одинаковый недостаток —
движение изображения является прерывистым и вызывает мелькание экрана.
В этой программе для организации более плавного движения изображения по экрану
используется возможность формировать изображение на разных страницах
видеопамяти (обычно их две или четыре, в зависимости от типа графического адаптера).
Изображение сначала создается на странице с нулевым номером, видимой по умолчанию,
а на невидимой странице с номером 1 формируется изображение с небольшим
перемещением. Затем страница с номером 1 делается видимой, а новое изображение
формируется на ставшей невидимой странице с нулевым номером и т.д.
Внимание: будет работать только если Turbo Pascal установлен в каталог
C:\TP и каталог C:\TP\BGI содержит необходимый файл egavga.bgi.
Program Space; {составил студент Тетуев Р., мат.фак. КБГУ}
Uses Graph, Crt;
Const
RadOrb = 250 {радиус орбиты Земли}; RadSun = 70 {радиус Солнца};
RadGal = 100 {радиус галактики }; RadZem = 18 {радиус Земли };
Naklon = 0.2 {коэффициент наклона плоскости орбиты Земли};
PressZem = 0.65 {коэффициент сплющенности полюсов Земли};
Compress = 0.8 {коэффициент сжатия при переходе из };
{расширения режима VGA в режим CGA }
Var
ZemX, ZemY, UgMer, PixelY, DUgZem , UpDown,
XRad, Grad, UgZem, PixelX, StAngle, Ua, Ub,
ParallelY , Color, ZemPix, EndAngle,
VisualPage, GrMode, GrError, GrDriver, i : Integer;
Ugol, CompressZem, Expansion,
DUgol, Projection, PolUgol : Real;
BEGIN
{установка графического режима и проверка возможных ошибок}
GrDriver := EGA; GrMode := EGAHi;
InitGraph(GrDriver, GrMode, 'C:\TP\BGI');
GrError := GraphResult; If GrError<>GrOk then Halt;
SetBkColor(Black);
SetFillStyle(1, Yellow); {установка стиля заполнения и цвета Cолнцa}
Ugol := 0; DUgol := 2*Pi/180; {орбитальное угловое смещение Земли}
UgZem := 0; DUgZem := 14; {осевое угловое смещение Земли}
{------------------------------------------------------------------}
VisualPage := 1;
Repeat {цикл прерывается нажатием любой клавиши}
SetVisualPage(1- (VisualPage mod 2));
{установка номера видимой видеостраницы}
VisualPage := VisualPage+1; {листание видеостраниц}
SetActivePage(1 - (VisualPage mod 2));
{установка номера невидимой (активной) видеостраницы,}
{используемой для построения смещенного изображения }
ClearDevice; {очистка графического экрана}
{--------------------------------------------------------------}
{Рисование "расходящейся" галактики}
RandSeed:=1; {исходное значение датчика случайных чисел}
Expansion:=VisualPage/100; {cкорость расширения галактики}
For i:= 1 to VisualPage do
begin XRad := Trunc(Expansion*RadGal*Random);
Страницы
- « первая
- ‹ предыдущая
- …
- 106
- 107
- 108
- 109
- 110
- …
- следующая ›
- последняя »
