Discussion:Objets récursif

De Centre de Ressources Numériques - Labomedia
Aller à : navigation, rechercher

/* Menger.scad

size = 99; //side length

level = 4; //menger level

intersection(){

rotate([0,0,0])translate([-size/2,-size/2,-size/2])singleSide();

rotate([0,90,0])translate([-size/2,-size/2,-size/2])singleSide();

rotate([0,0,90])translate([-size/2,-size/2,-size/2])singleSide();

}

module singleSide(){

difference(){

cube(size);

for(i=[1:level]){

for(j=[0:pow(3,i)-1]){

for(k=[0:pow(3,i)]){

translate([-size/2,j*size/pow(3,i),k*size/pow(3,i)]){

//echo(round((j+2)/3)==(j+2)/3);

//echo((j+2)/3);

if(round((j+2)/3)==(j+2)/3){

if(round((k+2)/3)==(k+2)/3){

cube([2*size,size/pow(3,i),size/pow(3,i)]);

}}}}}}}}


putain c'est fort :pow
-> L'implémentation est bien plus classe que la mienne, c'est clair. Je suis curieux de voir ce que ça donne niveau performance, je vais tester.


oublie pas de couper l’éponge pour voir les étoiles


Surtout que si tu fais une coupe du genre https://fr.wikipedia.org/wiki/%C3%89ponge_de_Menger#/media/File:Menger4_Coupe.jpg tu peu virer des récursions et faciliter le calcul? ça va commencer a devenir sioux mais c'est à approfondir. :)