画一个蹄状结构

画一个蹄状结构

左右曲线的半径比图中更宽,但两侧对称,顶部和底部均为矩形。在此处输入图片描述

答案1

简单代码:

在此处输入图片描述

\documentclass[tikz]{standalone}
\usetikzlibrary{calc}
\begin{document}

\begin{tikzpicture}[outer sep=.2cm,inner sep=0pt,line width=.7pt,line join=round]
\draw (-60:3)arc(-60:60:3) (-60:5)arc(-60:60:5);
\draw [rotate=180](-60:3)arc(-60:60:3) (-60:5)arc(-60:60:5);

\draw (60:3)--(60:5)node[above]{c}--coordinate[label=above:b](b)(120:5)node[above]{a}--(120:3)--coordinate(b')(60:3) 
(240:3)coordinate(m')--(240:5)coordinate[label=below:m](m)--(-60:5)coordinate[label=below:h](h)--(-60:3)coordinate(h')--(240:3);

\draw(b)--(b');
\foreach \pos/\lett in {0/i,1/j,2/k,3/l}
\draw ($(h')!\pos/3!(m')$)--(h-|{$(h')!\pos/3!(m')$}) node[below]{\lett};

\foreach \ang/\lett/\lettt in {-36/g/q,-12/f/p,12/e/o,36/d/n}{%
\draw (\ang:3)--(\ang:5) node at (\ang:5.2) {\lett};
\draw[rotate=180] (\ang:3)--(\ang:5) node at (\ang:5.2) {\lettt};}
\end{tikzpicture}

\end{document}

答案2

可能的解决方案

\documentclass{standalone}

\usepackage{tikz}  




\begin{document}

\def \f {3}
\def \r {1.5}

\begin{tikzpicture}[ultra thick, blue!85] 


\foreach \a in {10,30,50,310,330,350}
\draw 
( {\f*cos(\a)}, {\f*sin(\a)} ) -- ( {(\r*\f)*cos(\a)}, {(\r*\f)*sin(\a)} );

\foreach \a in {130,150,170,190,210,230}
\draw 
( {\f*cos(\a)}, {\f*sin(\a)} ) -- ( {(\r*\f)*cos(\a)}, {(\r*\f)*sin(\a)} );

\draw ( {\f*cos(50)}, {\f*sin(50)} ) -- ( {\f*cos(130)}, {\f*sin(130)} );
\draw ( {\r*\f*cos(50)}, {\r*\f*sin(50)} ) -- ( {\r*\f*cos(130)}, {\r*\f*sin(130)} );

\draw ( {\f*cos(230)}, {\f*sin(230)} ) -- ( {\f*cos(310)}, {\f*sin(310)} );
\draw ( {\r*\f*cos(230)}, {\r*\f*sin(230)} ) -- ( {\r*\f*cos(310)}, {\r*\f*sin(310)} );



\draw ({\f*cos(310)}, {\f*sin(310)}) to[bend right=51] ({\f*cos(50)}, {\f*sin(50)});
\draw ({\r*\f*cos(310)}, {\r*\f*sin(310)}) to[bend right=52] ({\r*\f*cos(50)}, {\r*\f*sin(50)});

\draw ({\f*cos(130)}, {\f*sin(130)}) to[bend right=51] ({\f*cos(230)}, {\f*sin(230)});
\draw ({\r*\f*cos(130)}, {\r*\f*sin(130)}) to[bend right=52] ({\r*\f*cos(230)}, {\r*\f*sin(230)});


\draw ( 0, 2.3 ) -- ( 0,3.45 ) node[above] {?};
\draw ( .8, -2.3 ) -- ( .8,-3.45 )node[below] {j};
\draw ( 1.92, -2.3 ) -- ( 1.92,-3.45 )node[below] {i};
\draw ( -.8, -2.3 ) -- ( -.8,-3.45 )node[below] {k};
\draw ( -1.92, -2.3 ) -- ( -1.92,-3.45 )node[below] {l};

\node [right] at ( {\r*\f*cos(50)}, {\r*\f*sin(50)} )   {?};
\node [right] at ( {\r*\f*cos(30)}, {\r*\f*sin(30)} )   {d};
\node [right] at ( {\r*\f*cos(10)},  {\r*\f*sin(10)} )   {e};
\node [right] at ( {\r*\f*cos(350)}, {\r*\f*sin(350)} ) {f};
\node [right] at ( {\r*\f*cos(330)}, {\r*\f*sin(330)} ) {q};
\node [right] at ( {\r*\f*cos(310)}, {\r*\f*sin(310)} ) {h};

\node [left] at ( {\r*\f*cos(130)}, {\r*\f*sin(130)} )  {?};
\node [left] at ( {\r*\f*cos(150)}, {\r*\f*sin(150)} ) {v};
\node [left] at ( {\r*\f*cos(170)}, {\r*\f*sin(170)} ) {p};
\node [left] at ( {\r*\f*cos(190)}, {\r*\f*sin(190)} ) {o};
\node [left] at ( {\r*\f*cos(210)}, {\r*\f*sin(210)} ) {a};
\node [left] at ( {\r*\f*cos(230)}, {\r*\f*sin(230)} ) {m};
\end{tikzpicture}



\end{document}

在此处输入图片描述

相关内容