Kreisbogen zeichnen, welcher durch drei Punkte definiert ist

Tabellen und Grafiken erstellen und anordnen


Patrick1990
Forum-Century
Forum-Century
Beiträge: 208
Registriert: Mo 18. Feb 2013, 07:56
Wohnort: Ilmenau

Kreisbogen zeichnen, welcher durch drei Punkte definiert ist

Beitrag 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.

markusv
Forum-Meister
Forum-Meister
Beiträge: 947
Registriert: Do 3. Sep 2015, 17:20
Wohnort: Leipzig

Beitrag 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}
Wäre Microsoft Word für das Schreiben von Büchern entwickelt worden,
würde es Microsoft Book heißen.

Unkomplizierte und schnelle LaTeX-Hilfe, bspw. Erstellung von Vorlagen und Bewerbungen:
Help-LaTeX@web.de

Patrick1990
Forum-Century
Forum-Century
Beiträge: 208
Registriert: Mo 18. Feb 2013, 07:56
Wohnort: Ilmenau

Beitrag 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.

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Re: Kreisbogen zeichnen, welcher durch drei Punkte definiert

Beitrag 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}

Patrick1990
Forum-Century
Forum-Century
Beiträge: 208
Registriert: Mo 18. Feb 2013, 07:56
Wohnort: Ilmenau

Beitrag von Patrick1990 »

Vielen Dank, ich werde es einmal testen.

Antworten