Les deux révisions précédentes
Révision précédente
Prochaine révision
|
Révision précédente
Prochaine révision
Les deux révisions suivantes
|
outilsit:fablab:laser:lol [2022/02/09 00:04] vanlindtmarc [gradient (a,b,c)] |
outilsit:fablab:laser:lol [2022/02/09 01:22] vanlindtmarc [menger3D(d,maxit)] |
pi = 3.141592654; | pi = 3.141592654; |
tau = pi*2; | tau = pi*2; |
| </code> |
| |
| ---- |
| ===== Fonctions de base ===== |
| |
| ==== 2D(a) et 3D(a) ==== |
| {{ :outilsit:fablab:openscad:lolscad:2022-02-09_00_08_39-lol2022-wip.scad_-_openscad.png?400|}} |
| <code>abc=square(); |
| def=cube(); |
| 2D(abc); |
| translate([11,0,0]) 3D(def); |
| </code> |
| <code> |
| module 2D(a){ |
| polygon(a); |
| } |
| module 3D(a){ |
| if(a[1]!=undef) |
| { |
| polyhedron(a[0],a[1]); |
| } |
| } |
</code> | </code> |
| |
} | } |
</code> | </code> |
| |
| ---- |
| ==== menger3D(d,maxit) ==== |
| {{ :outilsit:fablab:openscad:lolscad:2022-02-09_00_52_31-lol2022-wip.scad_-_openscad.png?400|}} |
| Attention, la prévisualisation amène des erreurs d'affichage. Mais le résultat final est bon. |
| <code> |
| menger3D(d=100,maxit=3); |
| </code> |
| <code> |
| module menger3D(d,maxit){ |
| intersection(){ |
| translate([-d/2,-d/2,-d]) linear_extrude(d*2) menger(d=d,maxit=maxit); |
| rotate([90,0,0]) |
| translate([-d/2,-d/2,-d]) linear_extrude(d*2) menger(d=d,maxit=maxit); |
| rotate([90,0,90]) |
| translate([-d/2,-d/2,-d]) linear_extrude(d*2) menger(d=d,maxit=maxit); |
| } |
| } |
| </code> |
| |
| ---- |
| ==== jcube(d,maxit) ==== |
| {{ :outilsit:fablab:openscad:lolscad:2022-02-09_01_18_16-lol2022-wip.scad_-_openscad.png?400|}} |
| <code> |
| jcube(d=100,maxit=4); |
| </code> |
| <code> |
| module jcube(it,d,maxit){ |
| it=it==undef?1:it; |
| union() |
| { |
| if(it==maxit) |
| { |
| cube([d,d,d],center=true); |
| } |
| if(it<=maxit) |
| { |
| translate([d/2,d/2,d/2]) translate([-d/2*(sqrt(2)-1),-d/2*(sqrt(2)-1),-d/2*(sqrt(2)-1)]) jcube(it=it+1,maxit=maxit,d=d*(sqrt(2)-1)); |
| translate([-d/2,d/2,d/2]) translate([d/2*(sqrt(2)-1),-d/2*(sqrt(2)-1),-d/2*(sqrt(2)-1)]) jcube(it=it+1,maxit=maxit,d=d*(sqrt(2)-1)); |
| translate([d/2,-d/2,d/2]) translate([-d/2*(sqrt(2)-1),d/2*(sqrt(2)-1),-d/2*(sqrt(2)-1)]) jcube(it=it+1,maxit=maxit,d=d*(sqrt(2)-1)); |
| translate([-d/2,-d/2,d/2]) translate([d/2*(sqrt(2)-1),d/2*(sqrt(2)-1),-d/2*(sqrt(2)-1)]) jcube(it=it+1,maxit=maxit,d=d*(sqrt(2)-1)); |
| translate([d/2,d/2,-d/2]) translate([-d/2*(sqrt(2)-1),-d/2*(sqrt(2)-1),d/2*(sqrt(2)-1)]) jcube(it=it+1,maxit=maxit,d=d*(sqrt(2)-1)); |
| translate([-d/2,d/2,-d/2]) translate([d/2*(sqrt(2)-1),-d/2*(sqrt(2)-1),d/2*(sqrt(2)-1)]) jcube(it=it+1,maxit=maxit,d=d*(sqrt(2)-1)); |
| translate([d/2,-d/2,-d/2]) translate([-d/2*(sqrt(2)-1),d/2*(sqrt(2)-1),d/2*(sqrt(2)-1)]) jcube(it=it+1,maxit=maxit,d=d*(sqrt(2)-1)); |
| translate([-d/2,-d/2,-d/2]) translate([d/2*(sqrt(2)-1),d/2*(sqrt(2)-1),d/2*(sqrt(2)-1)]) jcube(it=it+1,maxit=maxit,d=d*(sqrt(2)-1)); |
| translate([-d/2,-d/2,0]) translate([d/2*(1-(2*(sqrt(2)-1))),d/2*(1-(2*(sqrt(2)-1))),0]) jcube(it=it+1,maxit=maxit,d=d*(1-(2*(sqrt(2)-1)))); |
| translate([-d/2,d/2,0]) translate([d/2*(1-(2*(sqrt(2)-1))),-d/2*(1-(2*(sqrt(2)-1))),0]) jcube(it=it+1,maxit=maxit,d=d*(1-(2*(sqrt(2)-1)))); |
| translate([d/2,-d/2,0]) translate([-d/2*(1-(2*(sqrt(2)-1))),d/2*(1-(2*(sqrt(2)-1))),0]) jcube(it=it+1,maxit=maxit,d=d*(1-(2*(sqrt(2)-1)))); |
| translate([d/2,d/2,0]) translate([-d/2*(1-(2*(sqrt(2)-1))),-d/2*(1-(2*(sqrt(2)-1))),0]) jcube(it=it+1,maxit=maxit,d=d*(1-(2*(sqrt(2)-1)))); |
| translate([-d/2,0,-d/2]) translate([d/2*(1-(2*(sqrt(2)-1))),0,d/2*(1-(2*(sqrt(2)-1)))]) jcube(it=it+1,maxit=maxit,d=d*(1-(2*(sqrt(2)-1)))); |
| translate([-d/2,0,d/2]) translate([d/2*(1-(2*(sqrt(2)-1))),0,-d/2*(1-(2*(sqrt(2)-1)))]) jcube(it=it+1,maxit=maxit,d=d*(1-(2*(sqrt(2)-1)))); |
| translate([d/2,0,-d/2]) translate([-d/2*(1-(2*(sqrt(2)-1))),0,d/2*(1-(2*(sqrt(2)-1)))]) jcube(it=it+1,maxit=maxit,d=d*(1-(2*(sqrt(2)-1)))); |
| translate([d/2,0,d/2]) translate([-d/2*(1-(2*(sqrt(2)-1))),0,-d/2*(1-(2*(sqrt(2)-1)))]) jcube(it=it+1,maxit=maxit,d=d*(1-(2*(sqrt(2)-1)))); |
| translate([0,-d/2,-d/2]) translate([0,d/2*(1-(2*(sqrt(2)-1))),d/2*(1-(2*(sqrt(2)-1)))]) jcube(it=it+1,maxit=maxit,d=d*(1-(2*(sqrt(2)-1)))); |
| translate([0,-d/2,d/2]) translate([0,d/2*(1-(2*(sqrt(2)-1))),-d/2*(1-(2*(sqrt(2)-1)))]) jcube(it=it+1,maxit=maxit,d=d*(1-(2*(sqrt(2)-1)))); |
| translate([0,d/2,-d/2]) translate([0,-d/2*(1-(2*(sqrt(2)-1))),d/2*(1-(2*(sqrt(2)-1)))]) jcube(it=it+1,maxit=maxit,d=d*(1-(2*(sqrt(2)-1)))); |
| translate([0,d/2,d/2]) translate([0,-d/2*(1-(2*(sqrt(2)-1))),-d/2*(1-(2*(sqrt(2)-1)))]) jcube(it=it+1,maxit=maxit,d=d*(1-(2*(sqrt(2)-1)))); |
| }}} |
| </code> |
| |
| ---- |
| |
===== Modificateurs formes 2D et 3D ===== | ===== Modificateurs formes 2D et 3D ===== |
} | } |
} | } |
| </code> |
| |
| ---- |
| |
| ==== mirror(a,x,y) ==== |
| {{ :outilsit:fablab:openscad:lolscad:2022-02-09_00_18_42-lol2022-wip.scad_-_openscad.png?400|}} |
| <code> |
| abc=chaincurve(center(LetterL),3); |
| 2D(abc); |
| translate([60,0,0]) 2D(mirror(abc,x=true)); |
| translate([0,-80,0]) 2D(mirror(abc,y=true)); |
| translate([60,-80,0]) 2D(mirror(abc,x=true,y=true)); |
| </code> |
| <code> |
| function mirror(a,x,y)=let( |
| xx=x==undef?1:x==true?-1:1, |
| yy=y==undef?1:y==true?-1:1, |
| aa=[ |
| for(i=[0:len(a)-1]) |
| each |
| [ |
| [a[i][0]*xx,a[i][1]*yy] |
| ] |
| ] |
| )aa; |
| </code> |
| |
| ---- |
| |
| ==== translate3D(a,b) & rescale3D(a,b) ==== |
| {{ :outilsit:fablab:openscad:lolscad:2022-02-09_00_38_15-lol2022-wip.scad_-_openscad.png?400|}} |
| <code> |
| abc=cube([10,10,10],center=true); |
| def=translate3D(rescale3D(abc,2),[10,20,30]); |
| 3D(abc); |
| 3D(def); |
| </code> |
| <code> |
| function translate3D(a,b)=[[for(i=[0:len(a[0])-1]) a[0][i]+b],a[1]]; |
| function rescale3D(a,s)= [[for(i=[0:len(a[0])-1]) a[0][i]*s],a[1]]; |
</code> | </code> |
| |