Je commence à utiliser à utiliser pstricks 3d, je cherche une
fonction.
En effet, lorsqu'on écrit du texte à partir d'un point 3D, celui-ci se
trouve dans le plan 3D.
Je voudrais écrire du texte dans le plan 2D sur un point 3D (point
dont j'ai calculé les coordonnées 3D)
Ma question est:
existe-t-il une fonction qui a partir d'un point 3D (x,y,z), et un
angle de vue qui renvoie les coordonnées projetées en 2D (xp,yp)?
La réponse est oui, car c'est ce que fait pstricks3d, mais quelqu'un
la connait-il, et comment s'appelle-t-elle?
Un ECM sera peut-être plus parlant...
Cet ECM trace un parallélépipède projeté en 2D.
Sur cet ECM, je voudrais écrire le noms des axes (x,y,z) dans le plan
2D, actuellement le nom de ces axes est en 3D.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass{article}
\usepackage{pstricks,pstricks-add,pst-math,pst-xkey}
\usepackage{pst-3d}
\newcommand{\pstrectDDD}[3]
{
\begin{pspicture*}(-5,-5)(6,6)
\uput[45](0,0){\small $O$}
\psdots[dotstyle=*,linecolor=darkgray](0,0)
\ThreeDput[normal= 0 -1 0]( 0, 0, 0){\psline
[linecolor=darkgray]{->}(0,0)(! #1 2 add 0)
\uput[0](! #1 2 add 0)
{$x$}}
\ThreeDput[normal= 0 -1 0]( 0, 0, 0){\psline
[linecolor=darkgray]{->}(0,0)(! 0 #2 3 add)
\uput[0](! 0 #2 3 add)
{$y$}}
\ThreeDput[normal= 1 0 0]( 0, 0, 0){\psline
[linecolor=darkgray]{->}(0,0)(! -#3 2.2 sub 0)
\uput[270](! -#3 2.2
sub 0){$z$}}
\ThreeDput[normal= 0 -1 0]( 0, -#3, 0){\psframe(-#1,-#2)
(#1,#2)}
\ThreeDput[normal= 0 -1 0]( 0, #3, 0){\psline
[linestyle=dashed,dash=4pt 4pt](-#1,-#2)(#1,-#2)
\psline
[linestyle=dashed,dash=4pt 4pt](-#1, #2)(-#1,-#2)
\psline(#1,-#2)
(#1,#2)
\psline(#1,#2)(-
#1,#2)}
\ThreeDput[normal= 1 0 0]( #1, 0, 0){\psline(-#3, #2)(#3,
#2)
\psline(-#3,-#2)(#3,-
#2)}
\ThreeDput[normal=-1 0 0](-#1, 0, 0){\psline(-#3, #2)(#3,
#2)
\psline
[linestyle=dashed,dash=4pt 4pt](-#3,-#2)(#3,-#2)}
\end{pspicture*}
}
\begin{document}
\psset{unit=0.4cm,xunit=0.4cm,yunit=0.4cm}
\psset{algebraic=true,dotstyle=*,dotsize=3pt
0,linewidth=0.8pt,arrowsize=3pt 2,arrowinset=0.25}
\pstrectDDD{4}{1}{2}
\end{document}
La réponse est
Dans le préambule ajouter:
\usepackage{pst-3dplot}
Dans le code pstricks:
\pstThreeDPut(1,2,3){$x$}
% Si une des coordonnées est un paramètre, on utilise une expression
polonaise inverse postscript
\pstThreeDPut(#1 3 add,0,0){$x$}
L'asstuce consiste à définir un "node" dans la commande 3d, la
position du point est automatiquement calculée et peut être
réemployée :
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ThreeDput[normal= 0 -1 0]( 0, 0, 0){\psline[linecolor=darkgray]{->}
(0,0)(! #1 2 add 0)
\pnode(! #1 2 add 0)
{X}} % <---le noeud est défini
\psdot(X)\uput[r](X){$x$}% <--- son utilisation pour un
affichage 2d
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Le fichier proposé devient :
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass{article}
\usepackage{pstricks-add}
\usepackage{pst-3d}
\newcommand{\pstrectDDD}[3]
{
\begin{pspicture*}(-5,-5)(6,6)
\uput[45](0,0){\small $O$}
\psdots[dotstyle=*,linecolor=darkgray](0,0)
\ThreeDput[normal= 0 -1 0]( 0, 0, 0){\psline
[linecolor=darkgray]{->}(0,0)(! #1 2 add 0)
\pnode(! #1 2 add 0)
{X}}
\psdot(X)\uput[r](X){$x$}%
\ThreeDput[normal= 0 -1 0]( 0, 0, 0){\psline
[linecolor=darkgray]{->}(0,0)(! 0 #2 3 add)
\pnode(! 0 #2 3 add)
{Y}}
\psdot(Y)\uput[u](Y){$y$}%
\ThreeDput[normal= 1 0 0]( 0, 0, 0){\psline
[linecolor=darkgray]{->}(0,0)(! -#3 2.2 sub 0)
\pnode(! -#3 2.2 sub
0){Z}}
\psdot(Z)\uput[dl](Z){$z$}%
%%%%%%%%%%%%%%%%%%%%%%%%%
Manuel L.
Merci pour l'info
C'est effectivement plus propre que l'utilisation d'un autre paquet...