我怎样才能获得该图片的完整圆线?

我怎样才能获得该图片的完整圆线?

根据我在这里的问题如何在金字塔后面绘制圆的虚线弧?

我试过

\documentclass[border=2 mm,12pt,tikz]{standalone}
\usepackage{tikz,tikz-3dplot} 
\usepackage{tkz-euclide}
 \usetikzlibrary{intersections,calc,backgrounds}
\usepackage{fouriernc}

 \tikzset{reverseclip/.style={insert path={(current bounding box.south west)rectangle 
            (current bounding box.north east)} }}
 \begin{document}

\tdplotsetmaincoords{70}{290}
 \begin{tikzpicture}[tdplot_main_coords,line join = round, line cap = round]
 \pgfmathsetmacro\a{4*sqrt(2)/2}
\pgfmathsetmacro\h{2*\a*sqrt(2)/2}
 % definitions
 \path
 coordinate (O) at  (0,0,0)
 coordinate(A) at (\a,0,0)
coordinate (B) at (0,\a,0) 
coordinate (C) at (-\a,0,0)                    
coordinate (D) at (0,-\a,0) 
coordinate (S) at (0,0,\h)                

;
     \draw [thick] (S) -- (B) -- (C) -- cycle;
\draw [thick] (S) -- (C) -- (D) -- cycle;
 \draw[dashed,thick]
       (A) -- (B)  (A) -- (C)  (B) -- (D) (S)--(A) (A)--(D) (S)--(O);
\begin{scope}

\path (O) circle ({\a});
\clip (S) --   (B) -- (C)   --  (D) -- cycle [reverseclip];
\draw[very thick] (O) circle ({\a});
\end{scope}
\begin{scope}
\clip (S) --   (B) -- (C)   --  (D) --  cycle;
\draw[dashed] (O) circle ({\a});
\end{scope}


 \foreach \point/\position in {A/above,B/left,C/below,D/right,O/below,S/above}
 {
   \fill (\point) circle (1.8pt);
   \node[\position=1.5pt] at (\point) {$\point$};
 }

\end{tikzpicture}
\end{document}

在此处输入图片描述

我怎样才能获得该图片的完整圆线?

答案1

发生这种情况的原因是,您目前使用的reverseclip线宽current bounding box不够大,无法容纳您要绘制的圆。在您的图片中,最简单的解决方法可能是在绘制圆之前先绘制标签。

\documentclass[border=2 mm,12pt,tikz]{standalone}
\usepackage{tikz,tikz-3dplot} 
\usepackage{tkz-euclide}
 \usetikzlibrary{intersections,calc,backgrounds}
\usepackage{fouriernc}

 \tikzset{reverseclip/.style={insert path={(current bounding box.south west)rectangle 
            (current bounding box.north east)} }}
 \begin{document}

\tdplotsetmaincoords{70}{290}
 \begin{tikzpicture}[tdplot_main_coords,line join = round, line cap = round]
 \pgfmathsetmacro\a{4*sqrt(2)/2}
\pgfmathsetmacro\h{2*\a*sqrt(2)/2}
 % definitions
 \path
 coordinate (O) at  (0,0,0)
 coordinate(A) at (\a,0,0)
coordinate (B) at (0,\a,0) 
coordinate (C) at (-\a,0,0)                    
coordinate (D) at (0,-\a,0) 
coordinate (S) at (0,0,\h)                

;
     \draw [thick] (S) -- (B) -- (C) -- cycle;
\draw [thick] (S) -- (C) -- (D) -- cycle;
 \draw[dashed,thick]
       (A) -- (B)  (A) -- (C)  (B) -- (D) (S)--(A) (A)--(D) (S)--(O);
 \foreach \point/\position in {A/above,B/left,C/below,D/right,O/below,S/above}
 {
   \fill (\point) circle (1.8pt);
   \node[\position=1.5pt] at (\point) {$\point$};
 }

\begin{scope}
\path(O) circle ({\a});
\clip (S) --   (B) -- (C)   --  (D) -- cycle [reverseclip];
\draw[very thick] (O) circle ({\a});
\end{scope}
\begin{scope}
\clip (S) --   (B) -- (C)   --  (D) --  cycle;
\draw[dashed] (O) circle ({\a});
\end{scope}


\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

运行xelatex

\documentclass[pstricks,border=15pt]{standalone}
\usepackage{pst-3dplot}%
\begin{document}
\begin{pspicture}[showgrid=false](-4,-2)(4,6)
\psset{Alpha=30,Beta=15}
\pstThreeDLine[arrows=*-*,linestyle=dashed](-2,-2,0)(0,0,5)
\pstThreeDLine[arrows=*-*](2,-2,0)(0,0,5)
\pstThreeDLine[arrows=*-*](-2,2,0)(0,0,5)
\pstThreeDLine[arrows=*-*](2,2,0)(0,0,5)
\pstThreeDLine(2,-2,0)(2,2,0)(-2,2,0)
\pstThreeDLine[linestyle=dashed](2,-2,0)(-2,-2,0)(-2,2,0)(2,-2,0)
\pstThreeDLine[linestyle=dashed](-2,-2,0)(2,2,0)
\pstThreeDLine[linestyle=dashed,arrows=*-](0,0,0)(0,0,5)
\pstThreeDEllipse[linestyle=dashed](0,0,0)(2,2,0)(-2,2,0)
\pstThreeDEllipse[beginAngle=-90,endAngle=140,linewidth=1.5pt](0,0,0)(2,2,0)(-2,2,0)
\pstThreeDPut(-2.4,-2.2,0.2){\large$A$}
\pstThreeDPut(2.2,-2.2,0.2){\large$B$}
\pstThreeDPut(2.4,2.2,-0.2){\large$C$}
\pstThreeDPut(-2.4,2.2,0.2){\large$D$}
\pstThreeDPut(-0.2,0,-0.2){\large$O$}
\pstThreeDPut(0,0,5.3){\large$S$}
\end{pspicture}
\end{document}

在此处输入图片描述

相关内容