Wie bringt man einen Bogen dazu, genau auf einem Kreis zu liegen?

Wie bringt man einen Bogen dazu, genau auf einem Kreis zu liegen?

Ich habe folgende Abbildung erstellt:

Bildbeschreibung hier eingeben

Mit diesem Segment:

\documentclass[a4paper,12pt]{article}


\usepackage{parskip}
\usepackage{amssymb}
\usepackage[fleqn]{amsmath}
\usepackage[svgnames]{xcolor}
\usepackage{tikz}
\usetikzlibrary{patterns}
\usetikzlibrary{fadings}
\setlength{\mathindent}{0pt}
\usepackage{color}
\usepackage{fixltx2e}
\usepackage{pgfplots}
\usepackage{graphicx}
\newcommand{\func}[1]{\operatorname{#1}}
\newcommand{\var}[1]{\mathit{#1}}


\begin{document}

        \begin{center}
        \begin{tikzpicture}[scale=0.9]
          \draw[->] (-6,0) -- (5,0) node[right] {$x$};
          \draw[->] (-5,-1) -- (-5,5) node[above] {$y$};
          \draw (-2.5,1.5) circle (1cm) node[xshift=30, yshift=20] {$R_1$};

          \draw (1.5,3) circle (1.5cm) node[xshift=40, yshift=30] {$R_2$};

          \draw [decorate,decoration={brace}]
          (-5.2,1.5) -- (-5.2,2.5) node [black,midway, xshift=-0.4cm] 
          {\footnotesize \rotatebox{90}{$\exists x R_1\cap \exists x R_2$}};

          \draw[thick,purple] (-5,1.5) -- (-5,2.5);

          \fill[opacity=0.5, color=purple, path fading=east] (-5,1.5) rectangle (6,2.5);

          \fill[opacity=0.5, color=purple, path fading=west] (-5.3,1.5) rectangle (-5,2.5);


        \end{tikzpicture}
        \end{center}

\end{document}

Betrachten wir nun den Kreis R_2. Ich möchte den Teil davon, der innerhalb des farbigen Bereichs liegt, violett markieren.
Ich habe den Punkt berechnet, an dem der Kreisumfang den Rand des farbigen Bereichs schneidet, und habe festgestellt, dass er (2,91,2,5) beträgt. Also habe ich versucht, einen Bogen hinzuzufügen. Aber das hat nicht gut geklappt ...

Hier die Ergänzung:

\documentclass[a4paper,12pt]{article}


\usepackage{parskip}
\usepackage{amssymb}
\usepackage[fleqn]{amsmath}
\usepackage[svgnames]{xcolor}
\usepackage{tikz}
\usetikzlibrary{patterns}
\usetikzlibrary{fadings}
\setlength{\mathindent}{0pt}
\usepackage{color}
\usepackage{fixltx2e}
\usepackage{pgfplots}
\usepackage{graphicx}
\newcommand{\func}[1]{\operatorname{#1}}
\newcommand{\var}[1]{\mathit{#1}}


\begin{document}

        \begin{center}
        \begin{tikzpicture}[scale=0.9]
          \draw[->] (-6,0) -- (5,0) node[right] {$x$};
          \draw[->] (-5,-1) -- (-5,5) node[above] {$y$};
          \draw (-2.5,1.5) circle (1cm) node[xshift=30, yshift=20] {$R_1$};

          \draw (1.5,3) circle (1.5cm) node[xshift=40, yshift=30] {$R_2$};

          \draw [decorate,decoration={brace}]
          (-5.2,1.5) -- (-5.2,2.5) node [black,midway, xshift=-0.4cm] 
          {\footnotesize \rotatebox{90}{$\exists x R_1\cap \exists x R_2$}};

          \draw[thick,purple] (-5,1.5) -- (-5,2.5);

          \fill[opacity=0.5, color=purple, path fading=east] (-5,1.5) rectangle (6,2.5);

          \fill[opacity=0.5, color=purple, path fading=west] (-5.3,1.5) rectangle (-5,2.5);
          % addition here!
          \draw[thick, color=purple] (2.91,2.5)  arc[radius = 1.5cm, start angle= 0, end angle= -140];
        \end{tikzpicture}
        \end{center}

\end{document}

Diese Addition zeichnete den Bogen nicht exakt auf dem Kreis R_2:

Bildbeschreibung hier eingeben

Egal, welche Werte ich verwendet habe, es ist mir nicht gelungen, diesen Bogen genau auf den Kreisumfang zu bringen ...

Ich hoffe, mein Beitrag ist klar genug, da ich kein Englisch spreche.
Vielen Dank im Voraus.

Antwort1

Sie müssen die richtigen Winkel für den Bogen wählen. Am einfachsten ist es jedoch,

      % addition here!
      \begin{scope}
      \clip (-5,1.5) rectangle (6,2.5);
      \draw[thick, color=purple] (1.5,3) circle (1.5cm);
      \end{scope}

Code:

\documentclass[a4paper,12pt]{article}

%% why so many packages for a MWE?
\usepackage{parskip}
\usepackage{amssymb}
\usepackage[fleqn]{amsmath}
\usepackage[svgnames]{xcolor}
\usepackage{tikz}
\usetikzlibrary{patterns}
\usetikzlibrary{fadings}
\setlength{\mathindent}{0pt}
\usepackage{color}
\usepackage{fixltx2e}
\usepackage{pgfplots}
\usepackage{graphicx}
\newcommand{\func}[1]{\operatorname{#1}}
\newcommand{\var}[1]{\mathit{#1}}


\begin{document}

        \begin{center}
        \begin{tikzpicture}[scale=0.9]
          \draw[->] (-6,0) -- (5,0) node[right] {$x$};
          \draw[->] (-5,-1) -- (-5,5) node[above] {$y$};
          \draw (-2.5,1.5) circle (1cm) node[xshift=30, yshift=20] {$R_1$};

          \draw (1.5,3) circle (1.5cm) node[xshift=40, yshift=30] {$R_2$};

          \draw [decorate,decoration={brace}]
          (-5.2,1.5) -- (-5.2,2.5) node [black,midway, xshift=-0.4cm]
          {\footnotesize \rotatebox{90}{$\exists x R_1\cap \exists x R_2$}};

          \draw[thick,purple] (-5,1.5) -- (-5,2.5);

          \fill[opacity=0.5, color=purple, path fading=east] (-5,1.5) rectangle (6,2.5);

          \fill[opacity=0.5, color=purple, path fading=west] (-5.3,1.5) rectangle (-5,2.5);
          % addition here!
          \begin{scope}
          \clip (-5,1.5) rectangle (6,2.5);
          \draw[thick, color=purple] (1.5,3) circle (1.5cm);
          \end{scope}
        \end{tikzpicture}
        \end{center}

\end{document}

Bildbeschreibung hier eingeben

Mit arc, so etwas wie

% addition here!
          \draw[thick, color=purple] (2.91,2.5)  arc[radius = 1.5cm, start angle= -20, end angle= -160];

sollte Ihnen den Bogen auf dem Kreis geben.

Antwort2

Die Winkel lassen sich mithilfe des beschrifteten rechtwinkligen Dreiecks leicht berechnen:

\documentclass[a4paper,12pt]{article}

\usepackage[svgnames]{xcolor}
\usepackage{tikz}
\usetikzlibrary{patterns}
\usetikzlibrary{fadings}
\usetikzlibrary{decorations, decorations.pathreplacing}

\begin{document}

  \begin{center}
  \begin{tikzpicture}[scale=0.9]
    \draw[->] (-6,0) -- (5,0) node[right] {$x$};
    \draw[->] (-5,-1) -- (-5,5) node[above] {$y$};
    \draw (-2.5,1.5) circle (1cm) node[xshift=30, yshift=20] {$R_1$};

    \draw (1.5,3) circle (1.5cm) node[xshift=40, yshift=30] {$R_2$};

    \draw [decorate,decoration={brace}]
    (-5.2,1.5) -- (-5.2,2.5) node [black,midway, xshift=-0.4cm] 
    {\footnotesize \rotatebox{90}{$\exists x R_1\cap \exists x R_2$}};

    \draw[thick,purple] (-5,1.5) -- (-5,2.5);

    \fill[opacity=0.5, color=purple, path fading=east] (-5,1.5)
       rectangle (6,2.5);

    \fill[opacity=0.5, color=purple, path fading=west] (-5.3,1.5)
        rectangle (-5,2.5);
    % addition here!
    % \draw[thick, color=purple] (2.91,2.5)  arc[radius = 1.5cm, start
    %     angle= 0, end angle= -140];
    \pgfmathsetmacro\angle{acos(1/3)}
    \draw[thick, color=purple, radius=1.5cm]
      (1.5, 3) ++(270-\angle:1.5cm) coordinate (start)
      arc[start angle=270-\angle, end angle=270+\angle];

    \draw[thin, node font=\scriptsize]

      (1.5, 3) node[above] {acos(0.5/1.5)}
      -- node[right] {0.5} (1.5, 2.5)
      -- (start) -- node[above left] {1.5} cycle;
  \end{tikzpicture}
  \end{center}

\end{document}

Ergebnis

Antwort3

So funktioniert der allgemeinere und einfachere Clipping-Ansatz in Metapost.

Bildbeschreibung hier eingeben

(Das Ausblenden und die Klammer habe ich weggelassen, aber mit etwas mehr Aufwand könnten sie hinzugefügt werden.)

prologues := 3;
outputtemplate := "%j%c.eps";

beginfig(1);

color purple; purple = 3/4 red + 1/4 blue;

path xx, yy, r[], band;

u = 1cm;
xx = (left -- 10 right) scaled u;
yy = (down --  5 up)    scaled u;
r1 = fullcircle scaled 2u shifted (2.5u,1.5u);
r2 = fullcircle scaled 3u shifted (6.5u,3u);

band = unitsquare xscaled 10u yscaled (ypart point 2 of r1 - ypart point 6 of r2) 
                  shifted (-1/4u, ypart point 6 of r2);

fill band withcolor .85[purple,white];
label.lft(btex $\exists x R_1 \cap \exists x R_2$ etex rotated 90, point 3.5 of band);

draw r1;        label.lrt(btex $R_1$ etex, point 7 of r1);
draw r2;        label.urt(btex $R_2$ etex, point 1 of r2);
drawarrow xx;   label.rt (btex $x$   etex, point 1 of xx);
drawarrow yy;   label.top(btex $y$   etex, point 1 of yy);

picture overlay;
overlay = image(
  drawoptions(withcolor purple);
  % draw r1; <--- you could add this one too if you wanted
  draw r2; 
  draw yy;
  drawoptions();
  );
clip overlay to band; draw overlay;

endfig;
end.

Der Vorteil dieser Vorgehensweise besteht darin, dass beim Verschieben eines der Kreise der rote Bogen automatisch korrekt gezeichnet wird und keine Berechnungen erforderlich sind.

Es ist hilfreich zu wissen, dass im einfachen MP eine gerade Linie am Punkt 0 beginnt und zum Punkt 1 führt, und dass es im einfachen MP auf einem Kreis 8 „Punkte“ gibt, wobei Punkt 0 auf 3 Uhr steht, wie folgt:

Bildbeschreibung hier eingeben

verwandte Informationen