我怎样才能使用 latex 中的 tikz 绘制下面的图形?

我怎样才能使用 latex 中的 tikz 绘制下面的图形?

请问如何使用 LaTeX 中的 tikz 绘制此图形?

在此处输入图片描述

\documentclass{article}
\usepackage{tikz}

\begin{document}

\begin{tikzpicture}
  \draw (0,0) circle [radius=1cm];
  \draw (1.5cm,0) circle [radius=1cm];
  \draw (0,0) -- (1.5cm,0);
  \draw (0,-1.5cm) -- (0,1.5cm);
\end{tikzpicture}

\end{document}

答案1

解决方案 1 )

这个问题不够具体,无法给出正确的构造。我将tkz-euclide在这里捍卫我的方案,因为如果你只有一个构造,那么它TikZ是完美的,但是如果你正在考虑这种类型的其他图形,或者如果你想调整解决方案,那么我认为tkz-euclide更好。

有必要知道数据是什么。例如,如果给定圆 C1 以及点 C2,那么问题就是找到与中心 C1 和中心 C2 的圆正交的圆。

 \documentclass{article}
\usepackage{tkz-euclide}
\begin{document}

\begin{tikzpicture}[scale=.4]
\tkzDefPoints{0/0/C_1,5/0/A,8/0/C_2}
\tkzDefCircle[orthogonal from=C_2](C_1,A)
\tkzGetSecondPoint{T}


\tkzDrawCircles(C_1,T C_2,T)
\tkzDrawSegments(C_1,T C_2,T)
\tkzDrawLine(C_1,C_2)
\tkzMarkRightAngle[fill=teal,opacity=.2,size=1](C_1,T,C_2)
\tkzDrawPoints(C_1,C_2,T)
\tkzLabelPoints(C_1,C_2)
\tkzLabelPoints[above](T)
\tkzLabelSegment[left](C_1,T){r}
\tkzLabelSegment[right](C_2,T){\gamma}
\tkzLabelSegment[below](C_1,C_2){d}
\tkzLabelCircle[left=10pt](C_1,T)(180){Circle 1}
\tkzLabelCircle[right=10pt](C_2,T)(180){Circle 2}
\end{tikzpicture}
    
\end{document}

现在,如果信息不同,我们可以考虑其他构造。如果您可以提供所有必要的信息,那将会很有趣。

这里要注意的是,最后一行点定义之后只有一行计算。

在此处输入图片描述

请注意,如果您更改了单条数据,则除了已更改的数据之外,您不必更改任何内容。

解决方案2)

如果数据是点C_1并且C_2具有两个相同半径的圆,则只需将第一行替换为:

\tkzDefPoints{-4/0/C_1,4/0/C_2,0/0/O}
\tkzDefLine[mediator](C_1,C_2)  \tkzGetPoints{x}{y}
\tkzInterLC(x,y)(O,C_2) \tkzGetPoints{T}{S}

在此处输入图片描述

这是tkz-elements我正在完成的一个包的解决方案,它允许仅使用 进行计算lua。如果您更喜欢使用TikZ而不是 ,tkz-euclide那么只需替换环境中的内容即可tikzpicture

 \documentclass{article}
\usepackage{tkz-euclide,tkz-elements}
\begin{document}


\begin{elements}
scale = .6
z.C_1 = point: new (0,0)
z.C_2 = point: new (8,0)
z.A = point: new (5,0)
C = circle: new (z.C_1,z.A)
z.S,z.T = C: orthogonal_from (z.C_2)
\end{elements}

\begin{tikzpicture}
\tkzGetNodes
   
\tkzDrawCircles(C_1,T C_2,T)
\tkzDrawSegments(C_1,T C_2,T)
\tkzDrawLine(C_1,C_2)
\tkzMarkRightAngle[fill=teal,opacity=.2,size=1](C_1,T,C_2)
\tkzDrawPoints(C_1,C_2,T)
\tkzLabelPoints(C_1,C_2)
\tkzLabelPoints[above](T)
\tkzLabelSegment[left](C_1,T){r}
\tkzLabelSegment[right](C_2,T){\gamma}
\tkzLabelSegment[below](C_1,C_2){d}
\tkzLabelCircle[left=10pt](C_1,T)(180){Circle 1}
\tkzLabelCircle[right=10pt](C_2,T)(180){Circle 2}
\end{tikzpicture}
    
\end{document} 

答案2

作为初步尝试,希望在此论坛上表明人们已通过提出最小代码进行了尝试。

否则,这里有一个使用 Tikz 不同可能性的解决方案。代码已注释,我邀请您在文档中查找所使用的不同工具

\documentclass[11pt]{article} 

