Фрактальный пятиугольник Дарера

Фрактальный  ПЯТИУГОЛЬНИК ДАРЕРА.Фракатал.Фрактальная графика.ВГКГ.Цвет.Теория хаоса

Построить фрактальный пятиугольник Дарера

ПЯТИУГОЛЬНИК ДАРЕРА выглядит как связка пятиугольников, сжатых вместе. Фактически он образован при использовании пятиугольника в качестве инициатора и равнобедренных треугольников, отношение большей стороны к меньшей, в которых в точности равно так называемой золотой пропорции (1.618033989 или 1/(2cos72)) в качестве генератора. Эти треугольники вырезаются из середины каждого пятиугольника, в результате чего получается фигура, похожая на 5 маленьких пятиугольников, приклеенных к одному большому.

#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <graphics.h>
#include <stdlib.h>
#define SIZE 6
#define LP 0.4
#define M M_PI
 
  void DRAWING(double x,double y,double r,double a);
  void DARER(double x, double y, double r, double a, int d);
 
int main(){
 
  int graphdriver = DETECT, gmode, errorcode;
  initgraph(&graphdriver,&gmode,"c:\\borlandc\\bgi");
  DARER(320, 260, 95, M_PI/10, 3);
 
 getch();
 return 0;
}
void DRAWING(double x,double y,double r,double a) {
   double m1[SIZE];
   double m2[SIZE];
 
     for(int i = 0; i < SIZE; i++){
	m1[i] = r*cos(a+i*M_PI*LP);
	m2[i] = r*sin(a+i*M_PI*LP);
      }
 
     for(i = 0; i < SIZE-1; i++){
       setcolor(11);
       line(x+m1[i],y+m2[i],x+m1[i+1],y+m2[i+1]);
      }
    }
 
void DARER(double x, double y, double r, double a, int d) {
    double v;
 
    v = 2*r*cos(M/5);
      for(int i = 0; i < SIZE; i++){
	DRAWING(x-v*cos(a+i*M*LP),y-v*sin(a+i*M*LP),r,a+M+i*M*LP);
	   if (d > 0)
	     DARER(x-v*cos(a+i*M*LP),y-
	      v*sin(a+i*M*LP),r/(2*cos(M/5)+1),a+M+(2*i+1)*M*2/10, d-1);
	  }
	}

ВложениеРазмер
Fractal_Darera_opita.net_.rar35.53 кб