Фрактал. Треугольники (не Серпинского) - Pascal ABC
Формулировка задачи:
Помогите пожалуйста с графикой, нужен такой фрактал
Решение задачи: «Фрактал. Треугольники (не Серпинского)»
textual
Листинг программы
uses graphABC,crt; procedure koh(x1,y1,x2,y2,x3,y3,k:integer); var xxs,yys,xx1,yy1,xx2,yy2,xx3,yy3:integer; al:real; begin if k>0 then begin {t1,t2} xx1:=round((2*x1+x2)/3); yy1:=round((2*y1+y2)/3); xx2:=round((2*x2+x1)/3); yy2:=round((2*y2+y1)/3); {t3} xxs:=round((x1+x2)/2); yys:=round((y1+y2)/2); xx3:=abs(round((4*xxs-x3)/3)); yy3:=abs(round((4*yys-y3)/3)); {risuem 1-3,3-2} SetpenColor(clBlack); Setpenwidth(1); MoveTo(xx1,yy1); LineTo(xx3,yy3); LineTo(xx2,yy2); koh(xx1,yy1,xx3,yy3,xx2,yy2,k-1); koh(xx3,yy3,xx2,yy2,xx1,yy1,k-1); koh(x1,y1,xx1,yy1,round((2*x1+x3)/3),round((2*y1+y3)/3),k-1); koh(x2,y2,xx2,yy2,round((2*x2+x3)/3),round((2*y2+y3)/3),k-1); end; end; var n,xc,yc,x1,y1,x2,y2,x3,y3,a:integer; h:real; begin repeat write('ÃëóáèГ*Г* ðåêóðñèè [1..8] n='); read(n); until n in [1..8]; hidecursor; xc:=windowwidth div 2;{centr ekrana} yc:=windowheight div 2; a:=300; h:=a*sin(pi/3);{vysota treugilnika} x1:=xc-a div 2; y1:=yc+round(h/3); x2:=xc; y2:=yc-round(2*h/3); x3:=xc+a div 2; y3:=y1; Moveto(x1,y1); LineTo(x2,y2); LineTo(x3,y3); LineTo(x1,y1); koh(x1,y1,x2,y2,x3,y3,n); koh(x2,y2,x3,y3,x1,y1,n); koh(x3,y3,x1,y1,x2,y2,n); end.
Объяснение кода листинга программы
- Объявлены следующие переменные:
- n, xc, yc, x1, y1, x2, y2, x3, y3, a, h: целочисленные или вещественные переменные (в зависимости от типа данных, которые они содержат)
- koh: процедура
- uses graphABC, crt: директивы использования модулей
- В основной части программы после цикла повторяемости, задаются начальные значения переменных:
- n: задается значение 3
- xc, yc: задаются средние координаты экрана
- a: задается значение 300
- h: вычисляется значение на основе a и pi/3
- x1, y1: задаются координаты левого верхнего угла треугольника
- x2, y2: задаются координаты правого нижнего угла треугольника
- x3, y3: задаются координаты диагонали треугольника, исходящей из левого верхнего угла
- Выполняются следующие действия:
- Строка с координатами треугольника выводится на экран
- Строка с координатами треугольника записывается в файл
- Переменная koh вызывается рекурсивно для каждого из треугольников, образованных в результате деления исходного треугольника на 4 равные части
- Переменная koh вызывается рекурсивно для каждого из треугольников, образованных в результате деления исходного треугольника на 4 равные части
- Переменная koh вызывается рекурсивно для каждого из треугольников, образованных в результате деления исходного треугольника на 4 равные части
- Переменная koh вызывается рекурсивно для каждого из треугольников, образованных в результате деления исходного треугольника на 4 равные части
- Переменная koh определена как процедура, которая принимает 7 аргументов:
- x1, y1, x2, y2, x3, y3, k: целочисленные переменные
- Переменные xx1, yy1, xx2, yy2, xx3, yy3, al: вещественные переменные
- Значения переменных xx1, yy1, xx2, yy2, xx3, yy3, al вычисляются внутри процедуры koh
- Используются функции round и abs для округления и получения абсолютного значения
- Используются функции sin и pi для вычисления значения h
- Используются функции Moveto и LineTo для рисования треугольника
- Используется функция read для считывания ввода пользователя
- Используется функция repeat для выполнения повторяющихся действий
- Используется функция hidecursor для скрытия курсора
- Используется функция windowwidth и windowheight для получения ширины и высоты окна
- Используется функция a*sin(pi/3) для вычисления значения h
- Используется функция a div 2 для вычисления значения a/2
- Используется функция a*sin(pi/3) для вычисления значения h
- Используется функция a*sin(pi/3) для вычисления значения h
- Используется функция a*sin(pi/3) для вычисления значения h
- Используется функция a*sin(pi/3) для вычисления значения h
- Используется функция a*sin(pi/3) для вычисления значения h
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д