7

I am trying to draw like this picture enter image description here

I tried

\documentclass[border=2 mm,12pt]{standalone}
\usepackage{fouriernc}
\usepackage{tikz}
\usepackage{tikz-3dplot}
\begin{document}
    \tdplotsetmaincoords{70}{180}
    \begin{tikzpicture}[tdplot_main_coords,line join = round, line cap = round]
        \coordinate (A) at (0,0,0);
        \coordinate (S) at (7/2,{-7*sqrt(3)/6},14/3);
        \coordinate (C) at (7,0,0);
        \coordinate (B) at  ({65/14},{15*sqrt(3)/14},0);
        \coordinate (I) at  (7/2,{-7*sqrt(3)/6},0) ;

        \draw[very thick] (A) -- (B) (B) -- (C)  (S) --  (A) (S) --(B) (S) -- (C) ;

        \draw[dashed ] (C) -- (A) (I) -- (A) (I) -- (B) (I) --(C) (S) --(I) ;
        \draw[very thick] (I) circle ({7/sqrt(3)});
        \foreach \point/\position in {A/below,B/below,C/below,
            I/below,S/above}
        {
            \fill (\point) circle (1.5pt);
            \node[\position=3pt] at (\point) {$\point$};
        }
          \end{tikzpicture}
  \end{document}

and got

enter image description here

How to draw dashed arc of a circle behind pyramid?

2 Answers2

5

One thing that always works is the reverseclip trick.

\documentclass[border=2 mm,12pt]{standalone}
\usepackage{fouriernc}
\usepackage{tikz}
\usepackage{tikz-3dplot}
% based on https://tex.stackexchange.com/a/12033/121799
\tikzset{reverseclip/.style={insert path={(current bounding box.south west)rectangle 
  (current bounding box.north east)} }}
\begin{document}
    \tdplotsetmaincoords{70}{180}
    \begin{tikzpicture}[tdplot_main_coords,line join = round, line cap = round]
        \coordinate (A) at (0,0,0);
        \coordinate (S) at (7/2,{-7*sqrt(3)/6},14/3);
        \coordinate (C) at (7,0,0);
        \coordinate (B) at  ({65/14},{15*sqrt(3)/14},0);
        \coordinate (I) at  (7/2,{-7*sqrt(3)/6},0) ;

        \draw[very thick] (A) -- (B) (B) -- (C)  (S) --  (A) (S) --(B) (S) -- (C) ;

        \draw[dashed ] (C) -- (A) (I) -- (A) (I) -- (B) (I) --(C) (S) --(I) ;
        \path (I) circle ({1.01*7/sqrt(3)});
        \begin{scope}
         \clip (S) -- (C) -- (B) -- (A) -- cycle [reverseclip];
         \draw[very thick] (I) circle ({7/sqrt(3)});
        \end{scope}
        \begin{scope}
         \clip (S) -- (C) -- (B) -- (A);
         \draw[dashed] (I) circle ({7/sqrt(3)});
        \end{scope}
        \foreach \point/\position in {A/below,B/below,C/below,
            I/below,S/above}
        {
            \fill (\point) circle (1.5pt);
            \node[\position=3pt] at (\point) {$\point$};
        }
    \end{tikzpicture}
\end{document}

enter image description here

  • @minhthien_2016 Yes, you are right. Sorry! I fixed it. (I actually do not know what went wrong, perhaps I forgot to press command+c so that the older version was in the buffer.) –  Mar 11 '19 at 03:08
  • A new question at here https://tex.stackexchange.com/questions/479756/how-can-i-get-full-line-of-circle-of-this-picture?noredirect=1#comment1212240_479756 – minhthien_2016 Mar 16 '19 at 11:48
3

Using the intersections library, the code would look like this (I have highlighted in red the required line):

enter image description here

\documentclass[border=2 mm,12pt]{standalone}
\usepackage{fouriernc}
\usepackage{tikz}
\usepackage{tikz-3dplot}
\usetikzlibrary{intersections}
\colorlet{bgcolor}{white}

\tikzset{
    overdraw/.style={preaction={draw,bgcolor,line width=#1}},
    overdraw/.default=2pt
}

\begin{document}
    \tdplotsetmaincoords{70}{180}
    \begin{tikzpicture}[tdplot_main_coords,line join = round, line cap = round]
        \coordinate (A) at (0,0,0);
        \coordinate (S) at (7/2,{-7*sqrt(3)/6},14/3);
        \coordinate (C) at (7,0,0);
        \coordinate (B) at  ({65/14},{15*sqrt(3)/14},0);
        \coordinate (I) at  (7/2,{-7*sqrt(3)/6},0) ;

        \draw[very thick] (A) -- (B) (B) -- (C) (S) --(B);
        \draw[very thick,name path=SC] (S) -- (C);
        \draw[very thick,name path=SA] (S) --  (A);

        \draw[very thick,name path=CIR] (I) circle ({7/sqrt(3)});

        \path [name intersections={of=SC and CIR, by={C,C'}}];
        \path [name intersections={of=SA and CIR, by={D,D'}}];
        \draw[red,dashed,overdraw] (C') to [bend right=-10] (D'); %to draw the curved path
        \draw[dashed] (C) -- (A) (I) -- (A) (I) -- (B) (I) --(C) (S) --(I) ;
        \foreach \point/\position in {A/below,B/below,C/below,
            I/below,S/above}
        {
            \fill (\point) circle (1.5pt);
            \node[\position=3pt] at (\point) {$\point$};
        }
          \end{tikzpicture}
  \end{document} 
subham soni
  • 9,673
  • I think, the lines don't cut path=CIR. – minhthien_2016 Mar 11 '19 at 03:52
  • @minhthien_2016 - I have updated my answer. – subham soni Mar 11 '19 at 03:57
  • 1
    Please do not get me wrong, but the overdraw style seems to be remarkably similar to what one can find in https://tex.stackexchange.com/a/20874/121799. Wouldn't it be more appropriate to give credit to https://tex.stackexchange.com/a/20874/121799 for this? –  Mar 11 '19 at 07:32
  • @subhamsoni If the line SC cut CIR at C,C', then the line SC line on the plane of the circle, and then, there is not the pyramid. – minhthien_2016 Mar 11 '19 at 09:56