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 23:09] vanlindtmarc [addpoints(c1,c2,n)] |
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 438: | Ligne 460: | ||
def=fractalize(abc, | def=fractalize(abc, | ||
ghi=chaincurve(def); | ghi=chaincurve(def); | ||
- | polygon(def); | + | 2D(def); |
- | translate([55, | + | translate([55, |
</ | </ | ||
Ligne 458: | 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 474: | Ligne 554: | ||
abc = square([10, | abc = square([10, | ||
square([10, | square([10, | ||
- | translate ([12, | + | translate ([12, |
</ | </ | ||
Ligne 500: | 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 522: | Ligne 602: | ||
abc = ellipse([40, | abc = ellipse([40, | ||
ellipse([20, | ellipse([20, | ||
- | translate ([40, | + | translate ([40, |
</ | </ | ||
Ligne 543: | Ligne 623: | ||
abc = star(d1=40, | abc = star(d1=40, | ||
star(d1=40, | star(d1=40, | ||
- | translate ([40, | + | translate ([40, |
</ | </ | ||
Ligne 565: | Ligne 645: | ||
abc = roundsquare([15, | abc = roundsquare([15, | ||
roundsquare([20, | roundsquare([20, | ||
- | translate ([22, | + | translate ([22, |
</ | </ | ||
Ligne 603: | Ligne 683: | ||
abc = triangle(10, | abc = triangle(10, | ||
triangle(20, | triangle(20, | ||
- | translate ([17.55, | + | translate ([17.55, |
</ | </ | ||
Ligne 625: | Ligne 705: | ||
abc=piepart(d=50, | abc=piepart(d=50, | ||
piepart(d=50, | piepart(d=50, | ||
- | translate([30, | + | translate([30, |
</ | </ | ||
Ligne 648: | Ligne 728: | ||
def=teardrop(25, | def=teardrop(25, | ||
teardrop(25, | teardrop(25, | ||
- | translate([30, | + | translate([30, |
- | translate([60, | + | translate([60, |
</ | </ | ||
Ligne 674: | 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 698: | Ligne 778: | ||
abc=losange([10, | abc=losange([10, | ||
losange([20, | losange([20, | ||
- | translate([20, | + | translate([20, |
</ | </ | ||
Ligne 722: | Ligne 802: | ||
translate([50, | translate([50, | ||
- | translate([0, | + | translate([0, |
- | translate([50, | + | translate([50, |
</ | </ | ||
Ligne 739: | 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 781: | 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 867: | 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 1040: | 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 1314: | 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 1382: | Ligne 1638: | ||
def=chaincurve(koch(abc, | def=chaincurve(koch(abc, | ||
my3Dobject=simple3D(abc, | my3Dobject=simple3D(abc, | ||
- | polyhedron(my3Dobject[0], | + | 3D(my3Dobject); |
</ | </ | ||
< | < |