Discussion:Objets récursif

De Centre de Ressources Numériques - Labomedia
Révision de 18 juillet 2017 à 09:44 par Bjorn (discussion | contributions)

(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
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. :)