Outils pour utilisateurs

Outils du site


outilsit:fablab:laser:lol

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
outilsit:fablab:laser:lol [2022/02/08 23:09]
vanlindtmarc [divide(a,b,c)]
outilsit:fablab:laser:lol [2022/02/09 02:27] (Version actuelle)
vanlindtmarc
Ligne 64: Ligne 64:
 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>
  
Ligne 237: Ligne 259:
 ---- ----
  
-==== addpoints(c1,c2,n) ====+==== addpoints(a,b,n) ====
 **Attention** : pour les besoins que j'en ai eu, cette fonction ne "ferme" pas la forme et seul le premier point est inclus, non le dernier! **Attention** : pour les besoins que j'en ai eu, cette fonction ne "ferme" pas la forme et seul le premier point est inclus, non le dernier!
 <code> <code>
Ligne 438: Ligne 460:
 def=fractalize(abc,force=1,maxit=4); def=fractalize(abc,force=1,maxit=4);
 ghi=chaincurve(def); ghi=chaincurve(def);
-polygon(def); +2D(def); 
-translate([55,0,0]) polygon(ghi);+translate([55,0,0]) 2D(ghi);
 </code> </code>
  
Ligne 458: Ligne 480:
 ---- ----
  
 +==== interpolate(a,b,step,maxstep,correct,q) ====
 +{{ :outilsit:fablab:openscad:lolscad:2022-02-08_22_40_03-lol2022-wip.scad_-_openscad.png?400|}}
 +<code>
 +abc=square([10,10],center=true);
 +def=circle(d=10,fn=7);
 +ghi=interpolate(abc,def,step=0,maxstep=1,correct=0,q=1);
 +jkl=interpolate(abc,def,step=1,maxstep=1,correct=0,q=1);
 +echo(len(abc));
 +echo(len(def));
 +echo(len(ghi));
 +echo(len(jkl));
 +trace(abc,dot=true,d=0.3);
 +translate([15,0,0]) trace(def,dot=true,d=0.3);
 +translate([0,-15,0]) trace(ghi,dot=true,d=0.3);
 +translate([15,-15,0]) trace(jkl,dot=true,d=0.3);
 +
 +->ECHO: 5
 +ECHO: 8
 +ECHO: 29
 +ECHO: 29
 +</code>
 +<code>
 +function interpolate(a,b,step,maxstep,correct,q)= let(
 +pp=ppcm(len(a)-1,len(b)-1,q)-[1,1],
 +correct=correct==undef?0:correct,
 +abc=vectranslate(multiplyfaces(a,pp[0]),n=correct==undef?0:correct),
 +  def=multiplyfaces(b,pp[1]),
 +  aa=[for(i=[0:len(def)]) each [divide(abc[i],def[i],step/(maxstep))]])
 +  (aa);
 +</code>
 +
 +----
 +
 +==== multiplyfaces(object,n) ====
 +{{ :outilsit:fablab:openscad:lolscad:2022-02-08_22_51_37-lol2022-wip.scad_-_openscad.png?400|}}
 +<code>
 +abc=square([10,10],center=true);
 +echo(len(abc));
 +for(i=[1:4]){
 +def=multiplyfaces(abc,i);
 +echo(len(def));
 +translate([12*(i-1),0,0]) trace(def,d=0.3);
 +}
 +
 +->ECHO: 5
 +ECHO: 9
 +ECHO: 13
 +ECHO: 17
 +ECHO: 21
 +</code>
 +<code>
 +function multiplyfaces(object,n)=let(
 +n=n==undef?1:n==0?0:n,
 +aa=n==0?object:[for(i=[0:len(object)-2]) each 
 +addpoints(object[i],object[i+1],n)
 +])
 +concat(clean(aa),[object[0]]);
 +</code>
  
 ===== Primitives 2D ===== ===== Primitives 2D =====
Ligne 474: Ligne 554:
 abc = square([10,20],center=true); abc = square([10,20],center=true);
 square([10,20],center=true); square([10,20],center=true);
-translate ([12,0,0]) polygon(abc);+translate ([12,0,0]) 2D(abc);
 </code> </code>
  
Ligne 500: Ligne 580:
 def = circle(r=5,fn=8); def = circle(r=5,fn=8);
 circle(d=10,$fn=24); circle(d=10,$fn=24);
-translate ([12,0,0]) polygon(abc); +translate ([12,0,0]) 2D(abc); 
-translate ([24,0,0]) polygon(def);+translate ([24,0,0]) 2D(def);
 </code> </code>
  
Ligne 522: Ligne 602:
 abc = ellipse([40,20],fn=12); abc = ellipse([40,20],fn=12);
 ellipse([20,40],fn=24);; ellipse([20,40],fn=24);;
-translate ([40,0,0]) polygon(abc);+translate ([40,0,0]) 2D(abc);
 </code> </code>
  
