I want to draw this pictures ![ScreenHunter 1067.png](/image?hash=da41f6f2d7c246f047148ff9dc516f6d748de533e802eaf2d88f729b12464b4c) ![ScreenHunter 1068.png](/image?hash=533434280d54a42fea040f100ff3e55ba32919fd793d1e46e392c9080552edf0) I tried ``` \documentclass[tikz,border=3mm]{standalone} \usepackage{tikz-3dplot} %\usetikzlibrary{intersections,calc} \begin{document} \pgfmathsetmacro\th{70} \pgfmathsetmacro\az{70} \tdplotsetmaincoords{\th}{\az} \pgfmathsetmacro\h{3} %height of cylinder \pgfmathsetmacro\R{3} %radius of base \pgfmathsetmacro\v{\h + 3} \pgfmathsetmacro\t{-\R} \begin{tikzpicture} [scale=1, tdplot_main_coords, axis/.style={blue,thick}] \path (0,0,0) coordinate (O) (0,0,\v) coordinate (B) (0,0,\t) coordinate (A); \pgfmathsetmacro\cott{{cot(\th)}} \pgfmathsetmacro\fraction{\R*\cott/(\v-\h)} \pgfmathsetmacro\fractionTwo{\R*\cott/\t} \pgfmathsetmacro\fraction{\fraction<1 ? \fraction : 1} \pgfmathsetmacro\angle{{acos(\fraction)}} \pgfmathsetmacro\angleTwo{{acos(\fractionTwo)}} \pgfmathsetmacro\PhiOne{180+(\az-90)+\angle} \pgfmathsetmacro\PhiTwo{180+(\az-90)-\angle} \pgfmathsetmacro\PhiOneBis{180+(\az-90)+\angleTwo} \pgfmathsetmacro\PhiTwoBis{180+(\az-90)-\angleTwo} \pgfmathsetmacro\sinPhiOne{{sin(\PhiOne)}} \pgfmathsetmacro\cosPhiOne{{cos(\PhiOne)}} \pgfmathsetmacro\sinPhiTwo{{sin(\PhiTwo)}} \pgfmathsetmacro\cosPhiTwo{{cos(\PhiTwo)}} \pgfmathsetmacro\sinPhiOneBis{{sin(\PhiOneBis)}} \pgfmathsetmacro\cosPhiOneBis{{cos(\PhiOneBis)}} \pgfmathsetmacro\sinPhiTwoBis{{sin(\PhiTwoBis)}} \pgfmathsetmacro\cosPhiTwoBis{{cos(\PhiTwoBis)}} \pgfmathsetmacro\sinazp{{sin(\az-90)}} \pgfmathsetmacro\cosazp{{cos(\az-90)}} \pgfmathsetmacro\sinazm{{sin(90-\az)}} \pgfmathsetmacro\cosazm{{cos(90-\az)}} \draw[dashed] (\tdplotmainphi:\R) arc(\tdplotmainphi:\tdplotmainphi+180:\R); \draw[thick] (\tdplotmainphi:\R) arc(\tdplotmainphi:\tdplotmainphi-180:\R); \tdplotdrawarc[tdplot_main_coords,thick]{(0,0,\h)}{\R}{\PhiOne}{360+\PhiTwo}{anchor=north}{} \tdplotdrawarc[tdplot_main_coords,dashed]{(0,0,\h)}{\R}{\PhiTwo}{\PhiOne}{anchor=north}{} \draw[thick] ({\R*cos(\tdplotmainphi)},{\R*sin(\tdplotmainphi)},0 ) -- ({\R*cos(\tdplotmainphi)},{\R*sin(\tdplotmainphi)},\h ); \draw[thick] ({\R*cos(\tdplotmainphi-180)},{\R*sin(\tdplotmainphi-180)},0 ) -- ({\R*cos(\tdplotmainphi-180)},{\R*sin(\tdplotmainphi-180)},\h ); \draw[thick] (B) -- (\R*\cosPhiOne,\R*\sinPhiOne,\h); \draw[thick] (B) -- (\R*\cosPhiTwo,\R*\sinPhiTwo,\h); \draw[thick] (A) -- (\R*\cosPhiOneBis,\R*\sinPhiOneBis,0); \draw[thick] (A) -- (\R*\cosPhiTwoBis,\R*\sinPhiTwoBis,0); \foreach \p in {O,B,A} \draw[fill=black] (\p) circle (1pt); \foreach \p/\g in {O/-45,B/90,A/-90} \path (\p)+(\g:3mm) node{$\p$}; \draw[dashed] (A)--(B) (-\R*\sinazm,-\R*\cosazm,0) -- (-\R*\sinazp,+\R*\cosazp,0) ; \end{tikzpicture} \end{document} ``` ![ScreenHunter 1069.png](/image?hash=8cfd72f76356a055d9551474a8561c978c72aab561c445c0346d937270e089ad) How can I draw them by using `3dtools`?
This is a very simpleminded code. ``` \documentclass[tikz,border=3mm]{standalone} \usetikzlibrary{calc,3dtools} \tikzset{ protect/.code={ \clip[overlay,reset cm,even odd clip,use named path=#1] (-16383.99999pt,-16383.99999pt) rectangle (16383.99999pt,16383.99999pt); }} \begin{document} \begin{tikzpicture} \begin{scope}[3d/install view={phi=30,theta=70}, declare function={R=3;% radius of the base of the cones and cylinder h=2;% height of the cone H=4;% height of the cyclinder }] \path (0,0,0) coordinate (O) % center of base of the lower cone (0,0,H) coordinate (H); % center of base of the upper cone \path[3d/screen coords,save named path=tmp] ([xshift=-R*1cm-0.4pt]O) rectangle ([xshift=R*1cm+0.4pt]H); % % get the correct bounding box \path[opacity=0] (O) pic{3d/cone={r=R,h=-h}}; % draw the part of the lower cone blocked by the cylinder \begin{scope}[3d/visible/.style={draw,very thin,cheating dash}] \clip[use named path=tmp]; \path (O) pic{3d/cone={r=R,h=-h}}; \end{scope} % draw the part of the lower cone not blocked by the cylinder \begin{scope} \tikzset{protect=tmp} \path (O) pic{3d/cone={r=R,h=-h}}; \end{scope} % cylinder mantle \draw[3d/screen coords] ([xshift=-R*1cm]O) -- ([xshift=-R*1cm]H) ([xshift=R*1cm]O) -- ([xshift=R*1cm]H); % upper cone \path (H) pic{3d/cone={r=R,h=h}}; \end{scope} \end{tikzpicture} \end{document} ``` ![Screen Shot 2021-01-09 at 7.55.47 AM.png](/image?hash=784056c9d8c4691af7c55a5c81cc15477b7eed92cc276950d46e19b35e323365)