Wie kann ich die Kreislinie dieses Bildes vollständig darstellen?

Wie kann ich die Kreislinie dieses Bildes vollständig darstellen?

Basierend auf meiner Frage hierWie zeichnet man einen gestrichelten Kreisbogen hinter einer Pyramide?

Ich habe es versucht

\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}

Bildbeschreibung hier eingeben

Wie kann ich die Kreislinie dieses Bildes vollständig darstellen?

Antwort1

reverseclipDies liegt daran, dass die Größe des von Ihnen verwendeten Kreises current bounding boxnicht ausreicht, um einen Kreis mit der Linienbreite darzustellen, die Sie zeichnen möchten. In Ihrem Bild besteht die vielleicht einfachste Lösung darin, die Beschriftungen vor dem Zeichnen des Kreises zu zeichnen.

\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}

Bildbeschreibung hier eingeben

Antwort2

Ausführen mit 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}

Bildbeschreibung hier eingeben

verwandte Informationen