div.main {margin-left: 20pt; margin-right: 20pt}
Этюды о бесполезной красоте - Графика на WEB страничке
Автор: Евгений
Скляревский
Адаптация для TMT Pascal:
Валерий
Вотинцев
Оригинал статьи для Visual Basic: Журнал Hard'n'Soft
Завести
домашнюю страничку сейчас проще простого: «застолбил» имя на
бесплатном сервере (http://www.boom.ru/, http://www.narod.ru/ или др.),
оформил сайт в Microsoft Word или FrontPage, скопировал файлы,
зарегистрировался везде, где только можно - и пожинай прелести
всемирной славы. Одна беда: никто, кроме автора и поисковых роботов,
на нее не заглядывает, потому как фотография типа «Мы с Толяном в
походе у костра» интересна только Толяну, а рекомендации по выбору
«Порше» в предыдущей версии игры Need for Speed могут привлечь
парочку фанатов, но повторно они уже не зайдут. Можно еще насобирать
в Сети афоризмов или советов по оформлению и продвижению сайтов, но
это только придаст страничке нафталиновый дух.
А вот что
сделает ваш сайт действительно оригинальным, так это галерея
компьютерной графики! Многие под этим понятием понимают
фантастические пейзажи, созданные в 3D MAX натягиванием текстур на
объемные тела с эффектной подсветкой. При всем уважении к
кропотливости такой работы мы пойдем путем чисто математическим.
Скопируйте приведенную ниже программу в окно компилятора TMT Pascal
и запустите программу.
(***********************************************)
(* Screen Saver *)
(* Автор алгоритма: Евгений Скляревский (VB) *)
(* ------------------------------------------- *)
(* Адаптация для TMT Pascal: *)
(* Валерий Вотинцев *)
(* MS-DOS 32-bit protected mode *)
(* Win32 Console application *)
(* Win32 GUI *)
(***********************************************)
uses CRT, Graph;
var
x, y, ss, xmax, ymax, col: longint;
r, qx, qy, fi: extended;
coeff1, coeff2, coeff3, coeff4,coeff5, coeff6: extended;
ColDepth: word;
red, green, blue: byte;
begin
xmax := 800; // Разрешение по горизонтали
ymax := 600; // Разрешение по вертикали
ColDepth := 16; // Максимальная глубина цвета (бит на пиксел)
Coeff1 := 500; // Начальные
Coeff2 := 0.5; // коэффициенты
Coeff3 := 1.95; // для
Coeff4 := 500; // формул
Coeff5 := 1.5;
Coeff6 := 1.85;
r := 282;
fi := Pi / xmax * 2 + 0.001;
ss := 0; // Метод отрисовки "торца" цветной пластины
// ss = 0 -> торец не рисуется
// ss > 1 -> "толщина" торца в пикселах
// Установим графический режим
SetSVGAMode(xmax,ymax,ColDepth,LFBorBanked);
if GraphResult<>grOk then begin // Проверка результата
Writeln('Mode not supported..');
Halt(0);
end;
{1} {Randomize;}
{2} {Repeat}
{3} {r := 8 + Random(1024);
Coeff1 := 1 + Random(1000);
Coeff2 := 0.01 + Random(5);
Coeff3 := 0.01 + Random(5);
Coeff4 := 1 + Random(1000);
Coeff5 := 0.01 + Random(5);
Coeff6 := 0.01 + Random(5);
}
For y := 0 To pred(ymax) do begin
For x := 0 To pred(xmax) do begin
qx := r * (Sin(fi * x * y / Coeff1) - Coeff2 * Sin(Coeff3 * fi * y));
qy := r * (Sin(fi * y * x / Coeff4) - Coeff5 * Sin(Coeff6 * fi * x));
red := trunc(Abs(qy)) Mod 256;
green := trunc(Abs(qy + qx)) Mod 256;
blue := trunc(Abs(qx)) Mod 256;
SetColor(RGBColor(red, green, blue));
If (ss > 1) Then
Line (x, y, x+ss, y+ss)
else PutPixel(x,y);
If keypressed then break;
end;
end;
{4} {until keypressed;} // Когда надоест - нажмем Any Key
ReadKey; // Считываем нажатую клавишу
CloseGraph;
end.
Уверен, что ничего красивее вы на своем экране не
видели! Программа несложная. Объявляются два цикла: по х и y
проходятся все точки экрана. Рисуются они цветами, зависящими от
этих x и y самым причудливым образом,
описанным переменными qx и qy.
Попробуйте поменять параметры в этих переменных.
Для этого просто уберите комментарии
с блока операторов для вычисления случайных коэффициентов {3},
и вы получите новые картины для своей галереи.
Если снять комментарии вокруг операторов Repeat {2} и
until keypressed {4},
то картины будут меняться автоматически случайным
образом, заставляя зрителей вскрикивать от восхищения.
Чтобы при каждом запуске программы картины не повторялись,
удалите комментарии и с процедуры Randomize {1}.
В таком виде программу можно использовать как «скринсейвер»
или даже «генератор текстур», и выложить ее на сайте в разделе
«Мой софт» :)
|