Seite 1 von 1

Kreisbogen zeichnen, welcher durch drei Punkte definiert ist

Verfasst: Do 14. Sep 2017, 17:01
von Patrick1990
Hallo,

ich würde gern einmal wissen, ob es möglich ist in tikz einen Kreisbogen zu zeichnen, welcher durch Anfangs- und Endkoordinate, Mittelpunkt und Winkel gekennzeichnet ist.

Ich habe schon im Internet gesucht, jedoch nichts so richtig passendes gefunden.

Vielen Dank.

Verfasst: Fr 15. Sep 2017, 07:47
von markusv
Moin.

Ausgehend von arc, was etwas umständlich zu handhaben ist, wurde hier eine Anpassung vorgenommen, die vom Mittelpunkt ausgeht und Anfangs-, Endwinkel und Radius als Variablen besitzt. Daraus folgendes Beispiel:
\documentclass[varwidth,border=50]{standalone}
\usepackage{tikz}
\tikzset{
  pics/carc/.style args={#1:#2:#3}{
    code={
      \draw[pic actions] (#1:#3) arc(#1:#2:#3);
    }
  }
}
\begin{document}
  \begin{tikzpicture}
    \begin{scope}
      \draw[fill] (0,0) circle (0.05);
      \draw (0,0) pic{carc=0:30:2} pic{carc=45:90:3};
      \draw[->] (0,0) -- (2,0) node[midway,below] {$r=2$};
      \draw[->] (0,0) -- (0,3) node[midway,right] {$r=3$};
    \end{scope}
  \end{tikzpicture}
\end{document}

Verfasst: Fr 15. Sep 2017, 09:43
von Patrick1990
Danke, jedoch möchte ich nicht den Anfangs- und Endwinkel, sondern die Anfangs- und Endloordinaten im kartesischen Koordinatensystem eingeben können.

Beispiel:
Start: (1,0)
Ende: (0,1)
Mittelpunkt: (0,0)
Winkel: 90deg

Anhand dieser Eingaben soll nun der Kreisbogen gezeichnet werden.

Re: Kreisbogen zeichnen, welcher durch drei Punkte definiert

Verfasst: Fr 15. Sep 2017, 10:30
von esdd
Patrick1990 hat geschrieben: ich würde gern einmal wissen, ob es möglich ist in tikz einen Kreisbogen zu zeichnen, welcher durch Anfangs- und Endkoordinate, Mittelpunkt und Winkel gekennzeichnet ist.
Wenn Du alle vier Angaben hast, dann ist der Kreisbogen überbestimmt.

Kennst du tatsächlich Anfangs- und Endkoordinate sowie Mittelpunkt, dann ginge beispielsweise:
\documentclass[margin=5pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc,angles}
\tikzset{
  punkt/.style={circle,fill,inner sep=.5pt}
}
\begin{document}
\begin{tikzpicture}
  \path
    (0,0)coordinate(M)% Mittelpunkt
    (1,0)coordinate(A)% Anfangskoordinate
    (0,1)coordinate(B)% Endkoordinate
  ;
  \path
    let
      \p1=(M), \p2=(A),
      \n1={veclen({\x2-\x1},{\y2-\y1})}
    in 
      pic[draw=red,angle radius=\n1]{angle=A--M--B}
  ;
  \draw[dashed](M)--(A) (M)--(B);
  \foreach \p in {A,B,M}\node[punkt] at (\p){};
\end{tikzpicture}
\end{document}
Beispiel für Mittelpunkt, Anfangskoordinate und positiven Winkel:
\documentclass[margin=5pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc,angles}
\tikzset{
  punkt/.style={circle,fill,inner sep=.5pt}
}
\begin{document}
\begin{tikzpicture}
  \newcommand\arcradius{}
  \newcommand\winkel{145}% Beispiel nur für Winkel zwischen 0° und 359° gültig
  \path
    (1,2)coordinate(M)% Mittelpunkt
    (-2,3)coordinate(A)% Anfangskoordinate
  ;
  \path[overlay]
    let
      \p1=(M), \p2=(A),
      \n1={veclen({\x2-\x1},{\y2-\y1})},
      \n2={2*\n1*abs(sin(\winkel/2))}
    in 
      \pgfextra{\xdef\arcradius{\n1}}
      (\p1)--(\p2)--([turn]{90+\winkel/2}:\n2)coordinate(temp)
      ($(M)!\n1!(temp)$)coordinate(B)
  ;
  \path pic[draw=red,angle radius=\arcradius]{angle=A--M--B};
  \draw[dashed](M)--(A) (M)--(B);
  \path
    ($(A)!.5!(B)$)--(M)node[punkt]{}--([turn=0]0:8pt)node{M}% müsste aber bei Winkeln von ca. 180° anders platziert werden
    foreach \p in {A,B}
      {(M)--(\p)node[punkt]{}--([turn=0]0:8pt)node{\p}}
  ;
\end{tikzpicture}
\end{document}

Verfasst: Fr 15. Sep 2017, 16:50
von Patrick1990
Vielen Dank, ich werde es einmal testen.