使用 TikZ 在非 x-平面上绘制圆圈

使用 TikZ 在非 x-平面上绘制圆圈

假设我正在绘制一幅 3D 图片。现在我想在 yz 平面上绘制一个透视正确的圆,但 TikZ 似乎无法做到这一点。人们只能在 xy 平面上绘制圆。此外,采用两个半径的椭圆也只在 xy 平面上绘制。我知道我可以用来rotate旋转椭圆,但这并不简单,因为它涉及计算旋转角度和半径。

那么,有什么办法可以告诉TikZ您在某个平面上进行绘制吗?或者还有其他花哨的包吗?

仅供说明:

\documentclass[parskip]{scrartcl}
\usepackage[margin=15mm]{geometry}
\usepackage{tikz}

\begin{document}

\begin{tikzpicture}
\draw (0,0,0) -- (0,4,0) -- (0,4,4) -- (0,0,4) -- cycle;
\draw (0,2,2) circle (2);
\end{tikzpicture}

\end{document}

产生

在此处输入图片描述

显然,我想在 yz 平面上画一个圆。这看起来像一个椭圆,完美地适合 yz 平面正方形(由于透视,它看起来像一个平行四边形)。

答案1

这是使用 3d 库可以绘制的两个示例。第一个示例已被修改,因为阴影颜色有问题。

\documentclass[]{article}
\usepackage{tikz}
\usetikzlibrary{3d}

\usepackage[active,tightpage]{preview}
\PreviewEnvironment{tikzpicture}
\setlength\PreviewBorder{5pt}%

\begin{document}

\begin{tikzpicture}
     [x={(-0.2cm,-0.4cm)}, y={(1cm,0cm)}, z={(0cm,1cm)}, 
     scale=3,
     fill opacity=0.80,
     color={gray},bottom color=white,top color=black]

 \tikzset{zxplane/.style={canvas is zx plane at y=#1,very thin}}
 \tikzset{yxplane/.style={canvas is yx plane at z=#1,very thin}}

 \begin{scope}[yxplane=-1]
   \shade[draw] (-1,-1) rectangle (1,1);
   \draw (0,0) circle[radius=1cm] ;
 \end{scope}

 \begin{scope}[zxplane=-1]
       \shade[draw] (-1,-1) rectangle (1,1);
 \end{scope}

 \begin{scope}[zxplane=1]
   \shade[draw] (-1,-1) rectangle (1,1);
 \end{scope}

 \begin{scope}[yxplane=1]
       \shade[draw] (-1,-1) rectangle (1,1);
     \end{scope}
 \end{tikzpicture} 



 \begin{tikzpicture}[scale=4]
   \begin{scope}[canvas is zy plane at x=0]
     \draw (0,0) circle (1cm);
     \draw (-1,0) -- (1,0) (0,-1) -- (0,1);
   \end{scope}

   \begin{scope}[canvas is zx plane at y=0]
     \draw (0,0) circle (1cm);
     \draw (-1,0) -- (1,0) (0,-1) -- (0,1);
   \end{scope}

   \begin{scope}[canvas is xy plane at z=0]
     \draw (0,0) circle (1cm);
     \draw (-1,0) -- (1,0) (0,-1) -- (0,1);
   \end{scope}
 \end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

pst-3dplotpstricks套件并提供宏来在 3D 平面上打印常规 2D 东西(以及其它东西)。

这是一个最小的例子,在三个正交平面上绘制一个圆:xy和:xzyz

在此处输入图片描述

\documentclass{article}
\usepackage{graphicx}% http://ctan.org/pkg/graphicx
\usepackage{pst-3dplot}% http://ctan.org/pkg/pst-3dplot
\usepackage{xcolor}% http://ctan.org/pkg/xcolor
\begin{document}

\begin{pspicture}(5,5)
  \psset{linewidth=0.5pt,linecolor=black!50,unit=2cm}%
  \pstThreeDLine(-2,0,0)(2,0,0)% x-axis
  \pstThreeDLine(0,-2,0)(0,2,0)% y-axis
  \pstThreeDLine(0,0,-2)(0,0,2)% z-axis

  \psset{linewidth=1pt,linecolor=black} 
  \pstPlanePut[plane=xy](0,0,0){%
    \pscircle[linestyle=solid](0,0){2cm}%
    \rput{90}(-2.5cm,2.5cm){XY-plane}%
  }
  \pstPlanePut[plane=xz](0,0,0){%
    \pscircle[linestyle=dashed](0,0){2cm}%
    \rput{0}(-2.5cm,2.5cm){\reflectbox{XZ-plane}}%
  }
  \pstPlanePut[plane=yz](0,0,0){%
    \pscircle[linestyle=dotted](0,0){2cm}%
    \rput{0}(-2.5cm,2.5cm){YZ-plane}%
  }
\end{pspicture}

\end{document}

包括的唯一理由graphicx是为了\reflectbox

Alpha可以使用不同的或值Beta(球面坐标的两个分量)或使用旋转角度\RotX\RotY来修改对象的透视\RotZ。请参阅包装文档更多示例。

相关内容