以透视方式放置在 3D 对象上的文本

以透视方式放置在 3D 对象上的文本

我正在尝试使用 Tikz 将图形添加到我的 LaTeX 文档中。我制作了一些 2D 和 3D 图表。其中一个图表包含一个 3D 金字塔。我想将文本放在金字塔的正面和侧面。我设法将文本放在了正面。但是将文本放在侧面对我来说是个问题,因为它不是透视的,因此会破坏 3D 体验。

我希望侧面的文本能够旋转,使其看起来与侧面位于同一窗格中。我可以尝试旋转文本,但定位很麻烦。一定有更好的方法可以做到这一点?以某种方式在 z 轴上而不是 x/y 窗格中写文本。

我设法制作了一些东西来说明我的想法。应该有更好的方法来实现这一点。文本显然不具备 3D 感知能力,因此不具备透视能力。此外,文本不了解图形,并且对于较大的文本,它会超出插图的边界,因为它不受边缘的限制。

如有任何建议,我们将不胜感激。提前谢谢您!

\begin{tikzpicture}[scale=0.5]
\example of my pyramid:
\path   coordinate (0) at (0,0,0)
    % The base layer
    coordinate (A) at (-9,0,9)
    coordinate (B) at (9,0,9)
    % The middle layer
    coordinate (C) at (-6,4,6)
    coordinate (D) at (6,4,6)
    % The top layer
    coordinate (E) at (-3.75,7,3.75)
    coordinate (F) at (3.75,7,3.75)
    coordinate (G) at (0,12,0)

    % 3d effect
    % The base layer
    coordinate (AA) at (-9,0,-9)
    coordinate (BB) at (9,0,-9)
    % The middle layer
    coordinate (CC) at (-6,4,-6)
    coordinate (DD) at (6,4,-6)
    % The top layer
    coordinate (EE) at (-3.75,7,-3.75)
    coordinate (FF) at (3.75,7,-3.75);

    % Draw lines between points
    \draw (A) -- (B) -- (BB);
    \draw (C) -- (D) -- (DD);
    \draw (E) -- (F) -- (FF);
    \draw (A) -- (G) -- (B);
    \draw (G) -- (BB);

    % Text added to node positioned at center of segment.
    \node at (0,2,7.5) {Base of the pyramid};
    \node at (0,5.5,4.875) {Middle section};        
    \node at (0,9,1.875) {Top of the pyramid};
    % Rotated text added to node positioned at center of segment.
    \node [rotate=45] at (7.5,2,0) {Base};
    \node [rotate=45] at (4.875,5,0) {Middle};
    \node [rotate=45] at (1.875,9,0) {Top};

\end{tikzpicture}

答案1

\usetikzlibrary{calc}

\path ($(B)!.5!(D)$) -- node[sloped,xslant=.2] {Base} ($(BB)!.5!(DD)$);

给出

在此处输入图片描述

xslant=.5

在此处输入图片描述

答案2

运行xelatexlatex->dvips->ps2pdf

\documentclass{article}
\usepackage{pst-solides3d}
\begin{document}

\psset{Decran=30,viewpoint=30 -15 10 rtp2xyz,solidmemory}
\begin{pspicture}(-4,-1)(4,4)
\psSolid[object=new,sommets=0 -3 0 %% 0
                            -3 0 0 %% 1
                             0 3 0 %% 2
                             3 0 0 %% 3
                             0 0 5, %% 4
  faces={[3 2 1 0][3 4 0 ][4 3 2][4 2 1][4 1 0]},
%   numfaces=all,num=all,
   intersectiontype=0,
   intersectionplan={[0 0 1 -2] [0 0 1 -3.5]},
   intersectionlinewidth=1 1,
   intersectioncolor=(bleu) (rouge),
   fillcolor=green!20!white,linecolor=green!60!black,
   name=P,action=draw*]
\psSolid[object=plan,action=none,definition=solidface,args=P 1,name=P1]
\psSolid[object=plan,action=none,definition=solidface,args=P 2,name=P2]
\psProjection[object=texte,phi=-139,pos=dc,text=Base of the pyramid,plan=P2]
\psProjection[object=texte,phi=-40,pos=uc,text=Top,plan=P1](1.6,1.8)
\psProjection[object=texte,phi=-40,pos=dc,fontsize=12,text=Base of the pyramid,plan=P1](-0.8,-0.8)
\end{pspicture}
\end{document}​

在此处输入图片描述

相关内容