Hallo zusammen,

ich verzweifel gerade an einer Animation für meine Präsentation. Diese baue ich natürlich mit dem Beamer-Paket von LaTeX und der Quellcode sieht wie folgt aus:

Open in Online-Editor
\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{intersections,angles,quotes,calc,through,babel}
\usepackage{animate}
\usepackage{ifthen}

\newcommand{\Gerade}[1]{%
\gdef\setA{#1}
\begin{tikzpicture}
        \clip (-5,-1)rectangle(5,5);
        \coordinate (A) at (0,0);
        \coordinate (B) at (2,0);
        \coordinate (C) at (0,3);
        \node[anchor=south] at (C){C};
        \fill(C) circle (1.5pt);
        \draw(C) circle (3pt);
        \draw ($(A)!-10cm!(B)$)--($(A)!+10cm!(B)$);
        \coordinate (D) at ($(C)+(\setA:1)$);
        \draw ($(C)!-10cm!(D)$)--($(C)!+10cm!(D)$);
        \coordinate (SP) at (intersection of C--D and A--B);
        \fill[red] (SP) circle (1.2pt);
\end{tikzpicture}
}

\newcounter{Winkel}
\setcounter{Winkel}{36}

\begin{document}
\frame{\frametitle{Wandernder Schnittpunkt}
    \begin{animateinline}[autoplay,palindrome]{12}
    \Gerade{35}
    \whiledo{\value{Winkel} < 125}{
       \newframe
       \Gerade{\value{Winkel}}
       \stepcounter {Winkel}}
    \end{animateinline}
}
\end{document}

Nun soll der Code eine Animation erzeugen, wo sich die obere Gerade C--D um Punkt C dreht und der Schnittpunkt mit der unteren Gerade jeweils auf dieser als roter Punkt wandert.

Leider komme ich irgendwie nicht zum Ziel.

Kann ich den Counter bzw. seinen Wert nicht in tikz-Umgebungen benutzen? Ich weiß mir leider keinen Rat und hoffe, dass wer von euch eine zündende Idee hat! Das wäre genial!

Vielen Dank schon mal im Voraus für eure Hilfe =)

gefragt 10 Mai '16, 19:22

Wienie2401's gravatar image

Wienie2401
14059
Akzeptiert-Rate: 0%

bearbeitet 10 Mai '16, 20:10

saputello's gravatar image

saputello
11.1k174365

1

Bitte Markdown statt HTML verwenden. Nur dann gibt es für Blockcode auch den Online-Editor-Link. Blockcode geht ganz einfach durch Auswählen des Codes und entweder Strg-k drücken oder den Code-Knopf in der Toolbar.

(10 Mai '16, 20:12) saputello
1

Ich vermute stark, dass Du \arabic statt \value brauchst.

(10 Mai '16, 20:43) cgnieder

Danke saputello für die Anmerkung, werde es in Zukunft beherzigen =)

@Clemens: Genau dein Vorschlag hat das Problem gelöst! Danke =)

(10 Mai '16, 21:14) Wienie2401

Für den Zweck parametrierter Animationsframes bietet das animate-Paket den Befehl

Open in Online-Editor
\multiframe{<anzahl>}{<parameterdefinitionen>}{<schleifenkörper>} .

(Siehe Dokumentation.)

whiledo-Schleifen sollten hier grundsätzlich nicht verwendet werden.

Open in Online-Editor
\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{intersections,angles,quotes,calc,through,babel}
\usepackage{animate}

\newcommand{\Gerade}[1]{%
  \begin{tikzpicture}
    \clip (-5,-1)rectangle(5,5);
    \coordinate (A) at (0,0);
    \coordinate (B) at (2,0);
    \coordinate (C) at (0,3);
    \node[anchor=south] at (C){C};
    \fill(C) circle (1.5pt);
    \draw(C) circle (3pt);
    \draw ($(A)!-10cm!(B)$)--($(A)!+10cm!(B)$);
    \coordinate (D) at ($(C)+(#1:1)$);
    \draw ($(C)!-10cm!(D)$)--($(C)!+10cm!(D)$);
    \coordinate (SP) at (intersection of C--D and A--B);
    \fill[red] (SP) circle (1.2pt);
  \end{tikzpicture}%
}

\begin{document}
\begin{frame}{Wandernder Schnittpunkt}
  \begin{animateinline}[autoplay,palindrome]{12}
    \multiframe{91}{iWinkel=35+1}{ % iWinkel=(35,36,...,125)°
      \Gerade{\iWinkel}
    }
  \end{animateinline}
\end{frame}
\end{document}

Für nicht-ganzzahliges Inkrementieren muss der Winkel-Parameter wie folgt definiert werden:

Open in Online-Editor
\multiframe{181}{rWinkel=35+0.5}{ % rWinkel=(35,35.5,36,...,125)°
  \Gerade{\rWinkel}
}
Permanenter link

beantwortet 11 Mai '16, 09:37

AlexG's gravatar image

AlexG
63615
Akzeptiert-Rate: 33%

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

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ügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×731
×141
×7
×4
×1

gestellte Frage: 10 Mai '16, 19:22

Frage wurde gesehen: 7,007 Mal

zuletzt geändert: 11 Mai '16, 09:37