Ci-dessous, les différences entre deux révisions de la page.
| 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 22:52] vanlindtmarc |
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; | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | ===== Fonctions de base ===== | ||
| + | |||
| + | ==== 2D(a) et 3D(a) ==== | ||
| + | {{ : | ||
| + | < | ||
| + | def=cube(); | ||
| + | 2D(abc); | ||
| + | translate([11, | ||
| + | </ | ||
| + | < | ||
| + | module 2D(a){ | ||
| + | polygon(a); | ||
| + | } | ||
| + | module 3D(a){ | ||
| + | if(a[1]!=undef) | ||
| + | { | ||
| + | polyhedron(a[0], | ||
| + | } | ||
| + | } | ||
| </ | </ | ||
| Ligne 237: | Ligne 259: | ||
| ---- | ---- | ||
| + | ==== addpoints(a, | ||
| + | **Attention** : pour les besoins que j'en ai eu, cette fonction ne " | ||
| + | < | ||
| + | abc=[50, | ||
| + | def=[100, | ||
| + | jkl=addpoints(abc, | ||
| + | echo(jkl); | ||
| + | |||
| + | -> ECHO: [[50, 50], [58.3333, 58.3333], [66.6667, 66.6667], [75, 75], [83.3333, 83.3333], [91.6667, 91.6667]] | ||
| + | </ | ||
| + | < | ||
| + | function addpoints(c1, | ||
| + | </ | ||
| ==== myangle(a, | ==== myangle(a, | ||
| Ligne 425: | Ligne 460: | ||
| def=fractalize(abc, | def=fractalize(abc, | ||
| ghi=chaincurve(def); | ghi=chaincurve(def); | ||
| - | polygon(def); | + | 2D(def); |
| - | translate([55, | + | translate([55, |
| </ | </ | ||
| Ligne 445: | Ligne 480: | ||
| ---- | ---- | ||
| + | ==== interpolate(a, | ||
| + | {{ : | ||
| + | < | ||
| + | abc=square([10, | ||
| + | def=circle(d=10, | ||
| + | ghi=interpolate(abc, | ||
| + | jkl=interpolate(abc, | ||
| + | echo(len(abc)); | ||
| + | echo(len(def)); | ||
| + | echo(len(ghi)); | ||
| + | echo(len(jkl)); | ||
| + | trace(abc, | ||
| + | translate([15, | ||
| + | translate([0, | ||
| + | translate([15, | ||
| + | |||
| + | ->ECHO: 5 | ||
| + | ECHO: 8 | ||
| + | ECHO: 29 | ||
| + | ECHO: 29 | ||
| + | </ | ||
| + | < | ||
| + | function interpolate(a, | ||
| + | pp=ppcm(len(a)-1, | ||
| + | correct=correct==undef? | ||
| + | abc=vectranslate(multiplyfaces(a, | ||
| + | def=multiplyfaces(b, | ||
| + | aa=[for(i=[0: | ||
| + | (aa); | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ==== multiplyfaces(object, | ||
| + | {{ : | ||
| + | < | ||
| + | abc=square([10, | ||
| + | echo(len(abc)); | ||
| + | for(i=[1: | ||
| + | def=multiplyfaces(abc, | ||
| + | echo(len(def)); | ||
| + | translate([12*(i-1), | ||
| + | } | ||
| + | |||
| + | ->ECHO: 5 | ||
| + | ECHO: 9 | ||
| + | ECHO: 13 | ||
| + | ECHO: 17 | ||
| + | ECHO: 21 | ||
| + | </ | ||
| + | < | ||
| + | function multiplyfaces(object, | ||
| + | n=n==undef? | ||
| + | aa=n==0? | ||
| + | addpoints(object[i], | ||
| + | ]) | ||
| + | concat(clean(aa), | ||
| + | </ | ||
| ===== Primitives 2D ===== | ===== Primitives 2D ===== | ||
| Ligne 461: | Ligne 554: | ||
| abc = square([10, | abc = square([10, | ||
| square([10, | square([10, | ||
| - | translate ([12, | + | translate ([12, |
| </ | </ | ||
| Ligne 487: | Ligne 580: | ||
| def = circle(r=5, | def = circle(r=5, | ||
| circle(d=10, | circle(d=10, | ||
| - | translate ([12, | + | translate ([12, |
| - | translate ([24, | + | translate ([24, |
| </ | </ | ||
| Ligne 509: | Ligne 602: | ||
| abc = ellipse([40, | abc = ellipse([40, | ||
| ellipse([20, | ellipse([20, | ||
| - | translate ([40, | + | translate ([40, |
| </ | </ | ||
| Ligne 530: | Ligne 623: | ||
| abc = star(d1=40, | abc = star(d1=40, | ||
| star(d1=40, | star(d1=40, | ||
| - | translate ([40, | + | translate ([40, |
| </ | </ | ||
| Ligne 552: | Ligne 645: | ||
| abc = roundsquare([15, | abc = roundsquare([15, | ||
| roundsquare([20, | roundsquare([20, | ||
| - | translate ([22, | + | translate ([22, |
| </ | </ | ||
| Ligne 590: | Ligne 683: | ||
| abc = triangle(10, | abc = triangle(10, | ||
| triangle(20, | triangle(20, | ||
| - | translate ([17.55, | + | translate ([17.55, |
| </ | </ | ||
| Ligne 612: | Ligne 705: | ||
| abc=piepart(d=50, | abc=piepart(d=50, | ||
| piepart(d=50, | piepart(d=50, | ||
| - | translate([30, | + | translate([30, |
| </ | </ | ||
| Ligne 635: | Ligne 728: | ||
| def=teardrop(25, | def=teardrop(25, | ||
| teardrop(25, | teardrop(25, | ||
| - | translate([30, | + | translate([30, |
| - | translate([60, | + | translate([60, |
| </ | </ | ||
| Ligne 661: | Ligne 754: | ||
| def=ngon(20, | def=ngon(20, | ||
| ngon(20, | ngon(20, | ||
| - | translate([25, | + | translate([25, |
| - | translate([50, | + | translate([50, |
| translate([25, | translate([25, | ||
| translate([50, | translate([50, | ||
| Ligne 685: | Ligne 778: | ||
| abc=losange([10, | abc=losange([10, | ||
| losange([20, | losange([20, | ||
| - | translate([20, | + | translate([20, |
| </ | </ | ||
| Ligne 709: | Ligne 802: | ||
| translate([50, | translate([50, | ||
| - | translate([0, | + | translate([0, |
| - | translate([50, | + | translate([50, |
| </ | </ | ||
| Ligne 726: | Ligne 819: | ||
| ---- | ---- | ||
| + | |||
| + | ===== Primitives 3D ===== | ||
| + | |||
| + | ==== cube(d, | ||
| + | {{ : | ||
| + | < | ||
| + | abc=cube([10, | ||
| + | echo(abc); | ||
| + | 3D(abc); | ||
| + | </ | ||
| + | < | ||
| + | function cube(d, | ||
| + | ( | ||
| + | d=d==undef? | ||
| + | center=center==undef? | ||
| + | mys=square([d[0], | ||
| + | aa=to3D(mys, | ||
| + | ) | ||
| + | center==false? | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | ==== cylinder(d, | ||
| + | {{ : | ||
| + | < | ||
| + | abc=cylinder(d1=20, | ||
| + | def=cylinder(d=20, | ||
| + | 3D(abc); | ||
| + | translate([25, | ||
| + | </ | ||
| + | < | ||
| + | function cylinder(d, | ||
| + | ( | ||
| + | d1=d==undef? | ||
| + | d2=d==undef? | ||
| + | h=h==undef? | ||
| + | fn=fn==undef? | ||
| + | center=center==undef? | ||
| + | myg1=ngon(d=d1, | ||
| + | myg2=ngon(d=d2, | ||
| + | aa=to3D(myg1, | ||
| + | ) | ||
| + | center==false? | ||
| + | </ | ||
| ===== Divers ===== | ===== Divers ===== | ||
| Ligne 768: | Ligne 905: | ||
| aa; | aa; | ||
| </ | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ==== RVB(a, | ||
| + | {{ : | ||
| + | < | ||
| + | color(RVB(192, | ||
| + | translate([1.1, | ||
| + | translate([2.2, | ||
| + | </ | ||
| + | < | ||
| + | function RVB(a, | ||
| + | b=b==undef? | ||
| + | c=c==undef? | ||
| + | d=d==undef? | ||
| + | aa=[a, | ||
| + | )aa; | ||
| + | </ | ||
| + | |||
| ---- | ---- | ||
| Ligne 854: | Ligne 1010: | ||
| } | } | ||
| </ | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ==== outline(w, | ||
| + | |||
| + | < | ||
| + | abc=square([50, | ||
| + | |||
| + | # | ||
| + | outline(w=3) 2D(abc); | ||
| + | |||
| + | # | ||
| + | translate([55, | ||
| + | |||
| + | # | ||
| + | translate([110, | ||
| + | </ | ||
| + | < | ||
| + | module outline | ||
| + | w=w==undef? | ||
| + | t=t==undef?" | ||
| + | difference() | ||
| + | { | ||
| + | offset(t==" | ||
| + | children(); | ||
| + | offset(t==" | ||
| + | children(); | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| ---- | ---- | ||
| Ligne 1027: | Ligne 1214: | ||
| } | } | ||
| </ | </ | ||
| + | |||
| + | ---- | ||
| + | ==== menger3D(d, | ||
| + | {{ : | ||
| + | Attention, la prévisualisation amène des erreurs d' | ||
| + | < | ||
| + | menger3D(d=100, | ||
| + | </ | ||
| + | < | ||
| + | module menger3d(it=1, | ||
| + | if (it==maxit){ | ||
| + | cube([d, | ||
| + | } | ||
| + | if (it< | ||
| + | union(){ | ||
| + | for (i=[-1:1]){ | ||
| + | translate([d/ | ||
| + | translate([-d/ | ||
| + | } | ||
| + | | ||
| + | translate([0, | ||
| + | translate([0, | ||
| + | |||
| + | for (i=[-1:1]){ | ||
| + | translate([d/ | ||
| + | translate([-d/ | ||
| + | } | ||
| + | translate([0, | ||
| + | translate([0, | ||
| + | translate([d/ | ||
| + | translate([d/ | ||
| + | translate([-d/ | ||
| + | translate([-d/ | ||
| + | }}} | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | ==== jcube(d, | ||
| + | {{ : | ||
| + | < | ||
| + | jcube(d=100, | ||
| + | </ | ||
| + | < | ||
| + | module jcube(it, | ||
| + | it=it==undef? | ||
| + | union() | ||
| + | { | ||
| + | if(it==maxit) | ||
| + | { | ||
| + | cube([d, | ||
| + | } | ||
| + | if(it< | ||
| + | { | ||
| + | translate([d/ | ||
| + | translate([-d/ | ||
| + | translate([d/ | ||
| + | translate([-d/ | ||
| + | translate([d/ | ||
| + | translate([-d/ | ||
| + | translate([d/ | ||
| + | translate([-d/ | ||
| + | translate([-d/ | ||
| + | translate([-d/ | ||
| + | translate([d/ | ||
| + | translate([d/ | ||
| + | translate([-d/ | ||
| + | translate([-d/ | ||
| + | translate([d/ | ||
| + | translate([d/ | ||
| + | translate([0, | ||
| + | translate([0, | ||
| + | translate([0, | ||
| + | translate([0, | ||
| + | }}} | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| ===== Modificateurs formes 2D et 3D ===== | ===== Modificateurs formes 2D et 3D ===== | ||
| Ligne 1301: | Ligne 1565: | ||
| ---- | ---- | ||
| - | ==== interpolate(a,b, | + | |
| - | {{ : | + | ==== mirror(a,x,y) ==== |
| + | {{ : | ||
| < | < | ||
| - | abc=square([10,10],center=true); | + | abc=chaincurve(center(LetterL),3); |
| - | def=circle(d=10,fn=7); | + | 2D(abc); |
| - | ghi=interpolate(abc, | + | translate([60,0,0]) 2D(mirror(abc,x=true)); |
| - | jkl=interpolate(abc,def,step=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)); | + | </ |
| - | echo(len(ghi)); | + | < |
| - | echo(len(jkl)); | + | function mirror(a,x,y)=let( |
| - | trace(abc,dot=true,d=0.3); | + | xx=x==undef? |
| - | translate([15,0,0]) trace(def,dot=true,d=0.3); | + | yy=y==undef? |
| - | 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, | ||
| + | ] | ||
| + | ] | ||
| + | )aa; | ||
| + | </ | ||
| - | ->ECHO: 5 | + | ---- |
| - | ECHO: 8 | + | |
| - | ECHO: 29 | + | ==== translate3D(a, |
| - | ECHO: 29 | + | {{ :outilsit: |
| + | < | ||
| + | abc=cube([10, | ||
| + | def=translate3D(rescale3D(abc, | ||
| + | 3D(abc); | ||
| + | 3D(def); | ||
| </ | </ | ||
| < | < | ||
| - | function | + | function |
| - | pp=ppcm(len(a)-1,len(b)-1,q)-[1,1], | + | function rescale3D(a,s)= [[for(i=[0: |
| - | correct=correct==undef? | + | |
| - | abc=vectranslate(multiplyfaces(a,pp[0]),n=correct==undef? | + | |
| - | def=multiplyfaces(b, | + | |
| - | aa=[for(i=[0: | + | |
| - | (aa); | + | |
| </ | </ | ||
| ---- | ---- | ||
| - | ==== multiplyfaces(object,n) ==== | + | ==== skew(XY,XZ, |
| - | {{ : | + | {{ : |
| < | < | ||
| - | abc=square([10,10], | + | skew(XY=0.5) cube([25,25,25], |
| - | echo(len(abc)); | + | translate([50,0,0]) skew(XZ=0.5) cube([25, |
| - | for(i=[1:4]){ | + | translate([0,-50,0]) skew(YX=0.5) cube([25,25, |
| - | def=multiplyfaces(abc,i); | + | translate([50,-50,0]) skew(YZ=0.5) cube([25, |
| - | echo(len(def)); | + | translate([0,-100,0]) skew(ZX=0.5) cube([25, |
| - | translate([12*(i-1),0,0]) trace(def,d=0.3); | + | translate([50, |
| - | } | + | |
| - | + | ||
| - | -> | + | |
| - | ECHO: 9 | + | |
| - | ECHO: 13 | + | |
| - | ECHO: 17 | + | |
| - | ECHO: 21 | + | |
| </ | </ | ||
| < | < | ||
| - | function multiplyfaces(object,n)=let( | + | module skew(XY,XZ, |
| - | n=n==undef?1:n==0?0:n, | + | |
| - | aa=n==0?object:[for(i=[0: | + | [1,XY,XZ,0], //[redimX, skewXY, skewXZ, |
| - | addpoints(object[i],object[i+1],n) | + | [YX,1,YZ,0], //[SkewYX, |
| - | ]) | + | [ZX,ZY,1,0] //[SkewZX, SkewZY, |
| - | concat(clean(aa), | + | ]; |
| + | multmatrix(matrice){ | ||
| + | | ||
| + | } | ||
| + | } | ||
| </ | </ | ||
| Ligne 1369: | Ligne 1638: | ||
| def=chaincurve(koch(abc, | def=chaincurve(koch(abc, | ||
| my3Dobject=simple3D(abc, | my3Dobject=simple3D(abc, | ||
| - | polyhedron(my3Dobject[0], | + | 3D(my3Dobject); |
| </ | </ | ||
| < | < | ||