Mouvement d’une balle dans un cône (featpost)

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

Mise en ligne le 18 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


% conicurv.mp 
% L. Nobre G.
% Y2K, 2008

input featpost3Dplus2D;

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

beginfig(1);
	f := (10,-5,5.44);
	Spread := 30;
	numeric shortradius, longradius, theta, width, height;
	numeric updiff, refsize, vecsize, anglar, bord, totup;
	color rn, fa, fc, pg, centre, speed, refx, refy, refz, refY, refX;
	color iplow, iphig, oplow,ophig, anglebase, central, refo;
	color eplow, ephig, aplow,aphig, anglebase, central, refo;
	theta = 30;
	width = 3;
	shortradius = 2;
	bord = 2;
	refsize = 1;
	vecsize = 2;
	height = 0.3;
	anglar = 1.75;
	totup = 3;
	longradius = shortradius + width*cosd(theta);
	updiff = width*sind(theta);
	iplow = (0,shortradius,0);
	iphig = (0,longradius,updiff);
	oplow = (-shortradius,0,0);
	ophig = (-longradius,0,updiff);
	aplow = -iplow;
	aphig = (0,-longradius,updiff);
	eplow = -oplow;
	ephig = (longradius,0,updiff);
	anglebase = (0,longradius,0);
	centre = 0.5[iplow,iphig]+(0,0,height);
	central = (0,0,Z(centre));
%	refo = (0,0,-shortradius*sind(theta)/cosd(theta));
	refo = (0,0.5*Y(centre),Z(centre));
	refx = refsize*(0,cosd(theta),sind(theta));
	refy = refsize*(0,-sind(theta),cosd(theta));
	refz = refsize*(1,0,0);
	refX = refsize*green;
	refY = refsize*blue;
%	anglinen( iplow, oplow, (0,0,0), shortradius, "", 0 );
%	anglinen( iphig, ophig, (0,0,updiff), longradius, "", 0 );
	angline(iphig,anglebase,iplow,width/anglar,btex $\theta$ etex,rt);
	draw rp(central) withpen pencircle scaled 2pt;
	draw rp(iplow)--rp(iphig);
	draw rp(oplow)--rp(ophig);
	draw rp(aplow)--rp(aphig);
	draw rp(eplow)--rp(ephig);
	draw rp(iphig)--rp(anglebase)--rp(aplow) dashed evenly;
	draw rp(oplow)--rp(eplow) dashed evenly;
	draw rp(central)--rp(centre) dashed evenly;
%	draw rp((0,-bord,-bord))--rp((0,longradius+bord,-bord))
%	   --rp((0,longradius+bord,totup))--rp((0,-bord,totup))--cycle
%	     withpen pencircle scaled 2pt;
	draw rp((0,0,-bord))--rp((0,longradius+bord,-bord))
	   --rp((0,longradius+bord,totup))--rp((0,0,totup))--cycle;
	drawarrow rp(refo)..rp(refo+refy);
	drawarrow rp(refo)..rp(refo+refx);
	drawarrow rp(black)..rp(refX);
	drawarrow rp(black)..rp(refY);
	drawarrow rp(refo)..rp(refo+refz);
	label.llft(btex $y$ etex, rp(refo+refy));
	label.lrt(btex $x$ etex, rp(refo+refx));
	label.lft(btex $Y$ etex, rp(refY));
	label.bot(btex $X$ etex, rp(refX));
	label.llft(btex $z$ etex, rp(refo+refz));
	rn = centre+vecsize*refy;
	fa = centre+vecsize*refx;
	fc = centre+vecsize*(0,1,0);
	pg = centre+vecsize*(0,0,-1);
	speed = centre+vecsize*(1,0,0);
	drawarrow rp(centre)..rp(rn);
	drawarrow rp(centre)..rp(fa);
	drawarrow rp(centre)..rp(fc);
	drawarrow rp(centre)..rp(pg);
	drawarrow rp(centre)..rp(speed);
	label.rt(btex $\vec{R}_N$ etex, rp(rn));
	label.top(btex $\vec{F}_a$ etex, rp(fa));
	label.urt(btex $\vec{F}_c$ etex, rp(fc));
	label.rt(btex $\vec{P}$ etex, rp(pg));
	label.rt(btex $\vec{v}$ etex, rp(speed));
	draw rp(centre) withpen pencircle scaled 10pt withcolor blue;
	pickup pencircle scaled 2pt;
	draw rigorouscircle( (0,0,updiff), (0,0,1), longradius );
	draw rigorouscircle( (0,0,0), (0,0,1), shortradius );
endfig;

verbatimtex 
\end{document} 
etex

end;

Mots clés : featpostcôneballerepère

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

Fichiers

Télécharger l’archive complète