Ich versuche, über die Kommandos \pgfmathanglebetweenlines den Winkel zwischen zwei Linien zu berechnen und diesen mit \pgfmathsetmacro für die spätere Verwendung zu speichern.

Open in Online-Editor
\documentclass{beamer}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\begin{document}
\begin{frame}
  \begin{tikzpicture}
    \coordinate (A) at (0,0);
    \coordinate (B) at (7,1);
    \coordinate (C) at (1.5,5);
    \pgfmathsetmacro{\angA}{\pgfmathanglebetweenlines{(A)}{(B)}{(A)}{(C)}};
    \pgfmathsetmacro{\angA2}{0.25*\pgfmathanglebetweenlines{(A)}{(B)}{(A)}{(C)}};
  \end{tikzpicture}
\end{frame}
\end{document}

Das Beispiel führt zur Fehlermeldung

Undefined control sequence. end{frame}

Update: Obiges Beispiel enthält einen Fehler. Hier das geänderte Beispiel.

Open in Online-Editor
\documentclass{beamer}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\begin{document}
\begin{frame}
  \begin{tikzpicture}
    \coordinate (A) at (0,0);
    \coordinate (B) at (7,1);
    \coordinate (C) at (1.5,5);
    % Berechnung mit Koordinaten
    \pgfmathanglebetweenlines{(A)}{(B)}{(A)}{(C)}
    \pgfmathsetmacro{\angA}{\pgfmathresult};
    % Berechnung mit \pgfpoint
    \pgfmathanglebetweenlines{\pgfpoint{0cm}{0cm}}{\pgfpoint{7cm}{1cm}}{\pgfpoint{0cm}{0cm}}{\pgfpoint{1.5cm}{5cm}}
    \pgfmathsetmacro{\angB}{\pgfmathresult};
    \node {angA=\angA\quad angB=\angB};
  \end{tikzpicture}
\end{frame}
\end{document}

Dieses Beispiel läuft nun ohne Fehler, aber liefert für den Winkel 0.0 zurück. Dies liegt daran, dass \pgfmathanglebetweenlines als Punkte keine Koordinaten verträgt sondern \pgfpoint benötigt. Kann man Koordinaten in \pgfpoint umwandeln?

gefragt 21 Feb, 09:07

tom75's gravatar image

tom75
1.9k1545
Akzeptiert: 83%

bearbeitet 21 Feb, 12:35

Der frame ist keine echte Umgebung, sondern das Makro \frame{...} (mehr auf TeX.SX). Daher kann man im Argument kein anderes Makro definieren. Entweder \begin{frame}[fragile] oder \pgfmathsetmacro außerhalb des Frames.

(21 Feb, 12:01) Henri

@Henri Ich denke nicht, dass es an fragile liegt. Ich hab einen Fehler gefunden und die Frage oben erweitert.

(21 Feb, 12:14) tom75
2

@tom75 \path (A); \pgfgetlastxy{<macro for x>}{<macro for y>}.

(21 Feb, 12:41) Henri

@Henri Danke, das klappt!

(21 Feb, 13:06) tom75

Basierend auf dem Vorschlag von Henri:

Open in Online-Editor
\documentclass{beamer}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\begin{document}
\begin{frame}
  \begin{tikzpicture}
    \coordinate (A) at (0,0);
    \coordinate (B) at (7,1);
    \coordinate (C) at (1.5,5);
    \path (A);
    \pgfgetlastxy{\xA}{\yA}
    \path (B);
    \pgfgetlastxy{\xB}{\yB}
    \path (C);
    \pgfgetlastxy{\xC}{\yC}
    \pgfmathanglebetweenlines{\pgfpoint{\xA}{\yA}}{\pgfpoint{\xB}{\yB}}{\pgfpoint{\xA}{\yA}}{\pgfpoint{\xC}{\yC}}
    \pgfmathsetmacro{\angB}{\pgfmathresult};
    \node {angB=\angB};
  \end{tikzpicture}
\end{frame}
\end{document}
Permanenter link

beantwortet 21 Feb, 16:22

tom75's gravatar image

tom75
1.9k1545

Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs füge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×492
×17

Frage gestellt: 21 Feb, 09:07

Frage wurde angeschaut: 981 Mal

Zuletzt aktualisiert: 21 Feb, 16:22