Está en la página 1de 2

#include "miniwin.

h"

void triangle(float x, float y, float x2, float y2, float x3, float y3) {
miniwin::linea(x, y, x2, y2);
miniwin::linea(x2, y2, x3, y3);
miniwin::linea(x3, y3, x, y);
}

void sierpinski(int depth, float x, float y, float x2, float y2, float x3, float
y3) {
if(depth <= 0) {
triangle(x,y,x2,y2,x3,y3);
} else {
sierpinski(depth-1, x, y, (x+x2)/2, (y+y2)/2, (x+x3)/2, (y+y3)/2);
sierpinski(depth-1, (x2+x)/2, (y2+y)/2, x2, y2, (x2+x3)/2, (y2+y3)/2);
sierpinski(depth-1, (x3+x)/2, (y3+y)/2, (x3+x2)/2, (y3+y2)/2, x3, y3);
}
}

void staticimg() {
int x = 250;
float size = 460;
miniwin::vredimensiona(500, 500);
sierpinski(9, x, 20, x-size/2, 20+size*0.86602, x+size/2, 20+size*0.86602);
miniwin::refresca();
miniwin::espera(400);
}

void sequence() {
int x = 250;
float size = 460;
miniwin::vredimensiona(500, 500);
for (int i = 0; ; i=(i+1)%10) {
miniwin::borra();
// sqrt(pow(1,2) - pow(0.5, 2)) == 0.8660254037844386

sierpinski(i, x, 20, x-size/2, 20+size*0.86602, x+size/2, 20+size*0.86602);


miniwin::refresca();
miniwin::espera(400);
}
}

void zoom() {
int x = 250;
float size = 60;
float zoom = 1.01;
miniwin::vredimensiona(500, 500);
while(true) {
miniwin::borra();
size *= zoom;
//triangle(x+100, 20, x, 200, x+200, 200);
// math.sqrt(1**2 - .5**2) == 0.8660254037844386

sierpinski(9, x, 20, x-size/2, 20+size*0.86602, x+size/2, 20+size*0.86602);


miniwin::refresca();
miniwin::espera(20);
if(size > 2000) {
size /= 2;
}
}
}

int main()
{
staticimg(); // comment me
//sequence(); // uncomment me
//zoom();
return 0;

También podría gustarte