重新创建具有固定基线和高度的正方形(3d)

重新创建具有固定基线和高度的正方形(3d)

我正在尝试重新创建下面的图像,尽可能接近。

考试方

重点是底部的周长加上立方体的高度需要为 30。这样得出

30 = 4x + h

所以我希望能够绘制立方体,其中 x 的值会发生变化。以下是我目前所做的

\documentclass{minimal}
\usepackage{pgfplots,tikz}
\usetikzlibrary{shapes,arrows,calc}
\begin{document}

\newcommand\pgfmathsinandcos[3]{% 
  \pgfmathsetmacro#1{sin(#3)}% 
  \pgfmathsetmacro#2{cos(#3)}% 
}

\begin{tikzpicture}

\pgfmathsetmacro\AngleFuite{30}
\pgfmathsetmacro\coeffReduc{.3}
\pgfmathsetmacro\clen{2}
\pgfmathsinandcos\sint\cost{\AngleFuite}

\begin{scope} [x     = {(\coeffReduc*\cost,-\coeffReduc*\sint)},
               y     = {(1cm,0cm)}, 
               z     = {(0cm,1cm)}]

\pgfmathsetmacro{\x}{5} \pgfmathsetmacro{\h}{30-4*\x}

\path coordinate (A) at (-\h/2,\x/2,\x/2) 
      coordinate (B) at (-\h/2,-\x/2,\x/2)
      coordinate (C) at (-\h/2,-\x/2,-\x/2)
      coordinate (D) at (-\h/2,\x/2,-\x/2)
      coordinate (A1) at (\h/2,\x/2,\x/2)
      coordinate (B1) at (\h/2,-\x/2,\x/2)
      coordinate (C1) at (\h/2,-\x/2,-\x/2)
      coordinate (D1) at (\h/2,\x/2,-\x/2)
      coordinate[label=$h$,left=0.65em] (M1) at ($ (B)!.5!(C) $)
      coordinate[label=$x$,below=2em] (M2) at ($ (C1)!.5!(C) $)
      coordinate[label=$x$,below=1.75em] (M3) at ($ (C1)!.5!(D1) $);

\fill [blue, fill opacity = 0.2]   (A)--(B)--(C)--(D) -- cycle;
\fill [blue, fill opacity = 0.3]   (C)--(D)--(D1)--(C1) -- cycle;
\fill [blue, fill opacity = 0.2]   (A1)--(B1)--(C1)--(D1) -- cycle;
\fill [blue, fill opacity = 0.2]   (B1)--(C1)--(C)--(B) -- cycle;
\fill [blue, fill opacity = 0.1]   (A1)--(D1)--(D)--(A) -- cycle;

\draw (A) -- (B) -- (C) -- (D) -- (A) -- (A1) -- (B1) -- (C1) -- (D1) -- (A1) ;
\draw (B) -- (B1) ; \draw (C) -- (C1) ; \draw (D) -- (D1) ;

\end{scope}

\end{tikzpicture}   

\end{document}

我的主要问题是代码非常混乱。而且仍然不能完全按照我的要求完成。我仍然无法正确旋转立方体,背景线没有阴影,整个坐标系统看起来非常混乱和不专业。如果图片再小一点就更好了,我试过缩放整个图片,但遗憾的是这也缩小了标签。

有没有什么建议可以得到更好的代码,或者改进我的方法?

我的尝试

答案1

运行xelatex

\documentclass[pstricks]{standalone}
\usepackage{pst-solides3d}
\begin{document}

\psset{Decran=15,viewpoint=20 20 50 rtp2xyz,lightsrc=viewpoint}
\multido{\iX=1+1}{7}{%
\begin{pspicture}(-5,-5)(5,13)
\psSolid[object=parallelepiped,
         a=\iX,b=a,c=30 a 4 mul sub,
         rm=0,incolor=blue!40,hollow,
         fillcolor=red!80,
         action=draw**]
\rput[r](5,5){\huge$x=\iX$}
\end{pspicture}
\clearpage}

\end{document}

在此处输入图片描述

相关内容