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:40] 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,def, | + | translate([60, |
| - | jkl=interpolate(abc, | + | translate([0, |
| - | echo(len(abc)); | + | translate([60,-80,0]) 2D(mirror(abc,x=true,y=true)); |
| - | echo(len(def)); | + | |
| - | echo(len(ghi)); | + | |
| - | echo(len(jkl)); | + | |
| - | trace(abc, | + | |
| - | translate([15, | + | |
| - | translate([0, | + | |
| - | translate([15,-15,0]) trace(jkl,dot=true,d=0.3); | + | |
| </ | </ | ||
| < | < | ||
| - | function | + | function |
| - | pp=ppcm(len(a)-1,len(b)-1,q)-[1,1], | + | xx=x==undef?1:x==true?-1:1, |
| - | correct=correct==undef?0:correct, | + | yy=y==undef?1:y==true?-1:1, |
| - | abc=vectranslate(multiplyfaces(a, | + | aa=[ |
| - | def=multiplyfaces(b, | + | |
| - | aa=[for(i=[0: | + | |
| - | | + | |
| + | [a[i][0]*xx,a[i][1]*yy] | ||
| + | | ||
| + | | ||
| + | )aa; | ||
| </ | </ | ||
| + | ---- | ||
| + | |||
| + | ==== translate3D(a, | ||
| + | {{ : | ||
| + | < | ||
| + | abc=cube([10, | ||
| + | def=translate3D(rescale3D(abc, | ||
| + | 3D(abc); | ||
| + | 3D(def); | ||
| + | </ | ||
| + | < | ||
| + | function translate3D(a, | ||
| + | function rescale3D(a, | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ==== skew(XY, | ||
| + | {{ : | ||
| + | < | ||
| + | skew(XY=0.5) cube([25, | ||
| + | translate([50, | ||
| + | translate([0, | ||
| + | translate([50, | ||
| + | translate([0, | ||
| + | translate([50, | ||
| + | </ | ||
| + | < | ||
| + | module skew(XY, | ||
| + | matrice=[ | ||
| + | [1, | ||
| + | [YX, | ||
| + | [ZX,ZY,1,0] //[SkewZX, SkewZY, | ||
| + | ]; | ||
| + | multmatrix(matrice){ | ||
| + | children(); | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| ===== 2D vers 3D ===== | ===== 2D vers 3D ===== | ||
| Ligne 1335: | Ligne 1638: | ||
| def=chaincurve(koch(abc, | def=chaincurve(koch(abc, | ||
| my3Dobject=simple3D(abc, | my3Dobject=simple3D(abc, | ||
| - | polyhedron(my3Dobject[0], | + | 3D(my3Dobject); |
| </ | </ | ||
| < | < | ||