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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.11.2014, 11:17   #1
Pein95
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 881
По умолчанию Фрактал Цесаро

Может есть у кого нибудь код реализации этого фрактала, или может кто нибудь сам делал его.
Помогите реализировать
Фрактал Цесаро - кривая коха с углом 85 градусов.
Код кривой Коха ниже
Код:
#include "StdAfx.h"
#include "Koch.h"
#include "math.h"

#define M_PI       3.14159265358979323846
//void CPaintDlg::Koch(CPaintDC* pdc1, int order, int X1, int Y1, int X2, int Y2)
void Koch(CPaintDC* pdc1, int order, int X1, int Y1, int X2, int Y2)
{
  if(order == 0)
  {
    pdc1->MoveTo(X1,Y1);
    pdc1->LineTo(X2,Y2);

  }
  else
  {
    double alpha = atan2(Y2-Y1, X2-X1);
    double R = sqrt((X2-X1)*(X2-X1)+(Y2-Y1)*(Y2-Y1));

    double Xa = X1 + R*cos(alpha)/3,
           Ya = Y1 + R*sin(alpha)/3;

    double Xc = Xa + R*cos(alpha - M_PI/3)/3,
           Yc = Ya + R*sin(alpha - M_PI/3)/3;

    double Xb = X1 + 2*R*cos(alpha)/3,
           Yb = Y1 + 2*R*sin(alpha)/3;
	
	int Xa1 = (int)Xa;
    int Ya1 = (int)Ya;

    int Xc1 = (int)Xc;
    int Yc1 = (int)Yc;

    int Xb1 = (int)Xb;
    int Yb1 = (int)Yb;

	Koch(pdc1,order - 1, X1, Y1, Xa1, Ya1);
    Koch(pdc1,order - 1, Xa1, Ya1, Xc1, Yc1);
    Koch(pdc1,order - 1, Xc1, Yc1, Xb1, Yb1);
    Koch(pdc1,order - 1, Xb1, Yb1, X2, Y2);

  }
}
Pein95 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Фрактал marat-link Помощь студентам 4 01.10.2012 14:14
Фрактал Ньютона bloker Паскаль, Turbo Pascal, PascalABC.NET 0 28.10.2011 10:11
Фрактал на PHP Alter PHP 5 29.10.2008 15:24