Des angles et des cercles en 3D (featpost)

Auteur ou autrice : Luís Nobre Gonçalves.

Mise en ligne le 17 janvier 2025

Image du résultat de l’exemple

Cet exemple illustre l’utilisation du package featpost présent sur le CTAN. Ce package permet de réaliser des dessins en trois dimensions (et en deux dimensions). Il est très pratique pour illustrer de la géométrie basique dans l’espace.

Code


% anglinerigorouscircle.mp
% L. Nobre G. 
% 2006

input featpost3Dplus2D;


verbatimtex
\documentclass{article} 
\begin{document} 
etex

beginfig(1);
    color orig, axxc, ayyc, azzc;
    color field, nalfa, ngamma, alfacnt, gammacnt, nazy, nax;
    path alfa, gamma;
    numeric nalfad, theta, radius, gammang, xxsize, yysize, zzsize;
    numeric xxpos, yypos, zzpos, fieldpos, deltarad, deltapos;
    numeric thetarad, thetapos, nalfapos, ngammapos;
    numeric etalpharad, etalphapos, alphapos, gammapos;
    picture xxlabel, yylabel, zzlabel, fieldlabel, deltalabel;
    picture nalfalabel, ngammalabel, etalphalabel, alphalabel;
    picture gammalabel, thetalabel;
    
    f 			:= (3,4,2);
    Spread 		:= 100;
    xxsize 		= 0.8;
    xxpos 		= 6;
    yysize 		= 0.8;
    yypos 		= 6;
    zzsize 		= 1.3;
    zzpos 		= 4;
    field 		= (0.7,0,0.3);
    fieldpos 		= 2;
    deltarad 		= 0.45;
    deltapos 		= 3;
    nalfad 		= 1.0;
    theta 		= 25;
    thetarad 		= 0.3;
    thetapos 		= 2;
    nalfapos 		= 7;
    gammang 		= 65;
    ngammapos 		= 7;
    etalpharad 		= 0.4;
    etalphapos 		= 2;
    alphapos 		= 6;
    gammapos 		= 0;

    xxlabel 	= btex $x_c$ etex;
    yylabel 	= btex $y_c$ etex;
    zzlabel 	= btex $z_c$ etex;
    deltalabel 	= btex $\Delta$ etex;
    fieldlabel 	= btex $\mathbf{B}$ etex;
    thetalabel 	= btex $\theta$ etex;
    nalfalabel 	= btex $\vec{n}_\alpha$ etex;
    ngammalabel = btex $\vec{n}_\gamma$ etex;
    etalphalabel= btex $\eta_\alpha$ etex;
    alphalabel 	= btex $\alpha$ etex;
    gammalabel 	= btex $\gamma$ etex;
    orig 		= (0,0,0);
    axxc 		= (xxsize,0,0);
    ayyc 		= (0,yysize,0);
    azzc 		= (0,0,zzsize);
    nalfa 		= (0,sind(theta),cosd(theta));
    alfacnt 		= (0,0,nalfad*cosd(theta));
    radius 		= nalfad*sind(theta);
    alfa 		= rigorouscircle( alfacnt, (0,0,1), radius );
    gammacnt 		= cosd(theta)*cosd(theta)*nalfa;
    radius 		:= cosd(theta)*sind(theta);
    gamma 		= rigorouscircle( gammacnt, nalfa, radius );
    nazy 		= radius*sind(gammang)*ncrossprod( nalfa, axxc );
    nax 		= radius*cosd(gammang)*ncrossprod( ayyc, nalfa );
    ngamma 		= gammacnt+nax+nazy;
    draw alfa dashed evenly;
    draw gamma dashed evenly;
    drawarrow rp(orig)..rp(axxc);
    drawarrow rp(orig)..rp(ayyc);
    drawarrow rp(orig)..rp(azzc);
    drawarrow rp(orig)..rp(field);
    drawarrow rp(orig)..rp(nalfa);
    drawarrow rp(orig)..rp(ngamma);
    drawarrow subpath (4,3) of alfa;
    drawarrow subpath (8,7) of gamma;
    anglinen( field, azzc, orig, deltarad, deltalabel, deltapos );	
    anglinen( azzc, nalfa, orig, thetarad, thetalabel, thetapos );	
    anglinen( ngamma, field, orig, etalpharad, etalphalabel, etalphapos );
    labeln( xxlabel, rp(axxc), xxpos );
    labeln( yylabel, rp(ayyc), yypos );
    labeln( zzlabel, rp(azzc), zzpos );
    labeln( fieldlabel, rp(field), fieldpos );
    labeln( nalfalabel, rp(nalfa), nalfapos );
    labeln( ngammalabel, rp(ngamma), ngammapos );
    labeln( alphalabel, point 3 of alfa, alphapos );
    labeln( gammalabel, point 7 of gamma, gammapos );
    pickup pencircle scaled 1.5;
    draw rp(alfacnt);
    draw rp(gammacnt);
%   produce_auto_scale;
endfig;

verbatimtex 
\end{document} 
etex

end;

Mots clés : angle3Dfeatpostrepère

Cet exemple fait partie de la collection d’exemples Documentation de featpost.

Fichiers

Télécharger l’archive complète