%\usepackage[margin=1cm]{geometry}

\usepackage{tikz}
\usetikzlibrary{calc,intersections,angles}

\begin{document}
\begin{tikzpicture}

%Drawing of the first circle
\draw[red,name path=circleA] (0,0) coordinate(C1) circle (4cm);


%first segment from C1 (arbitrary angle, end noted C3)

\draw [dashed] (C1) -- (50:4) coordinate(C3);

%path of an orthogonal segment from end C3
\draw[dashed,name path=lineC3] (C3)-- ($(C3)!6cm!90:(C1)$);


%drawing a segment from C1
\draw[dashed, name path=lineC1] (C1) -- ++(10cm,0);


%Determination of the intersection of the two segments (noted C2)
\path[name intersections={of=lineC1 and lineC3, by=C2}];


%calculating the distance between C2 and C3 and drawing the circle with radius C2C3
\draw[blue] let \p1 = ($ (C2) - (C3) $),
\n2 = {veclen(\x1,\y1)}
in
(C2) circle (\n2);


%Drawing of the triangle (indications of points and distances)
\draw[thick] (C1)node[below]{$C_1$}
    -- node[sloped,above]{$R$}(C3) 
    -- node[sloped,above]{$r$}(C2) node[below]{$C_2$} 
     -- node[below]{$d$} cycle;

%ortho symbol plot
\draw pic [draw,red,thick] {right angle = C1--C3--C2};

\end{tikzpicture}

\end{document}

在此处输入图片描述

答案3

您可以使用 tkz-euclide 包轻松完成此操作。您可以参考手册了解不同示例。您可以通过更改坐标值来更改圆的半径。

\documentclass[border=5mm]{standalone}

\usepackage{tkz-euclide}



\begin{document}
\begin{tikzpicture}[scale=0.4]
  \tkzSetUpLine[line width=1pt]
  \tkzSetUpLabel[font=\normalsize,black]
  % \tkzSetUpStyle[red,auto]{label style}
  \tkzSetUpPoint[size=2,color=black]
  \tkzDefPoint(0,0){C1}
  \tkzDefPoint(7,0){A}
  \tkzDefPoint(10,0){C2}
  \tkzDefPoint(3,0){B}

  \tkzDrawCircle[very thick,black](C1,A)
  \tkzDrawCircle[very thick,black](C2,B)
  \tkzInterCC(C1,A)(C2,B)
  \tkzGetFirstPoint{I}
  \tkzDrawSegments(C1,C2 C1,I C2,I)

  \tkzMarkRightAngle[size=1, thick](C1,I,C2)
  \tkzLabelPoint[below left](C1){\(C_1\)}
  \tkzLabelPoint[below right](C2){\(C_2\)}
  \tkzLabelSegment[left](C1,I){R}
  \tkzLabelSegment[right](C2,I){r}
  \tkzLabelSegment[below](C1,C2){d}
  \tkzLabelCircle[left=10pt](C1,A)(180){Circle 1}
  \tkzLabelCircle[right=10pt](C2,B)(180){Circle 2}

\end{tikzpicture}
\end{document}

在此处输入图片描述

答案4

答案带有一点三角函数,它接受不同的半径值。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\def\Radius{1.2}
\def\radius{1.6}

  %%  If a right triangle is required, keep the line calculation below. Otherwise, choose an arbitrary value for the distance between centers.
\pgfmathsetmacro\CenterDistance{(\Radius^2+\radius^2)^0.5}

\def\ss{0.2}
\pgfmathsetmacro\theta{acos((\Radius^2+\CenterDistance^2-\radius^2)/(2*\CenterDistance*\Radius))}
\pgfmathsetmacro\height{\Radius*sin(\theta)}
\pgfmathsetmacro\mLeg{\Radius*cos(\theta)}

\draw[thick] (0,0) node[left] {$C_1$} circle (\Radius);
\node[below left] at (210:\Radius) {Circle 1};
\draw[thick] (\CenterDistance,0) node[right] {$C_2$} circle (\radius);
\path (\CenterDistance,0) ++ (-30:\radius) node[below right]{Circle 2};
\draw[thick] (0,0) -- (\CenterDistance,0) -- node[above right] {$r$} (\mLeg,\height) -- node[above left] {$R$} cycle;
\node[below] at (\mLeg,0) {$d$};
  %%  If it is not a right triangle, delete the two lines below.
\draw[thick] (0,0) (\mLeg,\height) -- ([turn]-90:\ss) coordinate (aa) -- ([turn]-90:\ss) -- ([turn]-90:\ss) coordinate (bb);
\fill ($(aa)!0.5!(bb)$) circle (0.03);
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容