Уроки, алгоритмы, программы, примеры

Вход на сайт

Материалы по разделам

Построения
на плоскости (2D)
Графика
в пространстве (3D)
Вычислительная
геометрия
Физическое
моделирование
Фрактальная
графика

Новые комментарии

Добавление к программе строки glutReshapeFunc(changeSize); приводит к тому, что треугольник перестаёт совсем отрисовываться.
Выдаёт ошибку glut32.dll не найден! При том, что он лежит в System32! Всё решил) Нужно отправить не в System32, а в System.
Спасибо за статью. Я не Ваш студент. Но мне она помогла написать функцию для Канторова множества на Python для черепашки: import turtle def kanter(x, y, d):     if d > 1:         turtle...
Как реализовать в данном примере границы расчёта?

Счетчики и рейтинг

Рейтинг@Mail.ru Яндекс.Метрика
Скриншот к примеру
Среда программирования: 
PascalABC.NET
Статья по теме: 

Запуск кода:
Для того чтобы запустить код нужно открыть приложение PascalABC.NET. Далее нужно скопировать код в рабочую зону и нажать на кнопку "Выполнить". После чего произойдет компиляция кода и с помощью модуля GraphABC появится окно в котором уже и будет построен фрактал.

Код программы: 

Program Selim;
uses GraphABC; //модуль для рисования в PascalABC.Net
 
procedure RLine(A, B, A1, B1: real) := Line(Round(A), Round(B), Round(A1), Round(B1)); //Проводим отрезок от точки с координатами (A, B) до точки с координатами (A1, B1)
 
function GetAngle(A, B, A2, B2: real): real;
begin
  var Ang := Abs(RadToDeg(ArcTan((B2 - B) / (A2 - A))));
  if (A2 = A) and (B2 = B) then
    Result := 0
  else
    if A2 > A then
      if B2 > B then Result := Ang else Result := 360 - Ang
    else
      if B2 > B then Result := 180 - Ang else Result := 180 + Ang;
end;
 
function Distance(A, B, A1, B1: real) := Sqrt(Sqr(A1 - A) + Sqr(B1 - B)); 
 
procedure Draw(A, B, A1, B1: real);
begin
  var C := Distance(A, B, A1, B1);
 
  if C < 10 then
    RLine(A, B, A1, B1)
  else
  begin
    var Ang := GetAngle(A, B, A1, B1);
    var AngQ := DegToRad(Ang + 90);
    var AngW := DegToRad(Ang - 90);
 
    C /= 4;
 
    var dx := (A1 - A) / 4;
    var dy := (B1 - B) / 4;
 
    var xA := A + dx;
    var yA := B + dy;
    var xB := xA + dx;
    var yB := yA + dy;
    var xC := xB + dx;
    var yC := yB + dy;
 
    var x2 := xA + C * Cos(AngQ);
    var y2 := yA + C * Sin(AngQ);
 
    var x3 := xB + C * Cos(AngQ);
    var y3 := yB + C * Sin(AngQ);
 
    var x4 := xB + C * Cos(AngW);
    var y4 := yB + C * Sin(AngW);
 
    var x5 := xC + C * Cos(AngW);
    var y5 := yC + C * Sin(AngW);
 
    Draw(A, B, xA, yA);
    Draw(xA, yA, x2, y2);
    Draw(x2, y2, x3, y3);
    Draw(x3, y3, xB, yB);
    Draw(xB, yB, x4, y4);
    Draw(x4, y4, x5, y5);
    Draw(x5, y5, xC, yC);
    Draw(xC, yC, A1, B1);
  end;
end;
 
begin
  Draw(100, 200, 400, 200);
end.

Прикрепленный файлРазмер
Selim_examples_frac_27.zip689 байтов