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

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

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

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

У меня проблема вот с этим: gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT);. Вылезает ошибка: CS1061 "object" не содержит определения "GL_COLOR_BUFFER_BIT", и не удалось найти доступный метод расширения "GL_COLOR_BUFFER_BIT",...
Большое спасибо. Единственный код который прошел без каких либо ошибок. Ура!!!
Скажите пожалуйста, подскажите алгоритм по которому по заданным точкам можно определить тип многогранника, скажем это куб или прямоугольный параллелепипед. Нашел теорию по этим фигурам: https://www.mat... https://www.mat... Акцентировать внимание...
Всем у кого не работает. файл wizard.script Ещё одно упоминание Glut32 в строке "if (!VerifyLibFile(dir_nomacro_lib, _T("glut32"), _T("GLUT's"))) return false;" меняем на "if (!VerifyLibFile(dir_nomacro_lib, _T("freeglut"), _T("GLUT's"))) return...
Не получается, емаё

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

Рейтинг@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 байтов