Tikzはx軸と水平線で囲まれた円の断面を描画します

Tikzはx軸と水平線で囲まれた円の断面を描画します

私は tikz を初めて使用しますが、y = 1 の線、x 軸、x^2 + y^2 <= 2 で定義される円で囲まれた次の陰影領域を描画したいと考えています。次の図は、目的の結果を示しています。どうすればよいでしょうか?

Tikzに望むこと

答え1

一般的にはTobiのアドバイスに従うことをお勧めしますが、これは非常に簡単なので、とにかく答えます。また、冒頭のチュートリアルを見ていない場合は、TikZ マニュアル、そうすることをお勧めします。最初の章 (第 2 章) では、そのような図を作成するために必要なすべてのことを学ぶことができます。


軸を描くのは問題ないと思います。2 本の直線だけです。

切り取られた円は、2つの円弧と2つの直線で構成されます。円弧を描くには、

arc[start angle=<degrees>, end angle=<degrees>, radius=<length>]

start angleは、円の からまでの部分を反時計回りに描きますend angle。 ( とすることもできますarc[start angle=<degrees>, delta angle=<degrees>, radius=<length>]。 はdelta angle弧の長さを度で示します。)

円の一番右の点から描き始めるとします。 が にあることはわかっているので(2,0)

\draw (2,0) ...

このポイントの下にラベルを追加したいのですが、後で追加することもできますが、この場合は同時に追加すると便利です。テキストは次のように追加しますnode [<options>] {<text>}

\draw (2,0) node[below] {2} ...

(ノードを個別に追加する場合は、 を実行できます\node [<options>] at (<coordinate>) {<text>};。)

そこから、角度 0 から始めて 30 度 (sin(30) = 0.5 のため) の円弧を描きます。上記の説明に従ってください。

\draw (2,0) node[below] {2} 
       arc[start angle=0, end angle=30, radius=2] node[right] {1}...

ここで、その円弧の終点の右側にラベルも追加しました。

次の部分は、左の円弧が始まるところまで直線を描くことです。x/y 座標を手動で計算することも、座標内で直接計算することもできますが、次のように指定される極座標を使用する方が便利です(<angle> : <radius>)

  \draw (2,0) node[below] {2}
        arc[start angle=0, end angle=30, radius=2] node[right] {1}
        -- (150:2) ...

次に、2 番目の円弧を描き、nodeラベルとして を追加し、最後に開始点に戻る直線を描きます。閉じたパスを描くときは、最初の座標を繰り返す代わりに を使用しますcycle

\draw (2,0) node[below] {2}
        arc[start angle=0, end angle=30, radius=2] node[right] {1}
        -- (150:2)
        arc[start angle=150, end angle=180, radius=2] node[below] {2}
        -- cycle;

\draw単独では黒い線だけが表示されますが、色を指定してオプションに入力することもできます。

\filldraw [
  fill=brown!80!black,
  draw=red,
  very thick
  ] 
  (2,0) node[below] {2}
        arc[start angle=0, end angle=30, radius=2] node[right] {1}
        -- (150:2)
        arc[start angle=150, end angle=180, radius=2] node[below] {2}
        -- cycle;

(この場合のように と の両方を指定する場合、 の\filldraw代わりにを使用する\draw必要は必ずしもありません。)fill=<color>draw=<color>

ここに画像の説明を入力してください

\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}

\path [
  fill=brown!80!black,
  draw=red,
  very thick
  ] 
  (2,0) node[below] {2}
        arc[start angle=0, end angle=30, radius=2] node[right] {1}
        -- (150:2)
        arc[start angle=150, end angle=180, radius=2] node[below] {2}
        -- cycle;
  
  
\draw [thick] (-3,0) -- (3,0);
\draw [thick] (0,-2) -- (0,2);
\end{tikzpicture}
\end{document}

答え2

tkz-euclideによる回答が追加されました

ここに画像の説明を入力してください

\documentclass{article} % or another class
\usepackage{xcolor} % before tikz or tkz-euclide if necessary

\usepackage{tkz-euclide} % no need to load TikZ

\usetikzlibrary{babel} %if there are problems with the active characters
\begin{document}

\begin{tikzpicture}
    
    %define the origin O -- radius A
    \tkzDefPoint(0,0){O}
    \tkzDefPoint(1.41,0){A}
    \tkzDrawPoints(O,A)
    \tkzLabelPoints[below](O,A)

    %draw the semicircle
    \tkzDefPointBy[rotation= center O angle 180](A)
    \tkzGetPoint{B}
    \tkzDrawArc[line width=0.1pt, white](O,A)(B)
    \tkzLabelPoints[below](B)
    %draw the line at y=1
    \tkzDefPoint(1,0){A'}
    \tkzDefPoint(-1,0){B'}
    \tkzDefShiftPoint[A'](90:1){A''}
    \tkzDefShiftPoint[B'](90:1){B''}
    \tkzDrawSegment[red,line width=1pt](A'',B'')    
    %draw the arc perimeter line
    \tkzDrawArc[red,line width=1pt](O,A)(A'')
    \tkzDrawArc[red,line width=1pt](O,B'')(B)
    %color the fill inside
    \fill[red!40] (-1,0) rectangle (1,1);
    \tkzFillSector[rotate,color=red!40](O,A)(45)
    \tkzFillSector[rotate,color=red!40](O,B)(-45)
    %draw the center axis -horizontal and vertical
    \tkzDrawLine(A,B)
    \tkzDefLine[orthogonal =through O](B,A)\tkzGetPoint{X}
    \tkzDrawLine(O,X)
\end{tikzpicture}
\end{document}

関連情報