Главная страница
Навигация по странице:

  • Введение Задача

  • Цель работы

  • Описание используемой среды программирования Для выполнения поставленной задачи мной выбрана среда программирования PascalABCФункцио

  • Лабораторная работа № 1 «Фрактальная графика». Лабораторная работа 1 Фрактальная графика По дисциплине Компьютерная графика студент группы з511П85


    Скачать 110.01 Kb.
    НазваниеЛабораторная работа 1 Фрактальная графика По дисциплине Компьютерная графика студент группы з511П85
    АнкорЛабораторная работа № 1 «Фрактальная графика
    Дата04.02.2023
    Размер110.01 Kb.
    Формат файлаdocx
    Имя файлаЛабораторная работа № 1 «Фрактальная графика».docx
    ТипЛабораторная работа
    #919430

    Министерство науки и высшего образования Российской Федерации

    Федеральное государственное бюджетное образовательное

    учреждение высшего образования

    ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ

    УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)

    Кафедра компьютерных систем в управлении

    и проектировании (КСУП)


    Лабораторная работа № 1

    «Фрактальная графика»

    По дисциплине Компьютерная графика

    Выполнил: студент группы з-511П8-5

    Кузнецов Сергей Сергеевич

    Проверил:

    преподаватель

    Перемитина Татьяна Олеговна


    Томск 2023

    Содержание

    1. Введениe

    2. Описание исходных данных

    3. Описание используемой среды программирования

    4. Функциональные возможности программы

    5. Приложение №1

    6. Приложение №2


    Введение

    Задача: Реализовать программу, строящую фрактал с заданными границами расчета X0 (-1.0), Xn (1.0), Y0 (-1.0), Yn (1.0).

    Цель работы: изучение теоретических основ фрактальной графики, приобретение практических навыков построения алгебраических фракталов.

    Описание исходных данных

    x0,xn,y0,yn – Диапазон координат

    yc,xc – Экранные координаты

    my,mx - Масштаб для перевода координат в экранные

    Описание используемой среды программирования

    Для выполнения поставленной задачи мной выбрана среда программирования PascalABC

    Функциональные возможности разработанного приложения

    В листинге программы можно менять координаты по х и у тем самым проявляется вариативность программы . В данных написаны следующие координаты X0 (-1.0), Xn (1.0), Y0 (-1.0),Yn (1.0).

    Приложение №1

    Полный листинг программы:

    program Newton;

    uses GraphABC,Utils;

    type Complex = Record

    x : Real;

    y : Real;

    end;

    const iter = 50;

    max = 1e+6;

    min = 1e-6;

    var z, t, d : Complex;

    y, x, p : Real;

    xc, yc, n : Integer;

    mx, my : real;

    x0,xn,y0,yn : real;

    {Функция для перевода кода цвета в константу}

    function IntToColor(const kode: integer):color;

    begin

    case kode of

    0: result:=clBlack;

    1: result:=clBlue;

    2: result:=clGreen;

    3: result:=clCyan;

    4: result:=clRed;

    5: result:=clDarkMagenta;

    6: result:=clBrown;

    7: result:=clLightGray;

    8: result:=clDarkGray;

    9: result:=clLightBlue;

    10: result:=clLightGreen;

    11: result:=clLightCyan;

    12: result:=clLightPink;

    13: result:=clMagenta;

    14: result:=clYellow;

    15: result:=clWhite;

    end;

    IntToColor:=result;

    end;

    begin

    SetWindowSize(790,500);

    Window.Title := 'Фрактал Ньютона';

    Randomize;

    x0:=-1.0;xn:=1.0;

    y0:=-1.0;yn:=1.0;

    {начало экранных координат, смещено влево и вверх}

    xc := round(790*(-x0)/(xn-x0));

    yc := round(500*(-y0)/(yn-y0));

    {масштаб для перевода координат в экранные}

    mx:=xc/(-x0);

    my:=yc/-y0;

    y:=y0;{цикл по у}

    repeat

    x:=x0; {цикл по х}

    repeat

    n := 0;

    z.x := x;

    z.y := y;

    d := z;

    while (sqr(z.x)+sqr(z.y) < max) and (sqr(d.x)+sqr(d.y) > min)

    and (n < iter) do

    begin

    t := z;

    p := sqr(sqr(t.x)+sqr(t.y));

    z.x := 2/3*t.x + (sqr(t.x)-sqr(t.y))/(3*p);

    z.y := 2/3*t.y*(1-t.x/p);

    d.x := abs(t.x - z.x);

    d.y := abs(t.y - z.y);

    Inc(n);

    end;

    PutPixel(xc + round(x*mx),yc + round(y*my),IntToColor(16 - (n mod 16)));

    x:=x+0.001;{шаг по x: чем больше шаг, тем быстрее рисуется, но менее качественная картинка}

    until x>xn;

    y:=y+0.001; {шаг по y}

    until y>yn;

    end.

    Приложение №2

    Основное окно программы:



    написать администратору сайта