![要绘制这样的图形,我需要什么代码?](https://linux22.com/image/343225/%E8%A6%81%E7%BB%98%E5%88%B6%E8%BF%99%E6%A0%B7%E7%9A%84%E5%9B%BE%E5%BD%A2%EF%BC%8C%E6%88%91%E9%9C%80%E8%A6%81%E4%BB%80%E4%B9%88%E4%BB%A3%E7%A0%81%EF%BC%9F.png)
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{intersections}
\begin{document}
\begin{tikzpicture}[scale=5]
\coordinate[label=above left:$A$] (A) at (95:1);
\coordinate[label=below left:$B$] (B) at (200:1);
\coordinate[label=below left:$D$] (D) at (-110:1);
\coordinate[label=below right:$C$] (C) at (-60:1);
\draw[name path=circ] (0,0) circle (1);
\path[name path=AC] (A) -- ($(A)!1.2!30:(B)$);
% \path[name path=AC] (D) -- ($(D)!1.2!-15:(B)$);
% \path[name intersections={of=AC and circ, by={[label=below right:$C$]C}}];
% \path[name intersections={of=BD and circ, by={[label=above right:$D$]D}}];
\draw[line join=bevel] (A) -- (B) -- cycle;
\draw[line join=bevel] (A) -- (D) -- cycle;
\draw[line join=bevel] (A) -- (C) -- cycle;
\draw[line join=bevel] (D) -- (C) -- cycle;
\draw[line join=bevel] (B) -- (D) -- cycle;
\end{tikzpicture}
\end{document}
答案1
看一下下面的代码:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[scale=5]
\draw[blue] (0,0) circle (1);
\node[circle, fill=orange, label=above left :$A$] (A) at (95:1) {};
\coordinate[label=below left :$B$] (B) at (200:1);
\coordinate[label=below left :$D$] (D) at (-110:1);
\coordinate[label=below right :$C$] (C) at (-60:1);
\draw[blue] (A) -- (B) ;
\draw[blue] (A) -- (D) ;
\draw[blue] (A) -- (C) ;
\draw[blue,shorten <= -30,shorten >= -30] (D) -- (C);
\draw[blue] (B) -- (D) node[midway,above,font=\tiny,color=black]{$\theta_{1}$};
\end{tikzpicture}
\end{document}
编译后得到
这并非您真正想要的,但是您已经掌握了获得您想要的东西的所有要素。
答案2
版本元帖子,包裹在luamplib
. 用 编译lualatex
。
\RequirePackage{luatex85}
\documentclass[border=5mm]{standalone}
\usepackage{luamplib}
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}
beginfig(1);
path circ;
pair A,B,C,D;
circ = fullcircle scaled 8cm;
A = point 95*8/360 of circ;
B = point 200*8/360 of circ;
C = point -60*8/360 of circ;
D = point -110*8/360 of circ;
drawoptions(withcolor 1/3[blue,white]);
draw circ;
draw A--B;
draw A--C;
draw A--D;
draw (-1/4)[B,D] -- 5/4[B,D];
draw (-1/4)[C,D] -- 5/4[C,D];
drawoptions();
forsuffixes @=A,B,C,D:
label("$" & str @ & "$", @ scaled 10/9);
fill fullcircle scaled dotlabeldiam shifted @ withcolor red+1/2green;
endfor
label.urt("$e_1$", 1/2[B,D]);
label.top("$e_2$", 1/2[C,D]);
endfig;
\end{mplibcode}
\end{document}
笔记
这些行
draw (-1/4)[B,D] -- 5/4[B,D];
draw (-1/4)[C,D] -- 5/4[C,D];
向您展示一种使用 Metapost 绘制“穿过”两点的线的简单方法,使用中介语法。一般来说,f[a,b]
给出穿过的线上的一个点a
,b
其中是从到的f
距离的一小部分,因此给出中点,依此类推。 a
b
1/2[a,b]
但请注意,你需要在负中位数周围加上括号,以防止 MP 将其解释为-(1/4[B,D])
这不是你想要的点。我也可以写成
draw 5/4[D,B] -- 5/4[B,D];
draw 5/4[D,C] -- 5/4[C,D];
避免这个问题。也许更美丽,但也更难遵循。
循环forsuffixes
使用@
作为循环变量。scaled
定位标签的技巧只有在图表以原点为中心时才有效。