El siguiente vínculo explica que es dicho fractal:
http://www.dmae.upm.es/cursofractales/capitulo1/3.html
El siguiente código muestra como realizar dicho fractal de forma recursiva en lenguaje C, utilizaremos la Misma estructura del fractal de Koch (PUNTO) y la misma función que imprime los puntos(Segmento).
//
// main.c
//
//
// Created by Andrés Peña on 16/11/17.
// Copyright © 2017 Andrés Peña. All rights reserved.
// Universidad Autónoma Metropolitana
// Unidad Cuajimalpa
#include <math.h>
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
----------------------------------------------------------------
typedef struct
{
double x, y,angulo;;
} PUNTO;
----------------------------------------------------------------
void segmento(PUNTO *p1, PUNTO *p2)
{
printf("%lf %lf\n", p1->x, p1->y);
printf("%lf %lf\n\n", p2->x, p2->y);
return;
}
----------------------------------------------------------------
void Sierpinski_triangulo(PUNTO *a,PUNTO *b, PUNTO *c,int level){
void Sierpinski_triangulo(PUNTO *a,PUNTO *b, PUNTO *c,int level){
PUNTO pm1,pm2,pm3;
if (level==0) {
segmento(a,b);
segmento(b,c);
segmento(a,c);
return;
}else if (level>0)
pm1.x = (a->x + b->x) / 2;
pm1.y = (a->y + b->y) / 2;
pm2.x = (a->x + c->x) / 2;
pm2.y = (a->y + c->y) / 2;
pm3.x = (b->x + c->x) / 2;
pm3.y = (b->y + c->y) / 2;
Sierpinski_triangulo(a, &pm1, &pm2, level-1);
Sierpinski_triangulo(&pm1, b, &pm3, level-1);
Sierpinski_triangulo(&pm2, &pm3, c, level-1);
Sierpinski_triangulo(a, &pm2, c, level-1);
}
----------------------------------------------------------------
// Para llamarla en Main, sería de la siguiente forma:
----------------------------------------------------------------
int main(){
PUNTO p1, p2,p3,p4,p5;
p1.x = 4.0;
p2.x = 2.0;
p1.y = 1.0;
p2.y = 1.0;
p3.x=3.0;
p3.y=3.0;
Sierpinski_triangulo(&p1,&p2,&p3,2);
}
----------------------------------------------------------------
----------------------------------------------------------------
// De igual manera, se recomienda utilizar Gnuplot y guardar lo que lo que corra el programa en un archivo temporal.
Éste es el Fractal de Sierpinski generado en Gnuplot:

No hay comentarios.:
Publicar un comentario