Exemples

Pages dédiées

Figures et codage

Polyèdre creux  web/btpdf.png  web/btteg.png  web/bttxt.png
NewMac("facettesCreuses","
    [
	if %2=Nil then $ep:=0.25, $mode:=0 else ep:=Re(%2)/2, $mode:=Im(%2) fi,
	if mode=0 then
	    MapBy(
		[
		    $A1:=Nil, $A2:=S[0,2],$A3:=S[1,2], $F:=Nil,
		    $aux:= Map3D(
			[ 
			    A1:=A2, A2:=A3, A3:=Z,
            		    if A1<>Nil then
                		$u:=normalize(A1-A2), $v:=normalize(A3-A2),
                		$ecart:=angle(u,v)/2,
                		$L:=ep/sin(ecart),
                		Insert(F,A2+L*normalize(u+v))
            		    fi
            		], 
        	    $Z, [S[3,0],S[1,2]]),
		    $compt:=0, $B:=Nil, Insert($interieur,[F,jump]),
		    Map3D( 
			[
			    Inc(compt,1), $A:=B, B:=$Z,
        		    if A<>Nil then
        			A,B,F[2*compt-1,2], F[2*compt-3,2],jump
        		    fi,
        		], Z, S),
		    B,Copy(S,1,2),F[1,2],F[2*compt-1,2]
		],
	    S, %1, jump),
	else
	    ep:=2*ep,
	    MapBy(
		[
		    $A1:=Nil, $A2:=S[1,2], $F:=Nil,
		    $aux:= Map3D(
			[ 
			    A1:=A2, A2:=Z,
            		    if A1<>Nil then
                		$u:=normalize(A2-A1),
                		Insert(F,A1+ep*normalize(u))
            		    fi
            		], $Z, [S[3,0],S[1,2]]),
		    $compt:=0, $B:=Nil, Insert($interieur,[F,jump]),
		    Map3D( 
			[
			    Inc(compt,1), $A:=B, B:=$Z,
        		    if A<>Nil then
        			B,F[2*compt-1,2], F[2*compt-3,2],jump
        		    fi,
        		], Z, S),
		    Copy(S,1,2),F[1,2],F[2*compt-1,2]
		],
	    S, %1, jump),
	fi,
	%3:=interieur
    ]"), {fin macro -facettesCreuses-}

background(full,darkblue), theta:=85*deg, phi:=39*deg,
P:=Cube([0,0],[5,0]), nb:=15,
Y:=[1,1,0], R:=[1,0,0],
Build3D( for k from 1 to nb do
          P:=facettesCreuses(P, 0.3+i, aux),
          C:=((nb-k)*R+k*Y)/nb,
          [1,Rgb(C[1],C[2],C[3]) , P],
          P:=aux, Re(jump)-i
         od),
Display3D()
Polyèdre creux  web/btpdf.png  web/btteg.png  web/bttxt.png
[
 {Cet exemple nécessite la chargemeent de PolyedresII.mac,
 ainsi que la définition de la macro FacettesCreuses.
 Ceci est fait dans le fichier source (.teg) ci-joint}
 background(full, lightskyblue),
 poly:=Archimede(6, [0,0],[4,0]), {grand rhombicuboctaèdre}
 FillColor:=gold, FillStyle:=full,
 DrawPolyNC(FacettesCreuses(poly,0.5),1)
]
Intersection d'un cône et d'une sphère  web/btpdf.png  web/btteg.png  web/bttxt.png
[
    view(-6,6,-6.5,6), Marges(0,0,0,0), size(12,1), background(full,beige),
    theta:=30*deg, phi:=99*deg,
    C:=Cone(M(0,0,-6),10*vecK,4,25), S:=Sphere(Origin,3,25,25),
    I1:=Clip3D(S,C), I2:=Clip3D(C,S), {<- nécessite scene3d.mod à jour}
    Build3D( 
	[1,red,I1], 
	[1,blue,I2]
    ), 
    Display3D(),
    Width:=8, FillStyle:=full, FillColor:=Rgb(0.74,0.73,1),
    FillOpacity:=0.2,
    Color:=blue, Dcone(M(0,0,-6),10*vecK,4,2),
    Color:=red, FillColor:=Rgb(1,0.73,0.74), Dsphere(Origin,3,2) 
]
Intersection d'un plan avec un cône  web/btpdf.png  web/btteg.png  web/bttxt.png
[
    view(-7,7,-7,7), Marges(0,0,0,0), size(12,1), background(full,beige),
    H:=5, R:=4, a:=2, Plan:=[M(a,0,0),vecI],
    C1:=cone(Origin, H*vecK,R,45), C2:=cone(Origin, -H*vecK,R,45),
    L1:=Intersection(Plan,C1), L2:=Intersection(Plan,C2),
    Asymp1:=getdroite( [M(a,0,0),M(0,R,H)] ),
    Asymp2:=getdroite( [M(a,0,0),M(0,-R,H)] ),

    Build3D([1, Rgb(0.74,1,0.73)+0.9*i,getplan(Plan)],
        [1, Rgb(0.73,0.74,1),C1,C2],
        [2,darkgreen,12, Asymp1,Asymp2],
        [2,0,8,axes3d()],
       ),
    Display3D(),

    Color:=red, Width:=8, DrawAretes([L1,L2],0), Color:=black,
    Arrows:=1, LineStyle:=dotted, Axes3D(0,0,0)
]
Harmonique sphérique  web/btpdf.png  web/btteg.png  web/bttxt.png
[
    Fenetre(-1+i,1-i,5+5*i), LineStyle:=noline,
    L:=7, m:=4, sg:=if mod(m,2)=0 then 1 else -1 fi,
    P:= (for k from 0 to L do Anp(2*(L-k),L+m)*binom(L,k)*sg,0, sg:=-sg od)/(2^L*fact(L)),
    Del(P,L-m+2,0),
    K:=sqrt((2*L+1)*fact(L-abs(m))/(4*pi*fact(L+abs(m)))),
    NewMac("Plm",["[P:=",P,",T:=P[1],
        for k from 2 to Nops(P) do T:=x*T+P[k] od,
        T*(1-sqr(x))^(",m,"/2)]"],x),
    NewMac("Y",[K,"*Plm(cos(x))*cos(",m,"*y)"],x,y),
    S:=GetSurface( [z:=0.75+0.25*Y(v,u),z*exp(i*u)*sin(v),z*cos(v)],
               i*2*pi,i*pi,75+75*i),
    S1:=SortFacet(S,i),
    Map( 
        if Re(z)=Re(jump) then {facette}
            G:=isobar3d(facette),
            c:=(norm(G)-0.63)/(0.87-0.63), FillColor:=Rgb(1,1-c,0),
            Ligne3D([facette],1), facette:=Nil
        else 
            Insert(facette,z)
        fi, 
        z, S1
    )
]

Ce fichier est inspiré d'un exemple dû à Philippe Ivaldi avec asymptote.

Courbes de niveau  web/btpdf.png  web/btteg.png  web/bttxt.png
[
    S:=GetSurface( [u+i*v, (u/2+v)/(2+cos(u/2)*sin(v))], 10*i,10*i,45+45*i),
    HideWidth:=8, Dparallelep(Origin,[10,0],[10*i,0],[0,11],0),
    S1:=SortFacet(S,i),
    Map( if Re(z)=Re(jump) {fin de facette}
        then {traiter facette, on découpe aux lignes de niveau: 2, 3, 5, 7.5}
    	    f1:=ClipFacet(facette,[0,2,-vecK]),
	    f2:=ClipFacet(facette,[0,2,vecK]),
    	    FillColor:=red, Del(f1,Nops(f1),1), Ligne3D([f1,z],1),
    	    f1:=ClipFacet(f2,[0,3,-vecK]), f3:=ClipFacet(f2,[0,3,vecK]),
    	    FillColor:=blue, Del(f1,Nops(f1),1), Ligne3D([f1,z],1),
    	    f1:=ClipFacet(f3,[0,5,-vecK]), f2:=ClipFacet(f3,[0,5,vecK]),
    	    FillColor:=green, Del(f1,Nops(f1),1), Ligne3D([f1,z],1),
    	    f1:=ClipFacet(f2,[0,7.5,-vecK]), f3:=ClipFacet(f2,[0,7.5,vecK]),
    	    FillColor:=yellow, Del(f1,Nops(f1),1), Ligne3D([f1,z],1),
    	    FillColor:=orange, Del(f3,Nops(f3),1), Ligne3D([f3,z],1),
    	    facette:=Nil,
        else 
    	    Insert(facette,z) {c'est un sommet},
    	    fi, z, S1
    	),
    FillStyle:=none,
    Dparallelep(Origin,[10,0],[10*i,0],[0,11],1)
]
cycloideSpherique  web/btpdf.png  web/btteg.png  web/bttxt.png
[
    $rapport:=4, angle3:=0, courbe:=Nil,
    $angle1:=arcsin(rapport/(rapport+1)), $angle2:=arcsin(1/(rapport+1)),
    $H:=6, $R:=H*tan(angle1), $h:=7,$r:=h*tan(angle2),
  
    $C1:=cone(Origin,-H*vecK,R,45),
    $x:=angle1+angle2,
    $u:=[exp(i*angle3)*sin(x),-cos(x)],
    $C2:=cone(Origin, h*u,r,30),
    $A:=h*[sin(angle1),-cos(angle1)]/cos(angle2),
    for k from 1 to 72 do
	$angle1':=angle3*rapport,
	$u:=[exp(i*angle3)*sin(x),-cos(x)],
	A':=rot3d(A,[Origin,vecK],angle3),
	A'':=rot3d(A',[Origin,-u],angle1'),
	Insert(courbe,A''),Inc(angle3,pi/36)
    od,
    L:=lineTube(courbe,0.15,12),
    S:=Sphere(Origin,Norm(A),30,30),
    Build3D(
	[1,Rgb(0.74,1,0.73), C1],
	[1, aliceblue+0.6*i,S],
	[1,Rgb(0.74,0.73,1), C2],
	[1,red-i, L]
    ),
    Display3D()
]
cylcoplu  web/btpdf.png  web/btteg.png  web/bttxt.png
% Intersection d'un cylindre et d'un conoïde de Plücker.
% Dépend du modèle scene3d.mod.

[
    C:=cylindre(M(0,0,-5),10*vecK,3,50), 
    b:=2,
    CP:=GetSurface( M(u,v,2*b*u*v/(sqr(u)+sqr(v))),-5+5*i,-5+5*i,30+30*i),
    L:=curveTube([3*exp(i*t),b*sin(2*t)],0.15,-pi,pi,50,15),
    Build3D([1, Rgb(0.74,0.73,1), C],
         [1, Rgb(0.74,1,0.73), CP],
         [1, red, L]
    ),
    Display3D()
]