Лучшее в категории - Графическое оформление и рабочий стол / Обои, картинки
02
дек
2011
дек
2011
Симметричные узоры [2012, Картинки]
Симметричные узоры
Жанр: Картинки
Количество файлов: 108
Разрешение: От 1024x1024 до 2048x2048
Формат: png, gif
Описание:
Раздача состоит из 99 калейдоскопических статичных узоров и 9 спиралей.
::Использованное программное обеспечение::
IDE Free Pascal (для записи .tga файла), FuturixImager (для просмотра полученного при помощи Паскаля и небольшого редактирования), ArcSoft PhotoStudio (это аналог Adobe PhotoShop, который применялся для более точного редактирования).
::Порядок действий::
Сначала составляется несжатый .tga файл с глубиной цвета 24 бит. Это значит, что цвет каждого пиксела описывается тремя байтами, а размер изображения составляет 3 Б*1024*1024 = 3 Мб.
Затем .tga надо сжать в .png или .gif, в зависимости от богатства палитры, присутствующей в узоре. Выходной файл величиной от несколько сотен килобайт до примерно двух мегабайт. .tga отправляется на хранение (на всякий случай), а конечный продукт — либо в раздачу, либо на редактирование (если не понравился). Бывает необходимость изменить яркость, контрастность, оттенок, насыщенность, тени, тона, повернуть или отразить.
::Получение исходного изображения::
Картинку составляла программа, написанная на языке Pascal. Она записывает 3.000.000 символов (байт) за 3 секунды. Но система координат, которая используется в форматах изображений — прямоугольная, и узоры получатся четырёхсторонними. Чтобы получить узор степени симметрии N, нужна система координат с количеством осей равным N (у декартовой их четыре, но из-за совпадения отрицательного направления оси абсцисс и третьей оси, а также отрицательного направления оси ординат и четвёртой оси последние две оси не учитывают).
Для преобразования координат родной декартовой системы в координаты N-осной системы с углом между любыми двумя осями равным PI*2 / N следует применять формулу:
c[1] = x-y*Tan(Angle) — ось, совпадающая с осью абсцисс
c[0] = -y/Cos(Angle) — это последняя ось (если идти против часовой стрелки от оси c[1])
c[k] = c[k-1]*Sin(Angle)*2-c[k-2], k принимает значения от 2 до N-1.
Angle = PI*(N-4)/(N*2). Для удобства конечной оси присвоен номер 0.
Текст программы
Код: |
USES Crt, // работа с файлами Math, // математические функции Dos; // для открытия готового файла во внешней программе CONST N = 6; // количество осей новой системы Angle = PI*(N-4)/(N*2); PIx2 = Pi*2; // полный угол VAR Width, // ширина изображения в пикселах Height : Dword; // высота изображения в пикселах Zoom : Real; // величина изменения масштаба узора TGA : Text; Wm,Wd, Hm,Hd : Byte; fromX,toX, fromY,toY, X,Y : Integer; // счётчики C : Array [0..N-1] Of Real; Bytes, // счётчик байтов Meter : Byte; // счётчик Color,k : Real; PROCEDURE WriteInfo; // процедура записи информации Begin // об изображении Wm:= Width Mod 256; Wd:= Width Div 256; Hm:=Height Mod 256; Hd:=Height Div 256; Write(TGA,chr($00)+chr($00)+chr($01)+chr($00)+ chr($00)+chr($00)+chr($00)+chr($00)+ chr($00)+chr($00)+chr($00)+chr($00)+ chr(Wm )+chr(Wd )+chr(Hm )+chr(Hd )+ chr($18)+chr($00)); End; PROCEDURE Convert; // процедура преобразования координат Begin C[0]:=(-Y/Cos(Angle))/Zoom; C[1]:=(X-Y*Tan(Angle))/Zoom; for Meter:=2 to N-1 do C[Meter]:=C[Meter-1]*Sin(Angle)*2-C[Meter-2]; End; PROCEDURE WritePixel; // процедура записи цветовой карты Begin for Bytes:=0 to 2 do // 3 байта = 1 пиксел begin Color:=0; // обнуление for Meter:=0 to N-1 do // в формулу включены begin // все N координат k:=C[(Meter+Bytes) Mod N]; Color:=Color+Cos(k*Cos(k*Bytes)); end; write(TGA,Chr(Round(Cos(Color)*255))); end; End; BEGIN Width :=512; Height:=512; Zoom :=Width/(Pi*6); AsSign(TGA,'C:Sym-Metry.tga'); ReWrite(TGA); // создаём файл и открываем его для записи WriteInfo; fromX:=(-Width-1) Div 2+1; toX:=Width Div 2; fromY:=(-Height-1) Div 2+1; toY:=Height Div 2; For Y:=fromY To toY Do For X:=fromX To toX Do Begin Convert; WritePixel; End; Close(TGA); // закрываем файл изображения Exec('C:Program FilesFuturix Imagerfximager.exe', 'C:Sym-Metry.tga'); // открываем в просмотровщике END. |