Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.05.2022, 15:44   #1
John Lennon
Новичок
Джуниор
 
Регистрация: 25.05.2022
Сообщений: 1
По умолчанию Рекурсивная графика

Мне нужно написать рекурсивный метод, который будет рисовать фрактал как на скриншоте, при N введённым пользователем (на скриншоте слева N = 2, справа N = 3). Мне не обязательно, чтобы мне написали готовое решение, буду рад если мне прото объяснят алгоритм
Изображения
Тип файла: png 2022-05-22_20-39-17.png (68.2 Кб, 35 просмотров)
John Lennon вне форума Ответить с цитированием
Старый 26.05.2022, 09:47   #2
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 735
По умолчанию

Принцип по определению фрактала: мы имеем черточку и еще 2 черточки(черная линия). Определения фрактала состоит в том, что эта черточка размножается и потом еще размножаются ее мелкие части(копии). Слева 2 уровня такого размножения, а справа 3. И размножаются они на пятиугольнике.
Я попробовал код фрактала(пример из Интернета), но у меня Code Blocks ругается на функцию CreatePen. Вот код:
Код:
#include <cmath>
#include <conio.h>
#include <windows.h>
#include <complex>

#pragma comment(lib, "user32.lib")
#pragma comment(lib, "kernel32.lib")
#pragma comment(lib, "gdi32.lib")

using namespace std;

HWND hwnd;
HDC hdc;
RECT rc;
HPEN hpen;  //это графика для консоли, если я правильно понимаю

void st()
{
    TCHAR title[256];
    ::GetConsoleTitle(title,256);
    hwnd=::FindWindow(0,title);
    hdc=::GetWindowDC(hwnd);
    ::SetWindowPos(hwnd,0,0,0,1000,1000,0);
    ::GetClientRect(hwnd,&rc);
    hpen = ::CreatePen(2, 1, COLORREF(RGB(150,150,150)));
    ::SelectObject(hdc, hpen);

    //пример вывода точек в консоли
    //int i, j;

    //for(i=0;i<100;i++)
        //for(j=0;j<100;j++)
            //SetPixel(hdc, i, j, RGB(0,0,255) );

}

int main()
{
  double a=0.85, b=0.9, k=0.5, p=7.7;
  complex<double> z;
  int i;

  st();
  z=0;
  for (i=0; i<=30000; i++)
  {

      //тут проблема с * z *  и с abs(z*z). Что это за кривая?
      z = a + b*z*exp(complex<double>(0.0, (k - p/(1.0 + abs(z*z)) ) ));

      SetPixel(hdc, z.real()*180.0+240.0, z.imag()*180.0+280.0, RGB(0,0,255) );

  }
  getch();
  return 0;
}
Можете мне тоже, кстати с этим помочь.
Изображения
Тип файла: png Fractal2.png (90.8 Кб, 35 просмотров)

Последний раз редактировалось Cuprum5; 26.05.2022 в 09:52.
Cuprum5 вне форума Ответить с цитированием
Старый 27.05.2022, 17:21   #3
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 735
По умолчанию

Фрактал.
Вложения
Тип файла: rar Fractal.rar (1.00 Мб, 4 просмотров)
Cuprum5 вне форума Ответить с цитированием
Старый 28.05.2022, 16:09   #4
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 735
По умолчанию

Фрактал2.
Вложения
Тип файла: rar Fractal2.rar (1.02 Мб, 1 просмотров)
Cuprum5 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Автоматическое изменение графика при переносе данных, формулы и графика на другой лист REztor Microsoft Office Excel 0 01.06.2013 18:01
рекурсивная процедура Серый777 Паскаль, Turbo Pascal, PascalABC.NET 1 08.11.2011 18:19
Задача (рекурсивная) Witaliy Паскаль, Turbo Pascal, PascalABC.NET 2 21.01.2009 06:18