Сегодня вдохновленный воспоминаниями, решил сделать небольшую красивую программку на Turbo C++ 3.0 рисующую рекурсивную снежинку с использованием библиотеки graphics.h .
Выглядит она так :
Формулу для изменения размеров лучиков снежинки более низкого уровня можно придумать любую, вообще чем интересны подобные программы — здесь можно много экспериментировать, пока не добьетесь нужного вам результата. А вот код на С++, рисующий снежинку:
#include <stdio.h> #include <stdlib.h> #include <graphics.h> #include <math.h> /* x,y - координаты центра снежинки n - кол-во лучиков у простейшей снежинки level - кол-во уровней вложенности рекурсии */ void snowflake(int x, int y, int n, int level) { if (level == 4) return; // если мы дошли до 4 уровня вложености , заканчиваем рекурсию int i, nx, ny; float dAngel = 2.0 * M_PI/n ; // шаг угла for(i=0;i<n;i++) { setcolor(random(14) + 1); // выбираем случайный цвет для лучика // рисуем лучик moveto(x,y); nx = x + floor((200/(level*level))*sin((float)i*dAngel + level - 1) ); ny = y - floor((200/(level*level))*cos((float)i*dAngel + level - 1) ); lineto(nx,ny); //рисуем еще меньшую снежинку на краю лучика snowflake(nx,ny,n,level+1); } } int main() { int gd = DETECT, gm ; initgraph(&gd,&gm,""); // инициализируем графику snowflake(getmaxx()/2,getmaxy()/2,12,1); // рисуем снежинку по центру экрана closegraph(); // заканчиваем работу программы return 0; }
Не забудьте скопировать драйвер EGAVGA.bgi из папки ..\BGI\ в папку с программой, либо укажите к нему полный путь третьим аргументом функции initgraph();
My homepage; Вдохновляйтесь и готовьте вкуснейшие блюда! – Наша цель – разнообразить ежедневное меню