domingo, 4 de febrero de 2018

Fractal de Sierpinski-Triángulo

Este Fractal, es llamado el fractal de Sierpinski-Triángulo.

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){
    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

Fractal de Sierpinski-Triángulo

Este Fractal, es llamado el fractal de Sierpinski-Triángulo. El siguiente vínculo explica que es dicho fractal: http://www.dmae.upm.es/c...