Ligne 543: Ligne 623:
 abc = star(d1=40,d2=10,fn=12); abc = star(d1=40,d2=10,fn=12);
 star(d1=40,d2=30,fn=9); star(d1=40,d2=30,fn=9);
-translate ([40,0,0]) polygon(abc);+translate ([40,0,0]) 2D(abc);
 </code> </code>
  
Ligne 565: Ligne 645:
 abc = roundsquare([15,25],[10,2.5,2.5,10]); abc = roundsquare([15,25],[10,2.5,2.5,10]);
 roundsquare([20,10],[1,8,8,1]); roundsquare([20,10],[1,8,8,1]);
-translate ([22,0,0]) polygon(abc);+translate ([22,0,0]) 2D(abc);
 </code> </code>
  
Ligne 603: Ligne 683:
 abc = triangle(10,20); abc = triangle(10,20);
 triangle(20,10); triangle(20,10);
-translate ([17.55,0,0]) polygon(abc);+translate ([17.55,0,0]) 2D(abc);
 </code> </code>
  
Ligne 625: Ligne 705:
 abc=piepart(d=50,p=16/100); abc=piepart(d=50,p=16/100);
 piepart(d=50,a=60); piepart(d=50,a=60);
-translate([30,0,0]) polygon(abc);+translate([30,0,0]) 2D(abc);
 </code> </code>
  
Ligne 648: Ligne 728:
 def=teardrop(25,15,4); def=teardrop(25,15,4);
 teardrop(25,30,24); teardrop(25,30,24);
-translate([30,0,0]) polygon(abc); +translate([30,0,0]) 2D(abc); 
-translate([60,0,0]) polygon(def);+translate([60,0,0]) 2D(def);
 </code> </code>
  
Ligne 674: Ligne 754:
 def=ngon(20,4,inside=false); def=ngon(20,4,inside=false);
 ngon(20,16); ngon(20,16);
-translate([25,0,0]) polygon(abc); +translate([25,0,0]) 2D(abc); 
-translate([50,0,0]) polygon(def);+translate([50,0,0]) 2D(def);
 translate([25,0,-1]) #circle(d=20); translate([25,0,-1]) #circle(d=20);
 translate([50,0,1]) #circle(d=20); translate([50,0,1]) #circle(d=20);
Ligne 698: Ligne 778:
 abc=losange([10,20]); abc=losange([10,20]);
 losange([20,10]); losange([20,10]);
-translate([20,0,0]) polygon(abc);+translate([20,0,0]) 2D(abc);
 </code> </code>
  
Ligne 722: Ligne 802:
 translate([50,0,0]) fractshape(d=40,fn=3,it=3,inside=false); translate([50,0,0]) fractshape(d=40,fn=3,it=3,inside=false);
  
-translate([0,50,0]) polygon(abc); +translate([0,50,0]) 2D(abc); 
-translate([50,50,0]) polygon(def);+translate([50,50,0]) 2D(def);
 </code> </code>
  
Ligne 739: Ligne 819:
  
 ---- ----
 +
 +===== Primitives 3D =====
 +
 +==== cube(d,center) ====
 +{{ :outilsit:fablab:openscad:lolscad:2022-02-08_23_38_26-lol2022-wip.scad_-_openscad.png?400|}}
 +<code>
 +abc=cube([10,20,30],center=true);
 +echo(abc);
 +3D(abc);
 +</code>
 +<code>
 +function cube(d,center)=let
 +  (
 +    d=d==undef?[10,10,10]:d,
 +    center=center==undef?false:center,
 +    mys=square([d[0],d[1]],center=center),
 +    aa=to3D(mys,mys,h=d[2])
 +  )
 +  center==false?aa:translate3D(aa,[0,0,-d[2]/2]);
 +</code>
 +
 +----
 +==== cylinder(d,d1,d2,h,fn,center) ====
 +{{ :outilsit:fablab:openscad:lolscad:2022-02-08_23_43_36-lol2022-wip.scad_-_openscad.png?400|}}
 +<code>
 +abc=cylinder(d1=20,d2=0,h=50,fn=16);
 +def=cylinder(d=20,h=50,fn=64,center=true);
 +3D(abc);
 +translate([25,0,0]) 3D(def);
 +</code>
 +<code>
 +function cylinder(d,d1,d2,h,fn,center)=let
 +  (
 +    d1=d==undef?d1==undef?10:d1:d,
 +    d2=d==undef?d2==undef?10:d2:d,
 +    h=h==undef?40:h,
 +    fn=fn==undef?16:fn,
 +    center=center==undef?false:center,
 +    myg1=ngon(d=d1,fn=fn),
 +    myg2=ngon(d=d2,fn=fn),
 +    aa=to3D(myg1,myg2,h=h)
 +  )
 +  center==false?aa:translate3D(aa,[0,0,-h/2]);
 +</code>
  
 ===== Divers ===== ===== Divers =====
