Nickolay.info. Программы. Laces |
Программа генерирует кружевные узоры. Собственно, всё, что нужно, вот (см. в исходнике процедуру Button1Click):
x:=y0-sign(x0)*sqrt(abs(b*x0-c)); y:=a-x0; x0:=x; y0:=y;
Здесь sign - функция, определяющая знак числа, остальное на Паскале и понятно.
На рисование влияют коэффициенты A, B и C, задаваемые с полей формы, а также установленное бегунком число шагов рисования. Можно менять размеры картинки и сохранить ее в BMP. Прогресс генерации рисунка показывается в строке заголовка окна.
При перекомпиляции программы можно попробовать другую длину полей ввода A, B, C (у меня MaxLength=4). Минимальное (Min) и максимальное (Max) число шагов, а также малый (SmallChange) и большой (LargeChange) шаг прокрутки можно поменять в свойствах бегунка ScrollBar1. Цвет очередной точки, который меняется у меня операторами
Color1:=Image1.Canvas.Pixels[cx,cy]+1000; Image1.Canvas.Pen.Color:=Color1; Image1.Canvas.Pixels[cx,cy]:=Color1;
также необязательно вычислять столь грубо (подумайте, почему все выходит в красных тонах?). Можно поиграть с интенсивностями красного, зеленого и синего, как сделано в проекте SuperBubs. Можно начать не с черного, а с белого и наоборот уменьшать интенсивность цветов. В общем, можно очень много чего.
Скриншоты (качество их ниже оригинала из-за формата JPEG!):
результат рисования с параметрами по умолчанию
параметры могут меняться до значения 9999
один из мириадов возможных рисунков
Скачать:
Программа Laces (архив Laces.zip, 123 Кб)
Исходники программы Laces - проект Delphi 3 (архив Laces_src.zip, 5 Кб)
Если Вам удастся сгенерировать симпатичную "салфетку" - присылайте ее саму или параметры. Мне вот при написании этой небольшой доки понравились A=2, B=-2, C=212 и A=-20, B=-20, C=-500 при числе шагов от 50000 и размере картинки от 640x480.
См. также: Superbubs, все открытые программы
гостевая; E-mail |