Ligne 781: Ligne 905:
 aa; aa;
 </code> </code>
 +
 +----
 +
 +==== RVB(a,b,c,d) ====
 +{{ :outilsit:fablab:openscad:lolscad:2022-02-09_00_03_38-lol2022-wip.scad_-_openscad.png?400|}}
 +<code>
 +color(RVB(192,64,128)) cube();
 +translate([1.1,0,0]) color(RVB(12,64,255,128)) cube();
 +translate([2.2,0,0]) color(RVB(255,255,0,64)) cube();
 +</code>
 +<code>
 +function RVB(a,b,c,d)= let( a=a==undef?0.5:1/255*a,
 +b=b==undef?0.5:1/255*b,
 +c=c==undef?0.5:1/255*c,
 +d=d==undef?1:1/255*d,
 +aa=[a,b,c,d]
 +)aa;
 +</code>
 +
  
 ---- ----
Ligne 867: Ligne 1010:
 } }
 </code> </code>
 +
 +----
 +
 +==== outline(w,t) ====
 +
 +<code>
 +abc=square([50,50],center=true);
 +
 +#translate([0,0,2]) 2D(abc);
 +outline(w=3) 2D(abc);
 +
 +#translate([55,0,2]) 2D(abc);
 +translate([55,0,0]) outline(w=3,t="in") 2D(abc);
 +
 +#translate([110,0,2]) 2D(abc);
 +translate([110,0,0]) outline(w=3,t="out") 2D(abc);
 +</code>
 +<code>
 +module outline                (w,t){ 
 +  w=w==undef?1:w;
 +  t=t==undef?"on":t;
 +  difference()
 +  {    
 +    offset(t=="out"?w:t=="in"?0:w/2)
 +    children();
 +    offset(t=="out"?0:t=="in"?-w:-w/2)
 +    children();
 +  }
 +}
 +</code>
 +
  
 ---- ----
Ligne 1040: Ligne 1214:
 } }
 </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(it=1,d,maxit){
 +    if (it==maxit){
 +        cube([d,d,d],center=true);
 +    }
 +    if (it<=maxit){
 +        union(){
 +        for (i=[-1:1]){
 +            translate([d/3,d/3,d/3*i]) rotate([0,90,0]) menger3d(it=it+1,d=d*1/3,maxit=maxit);
 +            translate([-d/3,d/3,d/3*i]) rotate([0,90,0]) menger3d(it=it+1,d=d*1/3,maxit=maxit);
 +            }
 +            
 +        translate([0,d/3,d/3]) rotate([0,90,0]) menger3d(it=it+1,d=d*1/3,maxit=maxit);
 +        translate([0,d/3,-d/3]) rotate([0,90,0]) menger3d(it=it+1,d=d*1/3,maxit=maxit);
 +
 +        for (i=[-1:1]){
 +            translate([d/3,-d/3,d/3*i]) rotate([0,90,0]) menger3d(it=it+1,d=d*1/3,maxit=maxit);
 +            translate([-d/3,-d/3,d/3*i]) rotate([0,90,0]) menger3d(it=it+1,d=d*1/3,maxit=maxit);
 +            }
 +        translate([0,-d/3,d/3]) rotate([0,90,0]) menger3d(it=it+1,d=d*1/3,maxit=maxit);
 +        translate([0,-d/3,-d/3]) rotate([0,90,0]) menger3d(it=it+1,d=d*1/3,maxit=maxit);
 +        translate([d/3,0,d/3]) rotate([0,90,0]) menger3d(it=it+1,d=d*1/3,maxit=maxit);
 +        translate([d/3,0,-d/3]) rotate([0,90,0]) menger3d(it=it+1,d=d*1/3,maxit=maxit);
 +        translate([-d/3,0,d/3]) rotate([0,90,0]) menger3d(it=it+1,d=d*1/3,maxit=maxit);
 +        translate([-d/3,0,-d/3]) rotate([0,90,0]) menger3d(it=it+1,d=d*1/3,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 =====
Ligne 1314: Ligne 1565:
  
 ---- ----
-==== interpolate(a,b,step,maxstep,correct,q) ==== + 
-{{ :outilsit:fablab:openscad:lolscad:2022-02-08_22_40_03-lol2022-wip.scad_-_openscad.png?400|}}+==== mirror(a,x,y) ==== 
 +{{ :outilsit:fablab:openscad:lolscad:2022-02-09_00_18_42-lol2022-wip.scad_-_openscad.png?400|}}
 <code> <code>
-abc=square([10,10],center=true)+abc=chaincurve(center(LetterL),3); 
-def=circle(d=10,fn=7); +2D(abc); 
-ghi=interpolate(abc,def,step=0,maxstep=1,correct=0,q=1); +translate([60,0,0]2D(mirror(abc,x=true)); 
-jkl=interpolate(abc,def,step=1,maxstep=1,correct=0,q=1)+translate([0,-80,0]) 2D(mirror(abc,y=true)); 
-echo(len(abc)); +translate([60,-80,0]) 2D(mirror(abc,x=true,y=true)); 
-echo(len(def)); +</code> 
-echo(len(ghi)); +<code> 
-echo(len(jkl)); +function mirror(a,x,y)=let( 
-trace(abc,dot=true,d=0.3); +  xx=x==undef?1:x==true?-1:1, 
-translate([15,0,0]) trace(def,dot=true,d=0.3); +  yy=y==undef?1:y==true?-1:1, 
-translate([0,-15,0]) trace(ghi,dot=true,d=0.3); +  aa=
-translate([15,-15,0]trace(jkl,dot=true,d=0.3);+    for(i=[0:len(a)-1]) 
 +      each 
 +      [ 
 +        [a[i][0]*xx,a[i][1]*yy] 
 +      ] 
 +  ] 
 +)aa; 
 +</code>
  
-->ECHO: 5 +---- 
-ECHO: 8 + 
-ECHO: 29 +==== translate3D(a,b) & rescale3D(a,b) ==== 
-ECHO29+{{ :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>
 <code> <code>
-function interpolate(a,b,step,maxstep,correct,q)= let( +function translate3D(a,b)=[[for(i=[0:len(a[0])-1]) a[0][i]+b],a[1]]; 
-pp=ppcm(len(a)-1,len(b)-1,q)-[1,1], +function rescale3D(a,s)=  [[for(i=[0:len(a[0])-1]) a[0][i]*s],a[1]];
-correct=correct==undef?0:correct, +
-abc=vectranslate(multiplyfaces(a,pp[0]),n=correct==undef?0:correct), +
-  def=multiplyfaces(b,pp[1]), +
-  aa=[for(i=[0:len(def)]) each [divide(abc[i],def[i],step/(maxstep))]]) +
-  (aa);+
 </code> </code>
  
 ---- ----
  
-==== multiplyfaces(object,n) ==== +==== skew(XY,XZ,YX,YZ,ZX,ZY) ==== 
-{{ :outilsit:fablab:openscad:lolscad:2022-02-08_22_51_37-lol2022-wip.scad_-_openscad.png?400|}}+{{ :outilsit:fablab:openscad:lolscad:2022-02-09_02_26_38-lol2022-wip.scad_-_openscad.png?400|}}
 <code> <code>
-abc=square([10,10],center=true); +skew(XY=0.5) cube([25,25,25],center=true); 
-echo(len(abc)); +translate([50,0,0]) skew(XZ=0.5cube([25,25,25],center=true); 
-for(i=[1:4])+translate([0,-50,0]) skew(YX=0.5) cube([25,25,25],center=true); 
-def=multiplyfaces(abc,i); +translate([50,-50,0]) skew(YZ=0.5cube([25,25,25],center=true); 
-echo(len(def)); +translate([0,-100,0]) skew(ZX=0.5) cube([25,25,25],center=true); 
-translate([12*(i-1),0,0]) trace(def,d=0.3); +translate([50,-100,0]) skew(ZY=0.5) cube([25,25,25],center=true);
-+
- +
-->ECHO: 5 +
-ECHO: 9 +
-ECHO: 13 +
-ECHO: 17 +
-ECHO: 21+
 </code> </code>
 <code> <code>
-function multiplyfaces(object,n)=let( +module skew(XY,XZ,YX,YZ,ZX,ZY){   
-n=n==undef?1:n==0?0:n, +  matrice=[  
-aa=n==0?object:[for(i=[0:len(object)-2]) each  +    [1,XY,XZ,0], //[redimX, skewXY, skewXZ,translateX
-addpoints(object[i],object[i+1],n) +    [YX,1,YZ,0], //[SkewYX,RedimY,SkewYZ,translateY] 
-]) +    [ZX,ZY,1,0//[SkewZXSkewZY,redimZ,TranslateZ] 
-concat(clean(aa),[object[0]]);+  ];  
 +  multmatrix(matrice){ 
 +    children(); 
 +  } 
 +}
 </code> </code>
  
Ligne 1382: Ligne 1638:
 def=chaincurve(koch(abc,maxit=2)); def=chaincurve(koch(abc,maxit=2));
 my3Dobject=simple3D(abc,def,h=70); my3Dobject=simple3D(abc,def,h=70);
-polyhedron(my3Dobject[0],my3Dobject[1]);+3D(my3Dobject);
 </code> </code>
 <code> <code>
outilsit/fablab/laser/lol.1644358142.txt.gz · Dernière modification: 2022/02/08 23:09 de vanlindtmarc